TQ2440
通过硬件引脚设置从NORFLASH启动,那么上电首先从0x0000 0000 (NORFLASH 共2M)运行启动代码,把FLASH的代码段和数据段全部复制到0x3000 0000(外部RAM,共64M),然后跳到RAM(跳到main)去运行,此时RAM的也有一份启动代码(该启动代码在main函数前面),那么这段启动代码是不是相当永远都不会运行啊?
但是我们使用仿真器时,却在运行RAM的启动代码,但是本来自代码就是就在RAM运行,此时又从NOR里拷贝数据到RAM,这样在RAM运行的代码不出问题? 肯定 不会执行 两次了,,,启动代码有的。。 谢谢maxbiger
仔细看了启动代码,是有这样描述
copy_proc_beg_yes_or_no ;若是在板从norflash启动,先把用来’拷贝装载域RO段到运行域的程序‘拷贝到SDRAM中,并在SDRAM中执行此程序,以便快速完成装载域RO段程序到运行域的拷贝
;若是处于调试状态,或者nandfalsh启动模式的拷贝代码已经完成,则不执行’拷贝装载域RO段到运行域‘的拷贝操作,直接跳到初始化ZI段的子程序处执行
adr r0, ResetEntry ;若是norflash启动模式,r0指向的是装载域RO段起始地址,否则r0指向的是运行域的RO段起始地址
ldr r1, BaseOfROM ;r1指向运行域RO段起始地址
cmp r0, r1 ;判断两者是否相等
ldreq r2, BaseOfZero ;两者相等,说明是’处于调试状态‘或者是’nandflash启动模式并且程序已经拷贝到SDRAM中‘而且’已经在SDRAM中运行‘,让r2指向运行域ZI段的开始地址
;注意此时运行域已经存在了RW段,所要做的仅仅是初始化ZI段
beq init_zi_beg ;直接跳转到初始化ZI段子程序
页:
[1]