6# shufexiu
我想问下:如果我在NOR 中uBOOT界面中选择A 把程序烧写到NAND中,然后从NAND中启动,那么复位后PC是指向地址0处 还是指向|Image$$RO$$Base|。我记得我写了很简单的程序控制LED,烧写到NAND中,不管RO base设置成0或者0x3000000都能正常执行,为什么呢?如果设置成0x3000000,那么根据RO base得定义,程序应该从这个地址处开始执行啊,可是这个地址处有没有代码可以执行,简单程序如下IMPORT main
AREA HEAD, CODE, READONLY
ENTRY
bl disable_watch_dog (1)
bl memsetup (2)
bl copy_steppingstone_to_sdram (3)
ld pc, =on_sdram
on_sdram:
ldr sp, =0x34000000
bl main
halt_loop
b halt_loop
disable_watch_dog
mov r1, #0x53000000
mov r2, #0x0
str r2, [r1]
mov pc, lr
END
还有为什么我RO base的地址设置成什么 我查看反汇编时第一条指令的地址就是什么 如果是0还好理解 但是如果是0x30000000,我就不理解了 我是烧写到NAND中的 怎么会从0X300000开始呢?
还有对于RO base的地址的设置总是有疑惑:如果我把程序烧写到NAND中,如果程序中没有把代码复制到SDRAM中的代码段,那么我把地址设置成0X3000000可以吗,是不是只能设置成0。 |