打扰下twentyone:
在编译链接好的程序里面,RW段是放置在RO段后面的,所以|Image$$RO$$Limit|既是RO段的结束位置也是RW段的起始地址,就是说Image$$RO$$Limit|和Image$$RW$$Base|相等的.这个是可以理解的,但是在两个地方用了Image$$RW$$Base|,两次用的 Image$$RW$$Base|是同一个地址吗?
;Part 5
;***************************************************************
;Self copy from FLASH to SDRAM
LDR r0, =|Image$$RO$$Base|
LDR r1, =|Image$$RO$$Limit|
LDR r2, =|Image$$RW$$Base|
LDR r3, =|Image$$RW$$Limit|
SUB r1, r1, r0
SUB r3, r3, r2
ADD r1, r1, r3
LDR r2, =0x200000 ;@2M
COPY
LDR r3, [r0], #4
STR r3, [r2], #4
SUBS r1, r1, #4
BNE COPY
另外一个地方用:
;Part 7
;*****************************************************************
; Copy RW & ZI to SDRAM
LDR r0, =|Image$$RO$$Limit|
LDR r1, =|Image$$RW$$Base|
LDR r3, =|Image$$ZI$$Base|
CMP r0, r1
BEQ %1
0 CMP r1, r3 ; Copy init data
LDRCC r2, [r0], #4
STRCC r2, [r1], #4
BCC %0
1 LDR r1, =|Image$$ZI$$Limit| ; Top of zero init segment
MOV r2, #0
2 CMP r3, r1 ; Zero init
STRCC r2, [r3], #4
BCC %2
我根据你的说明,感觉第一次用的|Image$$RW$$Base|应该是跟|Image$$RO$$Limit|
相等的.第二次|Image$$RW$$Base|这个值是AXD里设置的 RW Base,那为什么同样的变量,怎么值不一样?那这个|Image$$RW$$Base|两次中到底值分别多少?