并行NOR Flash在SOPC開發中的應用設計
3 存儲可直接執行的軟處理器代碼
這里仍然使用上面創建的EDK工程,由于J3D具有類似SRAM的接口,上電后可以直接像SRAM一樣進行讀操作,但卻不能直接進行寫操作。因此,應將只讀段.code、.rodata、.sdata2、.sbss2指定到J3D中,其余段指定到BRAM中,這可以在Generate Linker Script對話框中完成。重新編譯后生成新的Bootable.elf文件。此時,Bootable.elf仍是一個整體,需要將其在物理上分為2個文件: 一個存放只讀段,另一個存放其余段。具體可以通過下面的操作實現。
① 創建存儲在BRAM中的鏡像volatile.elf。在XPS中,選擇Project → Launch EDK Shell,并執行下列命令:
$ mbobjcopy
--set-section-flags .text=alloc,readonly,code
--set-section-flags .init=alloc,readonly,code
--set-section-flags .fini=alloc,readonly,code
--set-section-flags .rodata=alloc
--set-section-flags .sdata2=contents
--set-section-flags .sbss2=contents
./TestApp_Memory/Bootable.elf
./TestApp_Memory/volatile.elf
② 創建存儲在Flash中的鏡像J3D.bin。在XPS中,選擇Project → Launch EDK Shell,并執行下列命令:
$ mbobjcopy O binary
-j .text
-j .init
-j .fini
-j .rodata
-j .sdata2
-j .sbss2
./TestApp_Memory/Bootable.elf
./TestApp_Memory/J3D.bin
將volatile.elf合并到系統配置比特流system.bit,生成dowload.bit,再經iMPCT轉為MCS格式后下載到配置PROM中。再將J3D.bin通過Program Flash Memory對話框下載到J3D中。這樣系統上電并完成配置后,J3D中的代碼無需引導便可以直接執行。
linux操作系統文章專題:linux操作系統詳解(linux不再難懂)
評論