JZ2440學習筆記之鏈接文件lds
阿新 • • 發佈:2019-05-03
-o 需要 加載 bin文件 img nal 開機 鏈接地址 技術
如果在Linux環境下用arm-linux-gcc來編譯arm程序,需要編寫鏈接文件lds:
1. 運行地址=鏈接地址,表示代碼在SDRAM中執行的地址,如果程序中有對某部分代碼執行過搬運,需要在lds文件中設置對應的鏈接地址,比如下圖中的0x30000000。
2. 加載地址=存儲地址,表示代碼在Nand中的地址,如實例2中的4096。
鏈接文件實例1:
鏈接文件實例2:
程序燒寫到Nand的0地址位置(main.o是從4k位置開始,見下圖)。開機後,Nand的前4K復制到Internal 4K RAM運行,然後把Nand裏面的main.c復制到SDRAM的0x30000000位置,並跳轉到SDRAM裏面運行。
生成的bin文件(用於燒寫到Nand flash):
地址實例:
mkimage -A arm -O linux -T kernel -e 0x30007fc0 -a 0x30007fc0 -n linux-2.6.22.6 -d zImage uImage
之前提到制作uImage的時候設置了加載地址和入口地址為:0x30007fc0,這個地址加上uImage頭的長度(64 bytes) = 0x30008000
那30000000~0x30008000這段地址是用來幹什麽的呢:
JZ2440學習筆記之鏈接文件lds