JZ2440学习笔记之链接文件lds

如果在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这段地址是用来干什么的呢:

猜你喜欢

转载自www.cnblogs.com/nju347/p/10804739.html
今日推荐