ARM芯片的地址重映射

发布者:少年不识愁滋味最新更新时间:2016-07-20 来源: eefocus关键字:ARM芯片  地址重映射 手机看文章 扫描二维码
随时随地手机看文章
映射就是一一对应的意思。重映射就是重新分配这种一一对应的关系。

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

    普通的单片机把可执行代码和数据存放到存储器中。单片机中的CPU从储器中取指令代码和数据。其中存储器中每个物理存储单元与其地址是一一对应而且是不可变的。如图1,CPU读取0x00000000地址上存储单元的过程。
ARM芯片的地址重映射 - 东海 - 东海的博客

图2

       ARM比较复杂。ARM芯片与普通单片机在存储器地址方面的不同在于:ARM芯片中有些物理存储单元的地址可以根据设置变换。就是说一个物理存储单元现在对应一个地址,经过设置以后,这个存储单元就对应了另外一个地址了。图3是随意举了个例子(不要与ARM芯片对应),旨在说明地址重映射的过程。图3表示把0x00000000地址上的存储单元映射到新的地址0x00000007上。CPU存取0x00000007就是存取0x00000000上的物理存储单元。
ARM芯片的地址重映射 - 东海 - 东海的博客

图3

    图4,图5是对ARM芯片的两种地址重映射方式的图示。图3 假设我们的应用程序存放在外扩FLASH当中,那么应用程序的异常向量表就存放在0x80000000起始的64个(其中有32个存放异常向量)物理存储单元中。但是ARM核发生异常(中断)后是从0x00000000~0x0000003F地址范围取异常向量的。所以要把0x80000000~0x8000003F范围内的存储单元重新映射到0x00000000~0x0000003F地址范围上。以后CPU存取0x00000000~0x0000003F地址就是存取0x80000000~0x8000003F范围内的存储单元。图4只显示出第一个异常向量的地址重映射,整个异常向量表的地址重映射等同这个过程。
ARM芯片的地址重映射 - 东海 - 东海的博客

图4

       图5图示了ARM芯片的另外一种映射方式。这个映射可以由用户决定采用还是不采用(相关代码在工程文件的startup.s中,这个文件是第三方提供,用户可以修改)。这个映射主要是为了提高应用程序异常相应得速度。当我们把应用程序存放在片内FLASH的时候,异常向量表存放在0x00000000~0x0000003F存储单元内。每次发生异常,CPU从0x00000000~0x0000003F地址上取异常向量。但是对RAM的存取速度远高于对FLASH的存取速度,所以为了提高异常相应速度我们采取以下做法:
   (1)先把0x00000000~0x0000003F(FLASH)存储单元内的异常向量表复制到x40000000~0x4000003F(片内RAM的最低端64个字节的存储单元)范围内存储单元中。
   (2)把0x40000000~0x4000003F范围内存储单元地址重新映射到0x00000000~0x0000003F地址范围。
ARM芯片的地址重映射 - 东海 - 东海的博客
图5

       这样做了以后,当异常发生的时候,CPU取异常向量就是从RAM区中的异常向量表中区,速度快了。比如复位中断发生,CPU从地址0x00000000取指令,但此时由于已经过地址重新映射,这个0x00000000被地址转换器转换成0x40000000,CPU实际上是取的RAM区中0x400000000这个存储单元内的指令(异常向量)。

    当然用户可以不进行这种映射。片内FLASH中0x00000000~0x0000003F存储单元具有一模一样的异常向量表。只不过不进行这种处理,异常相应速度慢一点。但是这种速度上的差别很多情况下是不必要在意的。
    图中的地址转换器受控制寄存器MENMAP的控制,用户可以设置MENMAP实现对地址重映射的控制。这个地址转换器显然是通过内部硬件电路实现的

关键字:ARM芯片  地址重映射 引用地址:ARM芯片的地址重映射

上一篇:ARM的存储器映射与存储器重映射
下一篇:ARM处理器选型指南:选ARM7还是选Cortex-M3

推荐阅读最新更新时间:2024-03-16 15:01

ARM芯片详解翻译
译者注:这篇文章主要介绍了Risc结构的PDA芯片组成和汇编程序,翻译不周,肯定有错误,请多包涵,另外我忘记了出处,这里向作者表示歉意。 RISC处理器被广泛应用在小型设备上,例如PDA,移动电话,智能热水器等。有很多关于RISC处理器的汇编程序,但最常见的还是ARM。 下面我要谈的是ARM 7,因为我研究的是这个。 让我们先了解一下ARM的架构。ARM处理器包含37个寄存器:31个通用的32位寄存器,以及6个状态寄存器。寄存器的设置取决于处理器状态。ARM状态执行32位指令,Thumb状态执行16位指令集。 在ARM状态,有18个寄存器可用:可供直接存储的R0―R15,CPSR(当前程序状态寄存器),SPSR(被存储程
[单片机]
ARM学习进阶(3)-ARM芯片焊接
学习完ARM的理论知识,在SmartARM2200开发板上调试了部分实验,终于要进入实践阶段了。当时在设计公司的一个产品时就预留了ARM的设计,现在正好可以用此作为练兵的第一站。 以前公司产品只是使用了SO的芯片,而ARM的LQFP管脚要密许多。看着ARM芯片的细小管脚,我和生产部的同事都没有胆量直接焊接。我在网络上搜索查看了许多与焊接ARM芯片相关的文章(部分摘抄在 焊接与维护 栏目),自己也找了几个废弃的显卡板进行焊接实验,可是效果都不行,管脚的焊锡都分不开。 目前提到的焊接技术有点焊、拖焊和拉焊,工具除电烙铁外还提到松香焊锡膏、松香、酒精,但是看着网文来指导操作似乎没达到预期的效果。于是求助ZLG上海办
[单片机]
ARM芯片S3C2440A智能小车可移动视频监控系统
  本文介绍的智能小车可移动视频监控系统,以“飞思卡尔杯”智能小车竞赛提供的车模装置为基础,利用ARM芯片S3C2440A控制图像采集、网络传输、速度采集干扰小的模块,利用FPGA芯片控制电机驱动、舵机控制、电量采集干扰大的模块,当上位机通过Internet访问智能小车服务器时,在监控界面上点击按钮来控制小车的运行、图像拍摄、速度采集。   1 系统总体设计   该系统采用三星公司的ARM芯片S3C2440A作为主控制芯片及Altera公司的FPGA芯片EP2C5T144C8作为辅助控制芯片,ARM上装有Windows CE5.0操作系统。S3C2440A内置丰富的外设资源包括中断控制器、GPIO、I2C、相机接口等接口电路,
[单片机]
<font color='red'>ARM芯片</font>S3C2440A智能小车可移动视频监控系统
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved