第一个问题:关于代码段基地址_start=TEXT_BASE = 0x33D00000的定义,这个地址是可以任意定义的吗,还是必须是0x33D00000,可不可以定义成比这个更高的地址?
第二个问题:在函数int cpu_init (void)源码中,FREE_RAM_END = _armboot_start - CFG_MALLOC_LEN - CFG_GBL_DATA_SIZE - 4 -CONFIG_STACKSIZE;在这条语句中,为什么要减去4,不用减去4可不可以?
第三个问题:NOR flash 和 NAND flash启动时代码是怎么进行重新定位的,运行地址是什么,
relocate: /* relocate U-Boot to RAM */
adr r0, _start /* r0 <- current position of code */
ldr r1, _TEXT_BASE /* test if we run from flash or RAM */
cmp r0, r1 /* don't reloc during debug */
beq stack_setup
也就是上面代码中的_start的值在上面两种启动模式中各是什么??? |