请教ARM地址映射问题

[复制链接]
4444|8
 楼主| blackrose1 发表于 2007-6-27 10:27 | 显示全部楼层 |阅读模式
&nbsp;&nbsp;&nbsp;1.器件内部的flash,ROM,RAM都可以映射到地址0x0上,那位于0X0后面这一快是什么样的存储器呢?是RAM?<br />&nbsp;&nbsp;&nbsp;2.器件刚上电时,ROM就映射在地址0X0上,这么说我们的引导程序就存在ROM里,可是我在调试时怎么必须把引导程序指定在地址0X0上程序才能正确运行.如果指定在flash或ROM中就不行了(提示在0X0处没有指令,我用的KEIL&nbsp;FOR&nbsp;ARM,器件是ATMEL的).<br />&nbsp;&nbsp;&nbsp;3.经过地址映射后,RAM处于地址0X0上(之前是在0X200000上),那程序中定义的变量是存放在原来的位置,还是也会相应的移动??<br /><br />&nbsp;&nbsp;&nbsp;
suntds 发表于 2007-6-27 17:02 | 显示全部楼层

re

一般重映射前0x0就是flash,你这话怎么不大对啊:“必须把引导程序指定在地址0X0上程序才能正确运行.如果指定在flash或ROM中就不行了”<br />重映射后,要移动,不在原来的位置
 楼主| blackrose1 发表于 2007-6-27 22:25 | 显示全部楼层

谢谢你的指点

我用的是at91sam7x256,手册上说在重映射前0x0是ROM.我用的keil&nbsp;for&nbsp;arm.如果把程序定位在0x100000上,仿真时提示:"地址0x0处没有指令",导致程序运行不了;只有把程序定位在0x0上,才能运行.<br /> 此问题已经解决:按仿真按钮之前要先执行download操作,此时在0x0地址处就自动多了几条指令,跳转到0x100000处来执行.<br />  现在的问题是:重映射后,RAM的地址是0x0了(之前是0X200000),那程序中定义的变量的位置会有什么变化吗?还是在0x20000处也还是RAM的位置???
suntds 发表于 2007-6-28 11:03 | 显示全部楼层

remap后,地址变了

0x200000那部分地址变成reserved&nbsp;或另作他用.
原野之狼 发表于 2007-6-28 11:39 | 显示全部楼层

说说我的看法,不知道对不对?

刚开始学习ARM,大家请指教!<br /><br />上电复位后arm内核地址指针是指向0X00000000,这个地址及其后面得一小部分区域存得是中断向量。<br />至于这块地址指向什么设备(或者说什么存储器),那是由ARM内核之外的地址译码器决定得,而地址重映射就是来改变这个译码方式的。<br />这个可以参见ARM公司得文档,有这么一说,是用HDL简单描述的,用中文语言形容如下:<br />在某地址范围内(一般是中断向量地址),<br />如果REMAP为FLASH,那么SELECT&nbsp;FLASH<br />如果REMAP为RAM,那么SELECT&nbsp;RAM<br />....<br />说白了就是根据REMAP寄存器的值来片选不同得存储设备(存储区域),比如138译码器,通过A0&nbsp;A1&nbsp;A2的控制来选择Y1,Y2,Y3.....<br /><br />即程序执行的时候取0X00000000处的代码,实际上取得是RAM的内容(如果REMAP至RAM),地址表现在ARM内核是0X00000000,而表现在译码器译码后的地址则是RAM的地址。<br /><br /><br /><br />上电后必须REMAP到一个非易失性得存储区,否则运行出错。<br />运行过程中可以改变REMAP,比如REMAP到RAM(RAM的对应空间要有程序,可以从FLASH拷贝过来),这样具有中断响应速度快等一系列优点。<br /><br />俺乃刚学ARM的菜鸟,说得不对,敬请各路大侠指教!<br /><br />
high 发表于 2007-6-29 01:19 | 显示全部楼层

re

  <br /> 相关链接:<a href='https://bbs.21ic.com/club/bbs/list.asp?boardid=39&page=1&t=2580348&tp=ARM%u7591%u95EE%3F'>https://bbs.21ic.com/club/bbs/list.asp?boardid=39&page=1&t=2580348&tp=ARM%u7591%u95EE%3F</a>
ayb_ice 发表于 2007-6-29 07:54 | 显示全部楼层

搞清楚物理地址和虚拟地址...

地址映射就是重新确定物理地址和虚拟地址对应图...
平常人 发表于 2007-6-29 08:04 | 显示全部楼层

物理地址是东经xxx.xx度,北纬yyy.yy度;虚拟地址是.....

虚拟地址是北京市东城区东四北大街zzz号。
原野之狼 发表于 2007-6-30 12:47 | 显示全部楼层

平常人说的很经典~~~

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

本版积分规则

9

主题

12

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部