|
|||||||||||
| 技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
关于44Binit.s中的程序复制代码的不解 |
| 作者:剑下亡魂 栏目:ARM技术 |
;**************************************************** ;拷贝并粘贴 RW data/zero initialized data * ;**************************************************** adr r0, ResetEntry ldr r1, BaseOfROM cmp r0, r1 ldreq r0, TopOfROM beq InitRamData ;**************************************************** ;计算拷贝程序在FLASH中的实际位置 * ;**************************************************** ldr r2, =CopyProcBeg sub r1, r2, r1 add r0, r0, r1 ldr r3, =CopyProcEnd ;**************************************************** ;将拷贝程序复制到ram中 * ;**************************************************** 0 ldmia r0!, {r4-r7} stmia r2!, {r4-r7} cmp r2, r3 bcc %B0 ;******************************************************** ;开始用ram中的拷贝程序复本将所有剩下的代码复制到ram中 * ;******************************************************** ldr r3, TopOfROM ldr pc, =CopyProcBeg ;******************************************************** ;本段将代码由实际烧入的地址拷贝到ro-base所指定的位置 * ;只拷贝CopyProcEnd以后的代码 * ;******************************************************** CopyProcBeg 0 ldmia r0!, {r4-r11} stmia r2!, {r4-r11} cmp r2, r3 bcc %B0 CopyProcEnd sub r1, r2, r3 sub r0, r0, r1 InitRamData ldr r2, BaseOfBSS ldr r3, BaseOfZero 0 cmp r2, r3 ldrcc r1, [r0], #4 strcc r1, [r2], #4 bcc %B0 mov r0, #0 ldr r3, EndOfBSS 1 cmp r2, r3 strcc r0, [r2], #4 bcc %B1 |
| 2楼: | >>参与讨论 |
| 作者: 剑下亡魂 于 2006/3/9 17:53:00 发布:
ro=0x0c008000, rw=NC 下载到FLASH后运行 adr r0, ResetEntry ldr r1, BaseOfROM r0的值是多少?0还是ro_base? adr r0, ResetEntry 与 ldr r0, =ResetEntry 有啥区别? ldr r2, =CopyProcBeg r2的值又是多少?offset还是ro_base+offset |
|
| 3楼: | >>参与讨论 |
| 作者: 剑下亡魂 于 2006/3/9 17:56:00 发布:
还有 sub r1, r2, r3 sub r0, r0, r1 在程序复制完成后的这两条指令有什么用? r2-r3不是等于0的吗? |
|
| 4楼: | >>参与讨论 |
| 作者: 剑下亡魂 于 2006/3/9 18:00:00 发布:
ldr pc, =CopyProcBeg 由程序看是把PC值置为ro_base+标志CopyProcBeg的偏移量 也就是说=CopyProcBeg的值就是ro_base+标志CopyProcBeg的偏移量 |
|
| 5楼: | >>参与讨论 |
| 作者: eqtwo 于 2006/3/10 19:40:00 发布:
帮你顶 |
|
| 6楼: | >>参与讨论 |
| 作者: 剑下亡魂 于 2006/3/10 23:41:00 发布:
现在只有这点不明白 sub r1, r2, r3 sub r0, r0, r1 在程序复制完成后的这两条指令有什么用? r2-r3不是等于0的吗? 偶想不出在什么情况下,R2、R3的值会不相等? 还是在考虑了在THUMB状态下可能会不等的情况? |
|
| 7楼: | >>参与讨论 |
| 作者: 剑下亡魂 于 2006/3/13 10:42:00 发布:
DX们请帮忙解释一下啊。 sub r1, r2, r3 sub r0, r0, r1 这两句具体有什么用处?? |
|
| 8楼: | >>参与讨论 |
| 作者: EQTWO 于 2006/3/13 16:11:00 发布:
在帮你顶下 |
|
|
|
| 免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |