原创 MMU的使用

2007-6-12 22:23 3060 6 6 分类: MCU/ 嵌入式
MMU是存储器管理单元的缩写,是用来管理虚拟内存系统的器件。 MMU通常是CPU的一部分,本身有少量存储空间存放从虚拟地址到物理地址的匹配表。此表称作TLB(转换旁置缓冲区)。所有数据请求都送往MMU,由 MMU决定数据是在RAM内还是在大容量存储器设备内。如果数据不在存储空间内,MMU将产生页面错误中断。

MMU
的两个主要功能是:

1.    
将虚地址转换成物理地址。

2.    
控制存储器存取允许。MMU关掉时,虚地址直接输出到物理地址总线。

在实践中,使用MMU解决了如下几个问题:

使用DRAM作为大容量存储器时,如果DRAM的物理地址不连续,这将给程序的编写调试造成极大不便,而适当配置MMU可将其转换成虚拟地址连续的空间。

ARM内核的中断向量表要求放在0地址,对于ROM0地址的情况,无法调试中断服务程序,所以在调试阶段有必要将可读写的存储器空间映射到0地址。

系统的某些地址段是不允许被访问的,否则会产生不可预料的后果,为了避免这类错误,可以通过MMU匹配表的设置将这些地址段设为用户不可存取类型。

启动程序中生成的匹配表中包含地址映射,存储页大小(1M,64K,4K)以及是否允许存取等信息。

例如:目标板上的16DRAM的物理地址区间为0xc00000000xc07fffff;0xc10000000xc17fffff;16ROM的虚拟地址区间为:0x000000000x00ffffff。匹配表配置如下:

可以看到左边是连续的虚拟地址空间,右边是不连续的物理地址空间,而且将DRAM映射到了0地址区间。 MMU通过虚拟地址和页面表位置信息,按照转换逻辑获得对应物理地址,输出到地址总线上。

应注意到的是使能MMU后,程序继续运行,但是对于程序员来说程序计数器的指针已经改变,指向了ROM所对应的虚拟地址。

文章评论0条评论)

登录后参与讨论
我要评论
0
6
关闭 站长推荐上一条 /2 下一条