ARM中MMU的作用
⑴.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的作用相关推荐
- ARM中 __IO的作用解析
__IO在头文件中预定义 #define __IO volatile volatile 影响编译器编译的结果, 指出:volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要 ...
- 什么是MMU,MMU的作用
I. 什么是MMU,MMU的作用 MMU是Memory Management Unit的缩写. 针对各种CPU, MMU是个可选的配件. MMU负责的是虚拟地址与物理地址的转换,提供硬件机制的内存访问 ...
- arm中SP,LR,PC寄存器以及其它所有寄存器以及处理器运行模式介绍
ARM中所有寄存器都是32位的.这里以cortex-a7内核的MX6ULL处理器为例,按照功能可以分为两类:运行需要寄存器(程序正常运行所需要的,比如变量暂存,pc制作等,总共43个),系统管理控制寄 ...
- 【Android 逆向】Android 进程注入工具开发 ( 调试进程中寄存器的作用 | 通过 EIP 寄存器控制程序运行 | EIP 寄存器的存档与恢复 )
文章目录 一.调试进程中寄存器的作用 二.通过 EIP 寄存器控制程序运行 三.EIP 寄存器的存档与恢复 一.调试进程中寄存器的作用 内存是一个线性结构 , 将动态库加载到内存中后 , 每个动态库文 ...
- ARM中的---汇编指令
ARM中的---汇编指令 一. 带点的(一般都是ARM GNU伪汇编指令) 1. ".text".".data".".bss" 依次表示的是 ...
- ARM中C语言和汇编语言互相调用以及实例
1.内联汇编 在C语言中内嵌汇编注意事项: 不能直接向PC寄存器赋值,程序跳转要使用B或者BL指令 在使用物理寄存器时,不要使用过于复杂的C表达式(比如ADD y,R0 ,x/y(无形中就是c语言表达 ...
- MMU的作用及工作过程
MMU的作用及工作过程 MMU(Memory Management Unit)是内存管理单元的简称,读者朋友在学习嵌入式的时候应该听说过µCLinux,这是适合没有MMU的微控制器使用的嵌 ...
- ARM裸机MMU调试
ARM裸机MMU调试 小狼@http://blog.csdn.net/xiaolangyangyang 代码如下: @***************************************** ...
- VMware虚拟机文件夹中各文件作用详解
VMware虚拟机文件夹中各文件作用详解 虚拟机的文件管理由VMware Workstation来执行. 一个虚拟机一般以一系列文件的形式储存在宿主机中, 这些文件一般在由workstation为虚拟 ...
最新文章
- mysql lbs 附近的人_一口气说出 4种 LBS “附近的人” 实现方式,面试官笑了
- 【Leetocde | 24 】152. 乘积最大子序列
- html频谱跳动效果,HTML5音频可视化频谱跳动代码
- Netty实现的一个异步Socket代码
- OpenJS 基金会推出 Node.js 证书,JS 开发者可以“考证”了
- Mysql笔记——DCL
- 又接触到自己以前建立的计算系统,有点震惊
- Linux ALSA驱动之声卡的创建流程
- 你应该知道的十大常见黑客技术
- 命令行帮助文档语法格式详解
- 检测前目标跟踪在雷达系统中的应用(一):DBT与TBD
- 双月学习OKR(67月)
- 快递100企业版接口(API)云打印、电子面单实现Java版
- echarts柱状图颜色渐变样式
- EXCEL表格-矩阵法快速判断异常数据
- Git和Mercurial(Hg)的分析
- php 炸金花牌型 和 比牌 规则
- java 调用matlab函数_java中调用Matlab的函数+注意事项
- windows计算机无法打开,电脑无法识别文件提示Windows无法打开文件怎么办
- 达梦数据库自动替换功能详解
热门文章
- 【C 语言】文件操作 ( 学生管理系统 | 命令行接收数据填充结构体 | 结构体写出到文件中 | 查询文件中的结构体数据 )
- 【计算理论】计算复杂性 ( 无向图独立集问题 | 独立集问题是 NP 完全问题证明思路 | 证明独立集问题是 NP 完全问题 )
- 【计算机网络】网络安全 : 公钥分配 ( 公钥使用者 | 公钥分配 | CA 证书格式 | CA 证书吊销 )
- 线程中的yield()
- HDU 4638 Group(莫队)题解
- 通过 python-xmp-toolkit 读取图片xmlp信息
- HTML学习笔记(三)样式CSS
- 什么原因?全球许多网络提供商推迟部署IPv6
- 【2017-05-30】WebForm文件上传。从服务端删除文件
- poj1088 滑雪