找回密码
 注册
搜索
查看: 2132|回复: 5

[讨论] 关于初始化memory的一个问题(困惑了我好久)

[复制链接]
发表于 2006-8-8 11:59:00 | 显示全部楼层 |阅读模式
在arm7的一个初始化程序中,对于其一个内存的初始化采用了如下方式:
IRamData
          DCD |Load$$IRamRW$$Base|
          DCD |Image$$IRamRW$$Base|
          DCD |Image$$IRamRW$$Length|
          DCD |Image$$IRamZI$$ZI$$Base|
          DCD |Image$$IRamZI$$ZI$$Length|
我倒是能理解大概是个什么意思,但是十分不理解|Load$$IRamRW$$Base|这个用法的意思,找了很多资料也没有看到,大家能不能帮我理解一下这个用法是如何定义的?比如说$$代表什么意思?Load和IRamRW还有Base是在什么地方定义的?谢谢!
发表于 2006-8-9 10:19:00 | 显示全部楼层
这个是由 armlink 编译器自动产生的定位信息, |Load$$IRamRW$$Base|代表可读写的ram的地位地址,依次类推。。
具体在哪里可以找到这些东东的定义,我也没有找到过。 [em10]

大家一起讨论讨论:)
点评回复

使用道具 举报

 楼主| 发表于 2006-8-10 10:28:00 | 显示全部楼层
您说得很正确,我最近又仔细研究了一下,的确是由armlink自动产生的定位信息,我们可以使用这些变量对存储器进行重映射。这取决于arm linker中的linketype选项,如果我们选用simple选项,则需要对ro_base和rw_base进行定义,在连接过程中,arm linker会自动对Load$$IRamRW$$Base等这些基地址进行赋值。我们可以进而利用这些变量对存储空间进行重映射。如果采用的选项为scattered,我们需要在scatter files中对存储区间进行复杂的映射处理。不知道我说得是否正确?大家可以参考arm网站上的文档arm linker guide。
点评回复

使用道具 举报

发表于 2006-8-14 16:20:00 | 显示全部楼层
道理上好像是这样,不过可以举个实际应用的例子否?据我所知,这些arm linker生成的符号,可以用来进行各个section data的搬运?
点评回复

使用道具 举报

发表于 2006-8-20 00:48:00 | 显示全部楼层
最近也一直被这个问题迷惑[em08]
点评回复

使用道具 举报

发表于 2006-8-24 09:08:00 | 显示全部楼层
我来告诉你们:

这些是地址信息,确实是由armlink连接产生的.

Load$$IRamRW$$Base      RW装载的起始地址

Image$$IRamRW$$Base    RW运行时的起始地址

Image$$IRamRW$$Length   RW的长度


Image$$IRamZI$$ZI$$Base   ZI运行时的起始地址


Image$$IRamZI$$ZI$$Length  ZI的长度


RW的数据在运行时,要把FLASH里的数据搬到RAM中,相当与初试化从Image$$IRamRW$$Base开始Image$$IRamRW$$Length为长度的一段地址.
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-11-27 16:49 , Processed in 0.050209 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表