|
2# 亚瑟王
为什么_start地址也在TEXT_BASE处?_start是入口地址吧 ,应该是0吧。是后面复制过去的?
还想问个问题。是u-boot-1.1.6的。下面代码为 board/smdk2410/lowlevel_init.S 的
_TEXT_BASE:
.word TEXT_BASE
.globl lowlevel_init
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
str r3, [r1], #4
cmp r2, r0
bne 0b
/* everything is fine now */
mov pc, lr
.ltorg
/* the literal pools origin */
SMRDATA:
.word (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))
。。。。。
就是这三句不太理解:
ldr r0, =SMRDATA ;
ldr r1, _TEXT_BASE ;TEXT_BASE是0x33f80000
sub r0, r0, r1
SMRDATA 好像不清楚是多少 ,SMRDATA - _TEXT_BASE = ? 这我就不清楚了, 为什么不是直接把地址SMRDATA:后面的值直接加载到BWSCON 等寄存器? |
|