4302|1

1

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

开发BSP时,对romInit.s中remap的疑惑,请求解答!!! [复制链接]

在开发arm926的BSP,在romInit.s中,对remap部分有点疑惑:
比如在remap之前,系统上电后,ROM地址是0,SDRAM地址是0x30000000;而在remap后,ROM地址是0x30000000,SDRAM变为0

疑惑1:那么在Makefile或者config.h中,定义ROM_BASE_ADRS,RAM_LOW_ADRS等地址时,是应该按照remap之前的地址来定义呢,还是remap之后的来定义呢?

疑惑2:在romInit.s中,看范例at91sam9260的代码中,是跳转到HiPosn后,才进行的remap,而且代码还加了2段注释:
--------------------------------
/*
* Jump to the normal (higher) ROM Position. After a reset, the
* ROM is mapped into memory from location zero upwards as well
* as in its normal position at This code could be executing in
* the lower position. We wish to be executing the code, still
* in ROM, but in its normal (higher) position before we remap
* the machine so that the ROM is no longer dual-mapped from zero
* upwards, but so that RAM appears from 0 upwards.
*/

    LDR     r1, L$_HiPosn   /* to check with the emulator what is loaded into PC */
    LDR     pc, L$_HiPosn   /* <=> mov pc,r1 */

HiPosn:
/* * We are now executing in the normal (higher, still in ROM) * position in the memory map. Remap memory to post-reset state, * so that the ROM is not now dual-mapped to zero upwards, but * RAM is mapped from zero, instead. */
/* todo: remap code base on your HW */

--------------------------------
对注释里的ROM(higher)和ROM(lower),dual-mapped等没看明白是什么意思。。

请教有经验的同行给看看,非常感谢哈!!!


最新回复

1.ROM_BASE_ADRS,RAM_LOW_ADRS都要按照remap后的地址来定义,remap前的地址分配只是开机后的暂态。 2.PC指针开始是在0的位置运行,刚开始的代码与地址无关(放在任何位置都可以执行,因为代码里面没有函数调用,长跳转等等);但由于HiPosn这个符号在链接的时候,是基于ROM_TEXT_ADRS来计算的,在0x30000000后面的位置,所以LDR     pc, L$_HiPosn   这条语句把PC从0的位置转向了高地址,但这个地址实际上还是ROM空间(0还没有赋值给内存,0部分也是ROM,所谓双映射)  详情 回复 发表于 2011-10-3 02:27
点赞 关注

回复
举报

14

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

解释

1.ROM_BASE_ADRS,RAM_LOW_ADRS都要按照remap后的地址来定义,remap前的地址分配只是开机后的暂态。
2.PC指针开始是在0的位置运行,刚开始的代码与地址无关(放在任何位置都可以执行,因为代码里面没有函数调用,长跳转等等);但由于HiPosn这个符号在链接的时候,是基于ROM_TEXT_ADRS来计算的,在0x30000000后面的位置,所以LDR     pc, L$_HiPosn   这条语句把PC从0的位置转向了高地址,但这个地址实际上还是ROM空间(0还没有赋值给内存,0部分也是ROM,所谓双映射)
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表