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

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

图2 图3 图4


(1)先把0x00000000~0x0000003F(FLASH)存储单元内的异常向量表复制到x40000000~0x4000003F(片内RAM的最低端64个字节的存储单元)范围内存储单元中。(从图来看,此处应该是x80000000)
(2)把0x40000000~0x4000003F范围内存储单元地址重新映射到0x00000000~0x0000003F地址范围。

这样做了以后,当异常发生的时候,CPU取异常向量就是从RAM区中的异常向量表中区,速度快了。比如复位中断发生,CPU从地址0x00000000取指令,但此时由于已经过地址重新映射,这个0x00000000被地址转换器转换成0x40000000,CPU实际上是取的RAM区中0x400000000这个存储单元内的指令(异常向量)。
当然用户可以不进行这种映射。片内FLASH中0x00000000~0x0000003F存储单元具有一模一样的异常向量表。只不过不进行这种处理,异常相应速度慢一点。但是这种速度上的差别很多情况下是不必要在意的。
图中的地址转换器受控制寄存器MENMAP的控制,用户可以设置MENMAP实现对地址重映射的控制。这个地址转换器显然是通过内部硬件电路实现的
本文解释了ARM芯片中地址重映射的概念及其作用。详细介绍了两种不同的重映射方式:一是将外部存储器的异常向量表映射到ARM内核的默认地址空间;二是为了提高异常响应速度,将异常向量表复制到片内RAM并进行地址映射。
989

被折叠的 条评论
为什么被折叠?



