感谢twentyone给我们提供了这么好的资料,使我们少走了很多弯路,在此谢谢了。
不过我对你写的程序还是有两点疑问,如果你有空,还望你解答一下:
;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
(ADD R2,R2,R0 ;应该加上这一句。
LDR
COPY
LDR r3, [r0], #4
STR r3, [r2], #4
SUBS r1, r1, #4
BNE COPY
第一个问题就是上面这短从FLASH拷贝RO,RW到SDRAM,从你写的程序中可以看到,在FLASH中,你开始搬移的地址是|Image$$RO$$Base| ,结束的地址是 |Image$$RO$$Base| +R1,(这里的R1就是上面算出的RO加RW的容量),但是你搬到SDRAM的起始地址是0x200000 (也就是SDRAM的起始地址0X0),结束地址是0x200000 +R1。很明显|Image$$RO$$Base| 并不总是恒等于OX0的!!!!这跟ARMLINK里的RO设置有关。所以你上面这样写我觉得不是很妥。应该加上如上的一句。
另外一个问题是:我因为没有具体写过BOOTLOADER,不知道中断向量表是怎么处理的。如果我们把RO设为0X0,那岂不是把中断向量表给覆盖了。那又怎么移植?还是OS能自动处理,在BOOTLOAD不用管这一步的?/
有奖活动 | |
---|---|
“我踩过的那些坑”主题活动——第002期 | |
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |