当前位置: 技术问答>linux和unix
2440启动代码中的nand flash代码拷贝到SDRAM的问题
来源: 互联网 发布时间:2017-05-14
本文导语: 代码中拷贝,重定向时: relocate: adr r0, _start ldr r1, _TEXT_BASE cmp r0, r1 beq stack_setup 使用adr命令时,pc指向nand flash的基址0x0000000?然后加偏移量 使用ldr命令时,pc指向SD...
代码中拷贝,重定向时:
relocate:
adr r0, _start
ldr r1, _TEXT_BASE
cmp r0, r1
beq stack_setup
使用adr命令时,pc指向nand flash的基址0x0000000?然后加偏移量
使用ldr命令时,pc指向SDRAM的机制TEXT_BASE?然后加在nand flash的偏移量?
pc到底在什么时候从指向nand flash变为指向SDRAM?
relocate:
adr r0, _start
ldr r1, _TEXT_BASE
cmp r0, r1
beq stack_setup
使用adr命令时,pc指向nand flash的基址0x0000000?然后加偏移量
使用ldr命令时,pc指向SDRAM的机制TEXT_BASE?然后加在nand flash的偏移量?
pc到底在什么时候从指向nand flash变为指向SDRAM?
|
ldr pc, _start_armboot
_start_armboot: .word start_armboot
这里跳转到了SDRAM里面。
下次回复的时候点“引用” ,不然我看不到
|
当这段代码在IRAM里面运行的时候,adr r0, _start 结果是r0 = 0x00000000+_start。
当这段代码在SRAM里面运行的时候,adr r0, _start 结果是r0 = 0x30000000+_start。
所以这段代码的功能是:判断当前程序是在IRAM中还是SRAM中。若是在IRAM中,则执行复制操作
|
不是 ,跳转是操作PC寄存器(r15)