ARM存储器结构,映射,重新映射

ARM存储器结构

    ARM存储器:片内Flash、片内静态RAM、片外存储器

      ARM存储器结构,映射,重新映射

 

存储器映射(Memory Map)

   

    映射就是一一对应的意思。重映射就是重新分配这种一一对应的关系。

    我们可以把存储器看成一个具有输出和输入口的黑盒子。输入量是地址,输出的是对应地址上存储的数据。当然这个黑盒子是由很复杂的半导体电路实现的,具体的实现的方式我们现在不管。存储单位一般是字节。这样,每个字节的存储单元对应一个地址,当一个合法地址从存储器的地址总线输入后,该地址对应的存储单元上存储的数据就会出现在数据总线上面。

    普通的单片机把可执行代码和数据存放到存储器中。单片机中的CPU从储器中取指令代码和数据。其中存储器中每个物理存储单元与其地址是一一对应而且是不可变的。

    而ARM比较复杂,ARM芯片与普通单片机在存储器地址方面的不同在于:ARM芯片中有些物理存储单元的地址可以根据设置变换。就是说一个物理存储单元现在对应一个地址,经过设置以后,这个存储单元就对应了另外一个地址了(这就是后面要说的重新映射)。例如将0x00000000地址上的存储单元映射到新的地址0x00000007上。CPU存取0x00000007就是存取0x00000000上的物理存储单元。(随便举的例子为了说明道理,没有实际意义)

 

存储器重新映射(Memory Re-Map)

    存储器重新映射是将复位后用户可见的存储器中部分区域,再次映射到其他的地址上。

    存储器重新映射包括两个方面:1、Boot Block重新映射(关于Boot Block的相关内容看我博客中的另一篇文章)。2、异常(中断)向量重新映射

    Boot Block重新映射:本来Boot Block在片内Flash的最高8KB,但是为了与将来期间相兼容,生产商为了产品的升级换代,在新型芯片中增加内部Flash容量时,不至于因为位于Flash高端的Boot Block的地址发生了变化而改写其代码,整个Boot Block都要被重新映射到内部存储器空间的顶部,即片内RAM的最高8KB。(地址为:0x7FFFE000~0x7FFFFFFF)

    异常(中断)向量重新映射:本来中断向量表在片内Flash的最低32字节,重新映射时要把这32个字节再加上其后的32个字节(后面这32个字节是存放快速中断IRQ的服务程序的)共64个字节重新映射(地址为:0x00000000~0x0000003F)重新映射到的地方有三个:内部Flash高端的64字节空间、内部RAM低端的64字节空间和外部RAM低端的64字节空间,再加上原来的内部Flash低端的64字节空间,异常向量一共可以在四个地方出现。为了对存储器映射进行控制,处理器设置了存储器映射控制寄存器MEMMAP,其控制格式如下图所示:

        ARM存储器结构,映射,重新映射

           注:1、当MEMMAP[1:0]=00时是映射到内部Flash高端,同内部Flash高端的Boot Block一起又被

               映射到了内部RAM高端

               2、当MEMMAP[1:0]=01时相当于没有重新映射,异常向量表在内部Flash低端

               3、当MEMMAP[1:0]=10时映射到了内部RAM的低端

               4、当MEMMAP[1:0]=11时映射到了外部RAM低端

 

 

小结:1、至于异常向量表为什么要重新映射,而且有那么多种重新映射方法,我还不清楚为什么,应该都是为了程序运行的更快吧。

      2、其实关于ARM的存储器结构和映射问题,不研究那么清楚也可以,但是我个人认为弄明白其中结构对以后的使用ARM会有很大好处,所以我翻了好几本书,也在网上查了很多资料。关于这一部分以及引导块(Boot Block)部分我觉得北京航空航天大学出版社出版的由任哲等编著的《ARM体系结构及其嵌入式处理器》这本书讲的很清楚,其他的书我看了都没看懂。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值