注意:如果点击空白处无法输入,则点击字会有输入提示符 | 则可以使用键盘进行输入!
此板块为 [uboot开发]
- 问题所在章节:
- 发生问题的运行环境:
- 问题发生描述:
- lowlevel_init:
- /* memory control configuration */
- /* make r0 relative the current location so that it */
- /* reads SMRDATA out of FLASH rather than memory ! */
- ldr r0, =SMRDATA
- ldr r1, _TEXT_BASE
- sub r0, r0, r1
- ldr r1, =BWSCON /* Bus Width Status Controller */
- add r2, r0, #13*4
- 0:
- ldr r3, [r0], #4 //将r0的内容存到r3的内容中,同时r0地址+=4;
- str r3, [r1], #4
- cmp r2, r0
- bne 0b
- /* everything is fine now */
- mov pc, lr
- .ltorg
- /* the literal pools origin */
- SMRDATA:
- .......
ldr r0, =SMRDATA是将SMRDATA的绝对地址付给R0,也就是他链接的时候确定下来的地址,ldr r1, _TEXT_BASE,是把链接地址的值付给r1,然后他们两个相减,得到一个偏移的值。如果说是吧uboot从内存的0地址烧写,那么执行是没有问题的,但如果不是烧写在0地址那岂不是要出错了,这根老师上课说的位置无关,uboot烧写在那个位置都能正常跑岂不是有冲突。这个到底是uboot的缺陷还是说我在自己理解的有偏差,请老师解答一下。