ARM中MMU之地址转换

发布者:zeta16最新更新时间:2016-06-22 来源: eefocus关键字:ARM  MMU  地址转换 手机看文章 扫描二维码
随时随地手机看文章
最近看了看mmu,找了好多资料,看了好多博文终于稍微清楚了一点,现在我把自己理解的内容总结一下:

首先我来说一下MMU的作用,MMU就是负责虚拟地址(virtual address)转化成物理地址(physical address)。

下面我来说一下ARM CPU上的地址转换过程涉及三个概念:虚拟地址(VA)(CPU内核对外发出VA),变换后的虚拟地址(MVA)(VA被转换为MVA供cache和MMU使用,在此将MVA转换为PA),物理地址(PA)(最后使用PA读写实际设备)。

(1)CPU看到的用到的只是VA,CPU不管VA最终是怎样到PA的;

(2)而cache、MMU也是看不到VA的,它们使用的是MVA(VA到MVA的转换是由硬件自动完成的);

(3)实际设备看不到VA、MVA,读写设备使用的是PA物理地址。

前期的铺垫基本完成,接下来进入重点。

在此过程中要用到以下两个必备的东西:

1、cp15协处理器的c2寄存器(这个里面的东西需要程序员自己装载)

2、虚拟地址MVA。

接下来我说以下mmu对虚拟地址到物理地址的转化过程。

1、无论进行那种有效转换都必须进行一级页表的转换,所以我们先去产生一级页表。产生一级页表经过以下步骤

a) 由协处理器CP15中的寄存器C2(高18位,即[31:14]为转换表基地址,低14位为0)为一级转换表基地址,即TTB该地址指向了一个2^14=16KB大小的存储区,即一级转换表。

b) 将MVA的高12位,即位[31:20]作为一级转换表的地址索引,因此一级转换表具有2^12=4096项,这4096项的地址为32位,最高的18位[31:14]为寄存器C2的高18位,中间12位为MVA的高12位[31:20],最低2位为0b00。这4096项中的内容称为一级描述符。至此一级页表产生完毕。

2、mmu拿到一级描述符首先看它的后两位也就是bits[1:0],根据这两位的取值mmu会进入不同的转换模式,这两位会出现下面四种取值。其中这四种取值分别对应四种模式,下面我一一解释。

a) 00 无效不进行转换

b) 01 进行粗页式转换

c) 10 进行段式转换

d) 11 进行细页式转换

3、接下来对于不同的转换模式,就要进行不同的转换。我下面将对三种转换模式进行一一分析。

a) 0b10(段式转换),把段式转换放在第一个说的原因是在ARM中大量用到了段式和细页式转换。

段式转换是最简单的一种转换方式,它是将我们刚才产生的一级描述符(即4096项中的内容)的高12位作为段的基地址,用MVA的低20位作为每个段的偏移量,由此我们可以轻松的推出每个段的大小为2^20=1MB,至此我们就得到了一个物理地址PA。

b) 0b11(细页式转换)

细页式转换,它是将我们刚才产生的一级描述符的高20位bits[31:12],再加上MVA的bits[19:10](第二级表索引)合体,bits[1:0]补0,获取第二级描述符的地址,至此其一级转换结束,因为其二级转换方式和粗页式的二级转换方式相同所以我下面一块分析。

c) 0b01(粗页式转换)

粗页式转换,它是将我们刚才产生的一级描述符的高22位bits[31:10],再加上MVA的bits[19:12](第二级表索引)合体,最后两位补0,获取第二级描述符的地址(32位),至此其一级转换结束。

4、下面我们将进入二级转换,对于二级转换只针对细页式和粗页式,没有段式转换。

a) 经过一级转换我们得到了二级描述符的地址,我们通过此地址可以得到二级描述符,我们根据二级描述符的低两位bits[1:0]同样可以分为四种转换模式:

i. 00 无效不进行转换

ii. 01 大页描述符

iii. 10 小页描述符

iv. 11 极小页描述符

b) 接下来我将对各个模式进行分析。

i. 01(大页描述符)

此时我们取出二级描述符中的bits[31:16]——大页基址,它和MVA的bits[15:0]组成一个32位的物理地址,这就是MVA对应的PA。

ii. 10(小页描述符)

此时我们取出二级描述符中的bits[31:12]与MVA的bits[11:0]组成一个32位的地址,这就是MVA对应的PA。

iii. 11(极小页描述符)

此时我们取出二级描述符中的bits[31:10]与MVA的bits[9:0]组成一个32位的地址,这就是MVA对应的PA。

以上就是MMU对虚拟地址转换到物理地址的过程,本人第一次写学习笔记,还有很多不足之处还请各位前辈指教,谢谢各位。

关键字:ARM  MMU  地址转换 引用地址:ARM中MMU之地址转换

上一篇:arm中R0-R15寄存器的作用
下一篇:ARM中MMU地址转换理解

推荐阅读最新更新时间:2024-03-16 14:58

利用ARM7处理器对无刷电机实施磁场定向控制
  电机驱动能效不论提高多少,都会节省大量的电能,这就是市场对先进的电机控制算法的兴趣日浓的部分原因。三相无刷电机主要指是交流感应异步电机和永磁同步电机。   这些电机以能效高、可靠性高、维护成本低、产品成本低和静音工作而著称。感应电机已在水泵或风扇等工业应用中得到广泛应用,并正在与永磁同步电机一起充斥家电、空调、汽车或伺服驱动器等市场。推动三相无刷电机发展的主要原因有:电子元器件的价格降低,实现复杂的控制策略以克服本身较差的动态性能成为可能。   以异步电机为例。简单的设计需要给定子施加三个120°相移的正弦波电压,这些绕组的排列方式能够产生一种旋转磁通量。利用变压器效应,这个磁通量在转子笼内感应出一股电流,然后产生转子磁通量。
[单片机]
利用<font color='red'>ARM</font>7处理器对无刷电机实施磁场定向控制
arm堆栈-(堆栈起始地址的选择)
堆栈寄存器起始地址的设置: 程序刚启动并没有启动内存管理单元MMU,真正的内存地址如下S3C2440的储存空间映射图: ARM 使用统一编址,所以,我们得把堆栈指针设置到内存地址范围内; NAND FLASH 启动时: 堆栈寄存器可以设为片内RAM 的最大地址:0x1000(4K)-4096 或者64MSDRAM的最大地址0x34000000(64M SDRAM的地址空间映射到BANK6,那么内存地址范围就是 0x30000000~0x34000000)。 之所以选择最大地址是因为栈的生长方向是向下的,所以选最高地址作为栈的起始地址可以预防堆栈增长而覆盖数据域;
[单片机]
<font color='red'>arm</font>堆栈-(堆栈起始<font color='red'>地址</font>的选择)
高速数据采集系统在基于ARM动态称重系统中的应用
0 引言 随着经济的不断发展和各地物流业的不断扩大。有些人为了追求更高的局部利益,往往会擅自改装运输工具,增大车载量,从而导致超载现象屡见不鲜。根据“四次方原则”,车辆超载给我国的公路,桥梁等交通基础设施带来了极大的破坏力。 动态称重系统能够在车辆行驶过程中得知其重量,该系统由于不会给交通带来堵塞而受到各交通部门的青睐。由于动态称重过程中得到的信号是短历程、非平稳信号,信号中混杂了很多于拢信号。因此,为了净化信号,本设计引入了小波分析去噪和神经网络等新型算法,但这些算法计算量大的缺点严重影响到系统的运行效率,即系统只有等整个算法运行完后,才能开始新一轮的数据采集。为此,目前一些动态称重系统使用多CPU来解决这个问题,但这
[单片机]
高速数据采集系统在基于<font color='red'>ARM</font>动态称重系统中的应用
Proteus仿真ARM7 LPC2101 AD转换器源程序
调试时首先观察待测电阻是否工作正常。在电阻的变化端插入电压探针,具体方式在 左边工具探针中选取电压探针(Voltage)运行仿真,点击电阻,观察探针电压是否在不断 变化。 调试流程 绘制 ADC 接口电路 1.在器件库中找到 ADC 转换芯片(ADC0801),如图连接 ADC0801 和总线信号。其中 ADC0801数据线连接数据总线最低字节(D0-D7),读写信号接总线读写信号(NRD,NWR)。其他信 号请按照下图进行连接。 2.片选信号 AD_CS 接译码电路输出(采用部分译码,对应地址为 0x03XXXXXX)。 3.连接模拟输入,在器件库找到可变电阻(POT-HG)。 完成 ADC0801 工作流程
[单片机]
Proteus仿真<font color='red'>ARM</font>7 LPC2101 AD<font color='red'>转换</font>器源程序
32位RISC CPU ARM芯片的应用和选型
摘要:ARM公司以及ARM芯片的现状和发展,从应用的角度介绍了ARM芯片的选择方法,并介绍了具有多芯核结构的ARM芯片。列举了目前的主要ARM芯片供应商,其产品以及应用领域。举例说明了几种嵌入式产品最佳ARM芯片选择方案。 关键词:ARM MMU SOC RISC CPU ARM公司自1990年正式成立以来,在32位RISC(Reduced Instruction Set Computer)CPU开发领域不断取得突破,其结构已经从V3发展到V6。由于ARM公司自成立以来,直以IP(Intelligence Property)提供者的身份向各大半导体制造商出售知识产权,而自己从不介入芯片的生产销售,加上其设计的芯核具有功耗低、成
[嵌入式]
“开芯计划 助你开芯”路演正式开启
Arm中国DesignStart“开芯计划 助你开芯”系列路演今天在厦门正式拉开序幕。此次活动旨在帮助广大中国SoC开发者更好了解Arm DesignStart项目,并且通过加入DesignStart获得强大的Arm生态系统的支持,实现更快速、更高效、更低成本的SoC开发。 首站厦门路演共吸引了超过200名开发者报名参加,来自Arm中国和Arm英国总部以及Mentor Graphics、Sondrel和移芯科技等Arm生态系统合作伙伴的诸多技术专家出席活动,为与会者介绍了DesignStart的最新情况,并分享了如何利用DesignStart成功实现SoC开发的经验与技巧。 Arm DesignStart项目于2010年正
[半导体设计/制造]
ARM的野心:M7芯片瞄准智能家居和汽车
苹果和谷歌(微博)今年的两场发布会显示,iOS和安卓已经走出了手机和平板,开始向客厅娱乐设备、医疗健康设备、智能汽车、智能家居等领域扩张。 周二,移动芯片巨头英国ARM公司也对外发布了面向上述领域的芯片设计方案,旨在挖掘物联网等带来的新芯片机会。 ARM本身并不设计制造最终的芯片成品,而是将其设计方案和知识产权授权给芯片厂商。通过这种模式,ARM已经成为移动设备芯片的大赢家,彻底将设计制造集于一身的对手英特尔,甩在身后。 ARM公司首席执行官塞戈斯(SimonSegars)表示,目前市面上的一些智能家居产品,对于绝大多数消费者来说没有实用价值,未来深入一般人生活中的智能设备,应该是能够给人们节省开支的设备。
[物联网]
德州仪器LCD触摸屏Sitara AM335x ARM Cortex A8入门套件
日前,德州仪器 (TI) 宣布推出最新 Sitara™ AM335x ARM® Cortex™-A8 入门套件,其通过采用板载加速计支持旋转与倾斜功能的 4.3 英寸 LCD 显示屏,可为智能电器、工业,网络应用以及其它需要触摸屏界面的设备提供一款低成本平台。该低成本开发平台建立在 Sitara AM3358 ARM Cortex-A8 处理器基础之上,高度集成双千兆位以太网、Wi-Fi® 以及蓝牙 (Bluetooth®) 连接等多个通信选项,适用于创建高度互联的设备。 AM335x 入门套件的速度高达 720 MHz,可通过生产就绪型软硬件平台加速设计进程。该电路板是一款低成本工具,可快速评估处理器及其配套 TI 组件的特
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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