[ZLG-ARM] 2104-《ARM微控制器基础与实战》中的MEMMAP

[复制链接]
3216|7
 楼主| eyesonyou 发表于 2008-10-27 10:17 | 显示全部楼层 |阅读模式
MAP位硬件复位值为00(即Boot装载程序模式),Boot装载程序会将用户看到的复位值更改。 是改为01(即用户Flash模式)吗?01(用户Flash模式)与10(RAM模式)都怎么用? 如果是在Ram中调试用到中断是要重影射到RAM的。其它的呢? 比如程序的加载与执行地址是在FLASH中,但是是在FLASH的某一扇区(即非从FLASH首地址开始),怎么处理?
ZLG_Dengz 发表于 2008-10-27 19:05 | 显示全部楼层

回答

对于你的问题,建议你最好看看深入浅出ARM7系列中,关于存储器映射的相关章节.上面讲的很清楚.
Bleen1009 发表于 2008-10-31 09:06 | 显示全部楼层

问题问的很好

我看了周公编的ARM7的两本教程都只是对这部分泛泛而谈,基本上和没说一样!我知道这个问题比较复杂,一句两句话是讲不清的。那就请周公的人给我们推荐一份资料吧!对这部分讲的比较详细的资料。<br />谢谢
hjiongh 发表于 2008-10-31 11:02 | 显示全部楼层

MEMMAP用法

这个问题,其实很简单,抓住一点即可:<br />1.&nbsp;内部flash跑代码,&nbsp;memmap&nbsp;=&nbsp;1<br />2.&nbsp;ram跑代码,不管外部内部,&nbsp;memmap&nbsp;=&nbsp;2&nbsp;<br />3.&nbsp;external&nbsp;flash&nbsp;跑代码,&nbsp;memmap&nbsp;=&nbsp;3<br /><br />如果你代码跑到一半,需要从内部跳到外部,或者从外部跳到ram,那么memmap重新设置一下。&nbsp;中断向量表最好要跟着一起走。
 楼主| eyesonyou 发表于 2008-11-4 11:05 | 显示全部楼层

:)

to&nbsp;hjiongh:<br />如果程序就在flash里跑,&nbsp;但程序是烧到比如说是从0x00006000开始执行的&nbsp;或者内部从一个代码区跳到另一个代码区,按你那么说的&quot;简单&quot;&nbsp;你试试
ZLG_Dengz 发表于 2008-11-4 18:53 | 显示全部楼层

re

&quot;比如程序的加载与执行地址是在FLASH中,但是是在FLASH的某一扇区(即非从FLASH首地址开始),怎么处理?&quot;<br />这种情况下,你的中断向量表,还是必须放在从0x00000000的地方,因为在向量表的重映射过程中,是默认将0x00000000部分存储区进行重映射的。你看看书上就知道了,&nbsp;重映射并非对任何存储区域,而只是对中断向量表、BOOT&nbsp;LOADER等特殊区域。。。<br />&nbsp;&nbsp;&nbsp;&nbsp;如果要实现你的要求,很简单,只要将中断向量表放在0x00000000,而其他代码加载到你需要的地址。
 楼主| eyesonyou 发表于 2008-11-4 19:26 | 显示全部楼层

:(

to&nbsp;ZLG_Dengz:<br />&nbsp;&nbsp;&nbsp;&nbsp;我是那么理解的,但是你试试吧.产生不了中断.我是把中断向量复制到0x400000000~0x40000003F,然后重映射了才OK,所以觉得很奇怪
ZLG_Dengz 发表于 2008-11-4 23:19 | 显示全部楼层

RE

能更详细的给出外部跳线、内部memmap配置、你的编译状态(DebugInFLASH,DebugInRam,还是其它什么)情况吗?<br />这样也有助于分析问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

22

帖子

0

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