打印
[ZLG-ARM]

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

[复制链接]
2115|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的两本教程都只是对这部分泛泛而谈,基本上和没说一样!我知道这个问题比较复杂,一句两句话是讲不清的。那就请周公的人给我们推荐一份资料吧!对这部分讲的比较详细的资料。
谢谢

使用特权

评论回复
地板
hjiongh| | 2008-10-31 11:02 | 只看该作者

MEMMAP用法

这个问题,其实很简单,抓住一点即可:
1. 内部flash跑代码, memmap = 1
2. ram跑代码,不管外部内部, memmap = 2 
3. external flash 跑代码, memmap = 3

如果你代码跑到一半,需要从内部跳到外部,或者从外部跳到ram,那么memmap重新设置一下。 中断向量表最好要跟着一起走。

使用特权

评论回复
5
eyesonyou|  楼主 | 2008-11-4 11:05 | 只看该作者

:)

to hjiongh:
如果程序就在flash里跑, 但程序是烧到比如说是从0x00006000开始执行的 或者内部从一个代码区跳到另一个代码区,按你那么说的"简单" 你试试

使用特权

评论回复
6
ZLG_Dengz| | 2008-11-4 18:53 | 只看该作者

re

"比如程序的加载与执行地址是在FLASH中,但是是在FLASH的某一扇区(即非从FLASH首地址开始),怎么处理?"
这种情况下,你的中断向量表,还是必须放在从0x00000000的地方,因为在向量表的重映射过程中,是默认将0x00000000部分存储区进行重映射的。你看看书上就知道了, 重映射并非对任何存储区域,而只是对中断向量表、BOOT LOADER等特殊区域。。。
    如果要实现你的要求,很简单,只要将中断向量表放在0x00000000,而其他代码加载到你需要的地址。

使用特权

评论回复
7
eyesonyou|  楼主 | 2008-11-4 19:26 | 只看该作者

:(

to ZLG_Dengz:
    我是那么理解的,但是你试试吧.产生不了中断.我是把中断向量复制到0x400000000~0x40000003F,然后重映射了才OK,所以觉得很奇怪

使用特权

评论回复
8
ZLG_Dengz| | 2008-11-4 23:19 | 只看该作者

RE

能更详细的给出外部跳线、内部memmap配置、你的编译状态(DebugInFLASH,DebugInRam,还是其它什么)情况吗?
这样也有助于分析问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

22

帖子

0

粉丝