分类:
2008-05-07 15:12:28
/* copy */
mov r0, #0
add r2, r0, #CFG_MONITOR_LEN
这里需要注意的:
#define CFG_MONITOR_LEN 0x00040000 /*启动映像文件长度,必须大于u-boot.bin*/
mov r1, #0x10000000 这里r1也为一段ram的地址(IXP425的SDRAM地址最大为256M,在地址空
间的前1G内都是256M的重复)
30:
ldr r3, [r0], #4
str r3, [r1], #4
cmp r0, r2
bne 30b
这里是把flash中的前256k的东西(u-boot.bin小于256k)拷贝到ram中,这样在执行remap的时候(
将falsh地址从0x0移到0x50000000)
接下来有一段remap的语句,接下来的执行都是在ram中了
/* move flash to 0x50000000 */
ldr r2, =IXP425_EXP_CFG0
ldr r1, [r2]
bic r1, r1, #0x80000000
str r1, [r2]
这样,remap后的指令是连续的,pc取指不会出现问题