这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 这段程序的理解,大家指点指点

共2条 1/1 1 跳转至

这段程序的理解,大家指点指点

菜鸟
2007-04-13 17:51:07     打赏

adr r0, ResetEntry //adr是伪指令,此处是将入口处的地址赋予r0
ldr r1, BaseOfROM //BaseOfROM是在使用ADS时所设定的ROBase的基址(如0xc008000)
cmp r0, r1 //比较入口地址与ROBase的基址
ldreq r0, TopOfROM //如果相等,将ROLimit的地址值赋予r0
beq InitRamData //如果ResetEntry==BaseOfROM 既RO base为0x0它将在flash 中运行,不等要进行代码搬迁

ldr r2, =CopyProcBeg

sub r1, r2, r1

add r0, r0, r1

ldr r3, =CopyProcEnd
0
ldmia r0!, {r4-r7}
stmia r2!, {r4-r7}
cmp r2, r3
bcc %B0 //先把拷贝代码搬迁到SDRAM中

ldr r3, TopOfROM
ldr pc, =CopyProcBeg


CopyProcBeg
0
ldmia r0!, {r4-r11}
stmia r2!, {r4-r11}
cmp r2, r3
bcc %B0
CopyProcEnd

假设我在ADS中设定ROBASE为0xc008000

问题1:CopyProcBeg 和CopyProcEnd的地址是位于RAM区还是ROM区?个人分析了一下,位于RAM区这个将stage2搬到RAM中执行的程序才正确。如果是ROM区的话就不太对了,还请大虾指教。

问题2:

CopyProcBeg
0
ldmia r0!, {r4-r11}
stmia r2!, {r4-r11}
cmp r2, r3
bcc %B0
CopyProcEnd

这段程序到底是什么意思?不是很懂,希望大虾详细讲解一下

问题3:ADS中设定了ROBASE值编译后生成了BIN文件。下载以后是不是能将bootloader的stage2复制到RAM区中执行?还是仅仅是在调试模式下才能将stage2复制到RAM区中执行?

希望大虾讲解,谢谢




关键词: 这段     程序     理解     大家     指点    

菜鸟
2007-04-13 18:13:00     打赏
2楼

1。应该是RAM区。

2。就是把代码从R0指向的地址拷到R2指向的地址。

3。程序的运行和文件格式没关系


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]