- 论坛徽章:
- 0
|
本帖最后由 jplzl10000 于 2013-10-17 14:37 编辑
什么叫第一条无指令呢?
第一条肯定是会跳到reset处的,在start.S文件中。
这个TEXT_BASE实际上是代码搬移地址。
通常U-BOOT是烧录在FLASH中的,以便上电就能直接运行。
但为了提高运行速度,会考虑将U-BOOT的代码搬移到RAM中运行。
因此,就需要一个在RAM中的首地址,即这个TEXT_BASE。
同时,也可以通过判断当前PC值是否与TEXT_BASE值相同来判断当前的程序代码是运行在FLASH中还是RAM中。
通常判断的语句是这样的,在start.S中:
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
因此,即使修改了这个TEXT_BASE,也是不会影响代码搬移开始之前的程序代码的。 |
|