完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在uboot中有一段sdram初始化代码
_TEXT_BASE: .word TEXT_BASE .globl lowlevel_init lowlevel_init: /* memory control configuration */ /* make r0 relative the current location so that it */ /* reads SMRDATA out of FLASH rather than memory ! */ ldr r0, =SMRDATA ldr r1, _TEXT_BASE sub r0, r0, r1 ldr r1, =BWSCON /* Bus Width Status Controller */ add r2, r0, #13*4 其中ldr r0, =SMRDATA 我认为是错误的,因为ldr伪指令是位置有关代码,会随着链接设置而改变 比如 RObase链接于0x3000ff00,则ldr伪指令可编译为 ldr r0,[pc+_SMRDATA_offset] SMRDATA: DCD ... 因为SMRDATA是个绝对地址,所以此地址也编译在大概0x300ff00左右的位置上 问题就来了:如果我们把程序烧写在norflash的0地址中,那么这个绝对地址怎么去访问,因为那时sdram都没有被初始化 所以在此发帖求各位大侠老师解惑,谢谢 |
|
相关推荐
1个回答
|
|
ldr r0, =SMRDATA 得到链接地址 0x33f8xxxx
ldr r1, _TEXT_BASE 得到第1条指令的链接地址 0x33f80000 sub r0, r0, r1 r0 = 0x33f8xxxx - 0x33f80000 = xxxxx ,这就是NOR FLASH或片内内存上当前数据的地址 |
|
|
|
只有小组成员才能发言,加入小组>>
197个成员聚集在这个小组
加入小组为什么点亮LED的例子放在NORFlash上跑会出现奇怪的现象?
2166 浏览 6 评论
1975 浏览 5 评论
韦东山老师推出的《玩转ARM裸机实战》课程将帮你以上问题一扫而光!
4530 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 02:50 , Processed in 0.642229 second(s), Total 77, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号