完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
;****************************************************
;Copy and paste RW data/zero initialized data * ;**************************************************** LDR r0, =|Image$$RO$$Limit| ; 是RO输出运行域的结束地址 LDR r1, =|Image$$RW$$Base| ; 是RW输出运行域的起始地址 LDR r3, =|Image$$ZI$$Base| ;Zero init base => top of initialised data CMP r0, r1 ; Check that they are different一般情况下这两者不是相等么? BEQ %F1 0 CMP r1, r3 ; Copy init data LDRCC r2, [r0], #4 ;--> LDRCC r2, [r0] + ADD r0, r0, #4 STRCC r2, [r1], #4 ;--> STRCC r2, [r1] + ADD r1, r1, #4 BCC %B0 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 %B2 问题1: 前提:ADS1.2编译时,RO输出运行域的起始地址设置为0x0c000000; |Image$$RO$$Limit|是RO输出运行域的结束地址 |Image$$RW$$Base|是RW输出运行域的起始地址 在不设置RW的时候,这两者不是相等么?那下一句代码: CMP r0, r1 ; BEQ %F1; 直接跳到下边去执行ZI段清零了,根本没有复制RW段代码啊?! 问题2: CMP r0, r1;如果不相等 0 CMP r1, r3 ; Copy init data LDRCC r2, [r0], #4 ;--> LDRCC r2, [r0] + ADD r0, r0, #4 STRCC r2, [r1], #4 ;--> STRCC r2, [r1] + ADD r1, r1, #4 BCC %B0 这段代码是把r0这个起始地址里的数据复制到 r1这个起始地址里边去 然而, r0里边装的是RO输出运行域的结束地址(即0x0c00000+数据长度) r1里边转的是RW输出运行域的起始地址 两个地址都在SDRAM里(bank6),也没有复制ROM里边的数据啊?! |
|
相关推荐 |
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
飞凌嵌入式ElfBoard ELF 1板卡-CAN编程示例之开发板测试
678 浏览 0 评论
该问题是用APP给芯海科技的CST92F25芯片发指令是出现的
2286 浏览 1 评论
789 浏览 0 评论
1553 浏览 1 评论
2306 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 18:14 , Processed in 0.514945 second(s), Total 38, Slave 30 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号