最近杂事太多,好长时间没更新了。这两天弄明白了ADS设置里面的RO BASE 和Image entry point。
TQ2440测试程序项目里设置RO BASE 为0X30000000,这是编译链接后映像文件的起始地址。在ARM-LINKER-OPTIONS选项里还有一个Image entry point,也设置成0X30000000。那么Image entry point为什么要这么设置呢?
Image entry point是程序的入口地址,也就是2440init.s里定义的ENTRY处的地址。
在2440init.s里定义了段Init:
AREA Init,CODE,READONLY
ENTRY
这是程序的入口,在ARM LINKER-LAYOUT选项里设置了第一个链接的目标文件是2440init.o,段名是Init。也就是说链接后段Init在整个映像文件的开始,地址是0X30000000。
所以Image entry point要设置成0X30000000。
如果在ARM LINKER-LAYOUT里把第一个链接的目标文件设置成其它的文件,假设链接后段Init的地址是0X30001000,那么Image entry point就应该设置成0X30001000了。
也就是说Image entry point的值和ARM LINKER-LAYOUT里设置的第一个链接目标文件有关。
ARM复位后是从0X00000000开始执行的,而这里设置的入口地址是0X30000000,这个问题还没想明白,后面接着分析。
文章评论(0条评论)
登录后参与讨论