⑴.MMU的使用
MMU是存储器管理单元的缩写,是用来管理虚拟内存系统的器件。 MMU通常是CPU的一部分,本身有少量存储空间存放从虚拟地址到物理地址的匹配表。此表称作TLB(转换旁置缓冲区)。所有数据请求都送往MMU,由 MMU决定数据是在RAM内还是在大容量存储器设备内。如果数据不在存储空间内,MMU将产生页面错误中断。
MMU的两个主要功能是:
1.将虚地址转换成物理地址。
2.控制存储器存取允许。MMU关掉时,虚地址直接输出到物理地址总线。
在实践中,使用MMU解决了如下几个问题:
①使用DRAM作为大容量存储器时,如果DRAM的物理地址不连续,这将给程序的编写调试造成极大不便,而适当配置MMU可将其转换成虚拟地址连续的空间。
②ARM内核的中断向量表要求放在0地址,对于ROM在0地址的情况,无法调试中断服务程序,所以在调试阶段有必要将可读写的存储器空间映射到0地址。
③系统的某些地址段是不允许被访问的,否则会产生不可预料的后果,为了避免这类错误,可以通过MMU匹配表的设置将这些地址段设为用户不可存取类型。
启动程序中生成的匹配表中包含地址映射,存储页大小(1M,64K,或4K)以及是否允许存取等信息。
例如:目标板上的16兆DRAM的物理地址区间为0xc000,0000~0xc07f,ffff;0xc100,0000~0xc17f,ffff;16兆ROM的虚拟地址区间为:0x0000,0000~0x00ff,ffff。匹配表配置如下:
可以看到左边是连续的虚拟地址空间,右边是不连续的物理地址空间,而且将DRAM映射到了0地址区间。 MMU通过虚拟地址和页面表位置信息,按照转换逻辑获得对应物理地址,输出到地址总线上。
应注意到的是使能MMU后,程序继续运行,但是对于程序员来说程序计数器的指针已经改变,指向了ROM所对应的虚拟地址。

ARM中MMU的作用相关推荐

  1. ARM中 __IO的作用解析

    __IO在头文件中预定义 #define __IO volatile volatile 影响编译器编译的结果, 指出:volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要 ...

  2. 什么是MMU,MMU的作用

    I. 什么是MMU,MMU的作用 MMU是Memory Management Unit的缩写. 针对各种CPU, MMU是个可选的配件. MMU负责的是虚拟地址与物理地址的转换,提供硬件机制的内存访问 ...

  3. arm中SP,LR,PC寄存器以及其它所有寄存器以及处理器运行模式介绍

    ARM中所有寄存器都是32位的.这里以cortex-a7内核的MX6ULL处理器为例,按照功能可以分为两类:运行需要寄存器(程序正常运行所需要的,比如变量暂存,pc制作等,总共43个),系统管理控制寄 ...

  4. 【Android 逆向】Android 进程注入工具开发 ( 调试进程中寄存器的作用 | 通过 EIP 寄存器控制程序运行 | EIP 寄存器的存档与恢复 )

    文章目录 一.调试进程中寄存器的作用 二.通过 EIP 寄存器控制程序运行 三.EIP 寄存器的存档与恢复 一.调试进程中寄存器的作用 内存是一个线性结构 , 将动态库加载到内存中后 , 每个动态库文 ...

  5. ARM中的---汇编指令

    ARM中的---汇编指令 一. 带点的(一般都是ARM GNU伪汇编指令) 1. ".text".".data".".bss" 依次表示的是 ...

  6. ARM中C语言和汇编语言互相调用以及实例

    1.内联汇编 在C语言中内嵌汇编注意事项: 不能直接向PC寄存器赋值,程序跳转要使用B或者BL指令 在使用物理寄存器时,不要使用过于复杂的C表达式(比如ADD y,R0 ,x/y(无形中就是c语言表达 ...

  7. MMU的作用及工作过程

    MMU的作用及工作过程       MMU(Memory Management Unit)是内存管理单元的简称,读者朋友在学习嵌入式的时候应该听说过µCLinux,这是适合没有MMU的微控制器使用的嵌 ...

  8. ARM裸机MMU调试

    ARM裸机MMU调试 小狼@http://blog.csdn.net/xiaolangyangyang 代码如下: @***************************************** ...

  9. VMware虚拟机文件夹中各文件作用详解

    VMware虚拟机文件夹中各文件作用详解 虚拟机的文件管理由VMware Workstation来执行. 一个虚拟机一般以一系列文件的形式储存在宿主机中, 这些文件一般在由workstation为虚拟 ...

最新文章

  1. mysql lbs 附近的人_一口气说出 4种 LBS “附近的人” 实现方式,面试官笑了
  2. 【Leetocde | 24 】152. 乘积最大子序列
  3. html频谱跳动效果,HTML5音频可视化频谱跳动代码
  4. Netty实现的一个异步Socket代码
  5. OpenJS 基金会推出 Node.js 证书,JS 开发者可以“考证”了
  6. Mysql笔记——DCL
  7. 又接触到自己以前建立的计算系统,有点震惊
  8. Linux ALSA驱动之声卡的创建流程
  9. 你应该知道的十大常见黑客技术
  10. 命令行帮助文档语法格式详解
  11. 检测前目标跟踪在雷达系统中的应用(一):DBT与TBD
  12. 双月学习OKR(67月)
  13. 快递100企业版接口(API)云打印、电子面单实现Java版
  14. echarts柱状图颜色渐变样式
  15. EXCEL表格-矩阵法快速判断异常数据
  16. Git和Mercurial(Hg)的分析
  17. php 炸金花牌型 和 比牌 规则
  18. java 调用matlab函数_java中调用Matlab的函数+注意事项
  19. windows计算机无法打开,电脑无法识别文件提示Windows无法打开文件怎么办
  20. 达梦数据库自动替换功能详解

热门文章

  1. 【C 语言】文件操作 ( 学生管理系统 | 命令行接收数据填充结构体 | 结构体写出到文件中 | 查询文件中的结构体数据 )
  2. 【计算理论】计算复杂性 ( 无向图独立集问题 | 独立集问题是 NP 完全问题证明思路 | 证明独立集问题是 NP 完全问题 )
  3. 【计算机网络】网络安全 : 公钥分配 ( 公钥使用者 | 公钥分配 | CA 证书格式 | CA 证书吊销 )
  4. 线程中的yield()
  5. HDU 4638 Group(莫队)题解
  6. 通过 python-xmp-toolkit 读取图片xmlp信息
  7. HTML学习笔记(三)样式CSS
  8. 什么原因?全球许多网络提供商推迟部署IPv6
  9. 【2017-05-30】WebForm文件上传。从服务端删除文件
  10. poj1088 滑雪