代码重定位
代码重定位
通过汇编代码在start.S中将Nor Flash中的代码复制到SDRAM中,因为没有注意arm汇编ble和bne的区别,导致自己困惑了许久,停滞不前。
ble指令与cmp指令有关,在cmp x1,x2,x1小于等于x2的时候,执行bl指令,bne指令则是x1不等于x2时,执行跳转指令。
代码段:
cpy:
ldr r4, [r1] //代码源地址
str r4, [r2] //代码复制的终点的起始地址
add r1, r1, #4 //代码源地址自加
add r2, r2, #4 //代码复制的终点地址自加
cmp r2, r3
ble cpy //代码复制的终点的起始地址 小于等于 代码复制的终点的终点地址 就跳转到cpy
如果是bne的话,加过头,基本上是一个死循环了。