|  | 
 
| 在step 3中有简化的bootloader,其中 RomBaseAddr        EQU                0
 RomEndAddr        EQU                &20
 RamBaseAddr        EQU                &100
 RamEndAddr        EQU                &200
 
 ……
 实在搞不懂这里的&20,&100,&200是什么地址,看下面的好像是省略了16个0吗?这些地址安排上是自己分配的吗?
 adr        r0, ResetEntry
 mov        r3, #(RamBaseAddr<<16)
 ldr        r1, BaseOfROM
 ldr        r2, TopOfROM
 add        r1, r1, r3
 add        r2, r2, r3
 0
 ldmia        r0!, {r4-r11}
 stmia        r1!, {r4-r11}
 cmp        r1, r2
 bcc        %B0
 
 sub        r1, r1, r2
 sub        r0, r0, r1
 ldr        r1, BaseOfBSS
 ldr        r2, BaseOfZero
 add        r1, r1, r3
 add        r2, r2, r3
 1
 cmp        r1,        r2
 ldrcc        r4, [r0], #4
 strcc        r4, [r1], #4
 bcc        %B1
 
 mov        r0,        #0
 ldr        r2,        EndOfBSS
 add        r2, r2, r3
 3
 cmp        r1,        r2
 strcc        r0, [r1], #4
 bcc        %B3
 我看了很多bootloader介绍,copy rom to ram只需要把第二阶段的copy过去,我看这里是从resetentry开始的,有没有关系呢?
 
 adr        r0, ResetEntry
 ldr        r1, =RemapMemory
 ldr        r2, BaseOfROM
 sub        r2, r1, r2
 add        r0, r0, r2
 add        r1, r2, r3
 mov        r2,        #32
 0
 ldr        r3, [r0], #4
 str        r3, [r1], #4
 subs        r2, r2,        #1
 bne        %B0
 
 这里为什么在remapmemory地址处copy 32个字节的内容到rambaseaddr+remapmemory处?作什么用?地址映射不是在boot中进行吗?rambaseaddr+remapmemory在哪个region(RO?RW?ZI?) ?我没4510的板子,所以请大家帮忙看看,谢谢!
 | 
 |