mmu介绍

arm exynos4412平台mmu配置以及的简单创建.

1.mmu的全称是Memory Management Unit(内存管理单元)
2.mmu所在位置.mmu再arm核心.他不是一个外设,他是arm核心的的一部分. 
3.为什么要使用mmu,因为在多任务的操作系统当中,进程A,B,C都可能使一段地
   D,为了保存他们访问的不是同一个物理地址,我们给每个进程4G的虚拟地址空间
   然后使用,如何使用mmu来转化虚拟地址空间和物理地址空间之间的对应关系,
   这个转换关系被称为页表,再每个进程中都保存了一个进程特有的页表,
    为了保证他们的物理地址不会重复,这些虚拟地址会被映射不同的物理地址段.

4.mmu工作原理:用来控制内存的访问权限.

   CP15 协处理器的c3寄存器

   DACR, Domain Access Control Register, VMSA
   DDI0406C_arm_architecture_reference_manual.pdf P1541
   mmu一共有16个域,cp15中的32个位,每两个位表示一个域,用来控制内存
   访问权限.

   0b00 No access. Any access to the domain generates a Domain fault.
   //如果cp15设置的是0b00那么被映射的区域步可访问.
   0b01 Client. Accesses are checked against the permission bits in the
   translation tables.
   //需要检查权限才能访问.
   0b10 Reserved, effect is UNPREDICTABLE .
   //保留
   0b11 Manager. Accesses are not checked against the permission bits in
   the translation tables.
   //不需要检查权限.就可以访问内存.

5.cp15协处理器,的寄存器c2的值用来保存页表的物理地址.
	ttb DDI0406C_arm_architecture_reference_manual.pdf P1711
    MRC p15, 0, <Rt>, c2, c0, 1 ; Read 32-bit TTBR1 into Rt
    MCR p15, 0, <Rt>, c2, c0, 1 ; Write Rt to 32-bit TTBR1 

	它用来保存页表的物理首地址.下面是mcr的语法.
	MCR指令将ARM处理器的寄存器中的数据传送到协处理器的寄存器中。如果协处理器不能成功地执行该操作,将产生未定义的指令异常中断。

    指令的语法格式:

    MCR{ <cond>} p15, 0, <Rd>, <CRn>, <CRm>{,<opcode_1>}

	MCR2 p15, 0, <Rd>, <CRn>, <CRm>{,<opcode_2>}

	其中,<cond>为指令执行的条件码。当<cond>忽略时指令为无条件执行。MCR2中,<cond>为Ob1111,指令为无条件执行指令。

	<opcode_1>为协处理器将执行的操作的操作码。对于CP15协处理器来说, <opcode_1>永远为0b000,当<opcode_1>不为0b000时,该指令操作结果不可预知。

	<Rd>作为元寄存器的ARM寄存器,其值被传送到得协处理器寄存器中。

	<Rd>不能为PC,当其为PC时,指令操作结果不可预知。

	<CRn>作为目标寄存器的协处理器寄存器,其编号可能为C0,C1....C15。 <CRm>附加的目标寄存器或者原操作数寄存器,
	用于区分同一个编号的不同物理寄存器。当指令中不需要提供附加信息时,将C0指定为<CRm>,否则指令操作结果不可预知。 

	<opcode_2>提供附加信息,用于区别同一个编号的不同物理寄存器。当指令中指定附加信息时,省略<opcode_2>或者将其指定为0,否则指令操作结果不可预知。

	MRC指令将协处理器的寄存器中数值传送到ARM处理器的寄存器中。如果协处理器不能成功地执行该操作,将产生未定义的指令异常中断。

	指令的语法格式:

	MRC{<cond>} p15, 0, <Rd>, <CRn>, <CRm>{,<opcode_2>}

	MRC2 p15, 0, <Rd>, <CRn>, <CRm>{,<opcode_2>}

6.还有一个cp15协处理器的c1寄存器,的功能介绍,他是用来关闭和开启mmu的.
	可以在DDI0388I_cortex_a9_r4p1_trm.pdf中找到.p74页中的
	System Control Register的
	[0] M bit Banked Enables the MMU: 0MMU disabled.
	This is the reset value.1 MMU enabled.

	MRC p15, 0,<Rd>, c1, c0, 0; Read SCTLR
	MCR p15, 0,<Rd>, c1, c0, 0; Write SCTLR

	也就是cp15寄存器中的c1寄存器的第0位要设置为1,mmu功能才能开启.
	设置为0则关闭.

7.下面是讲解一下mmu是如何工作的.
	第一步:cpu会找到cp15协处理器
	第二步:cp15协处理器的寄存器c2中保存的当前页表的物理地址.
	第三步:通过这个地址mmu会找到内存中页表,
	第四步:mmu通过这个页表进行相应的关系进行虚拟地址和物理地址的转化.

8.转化的过程如下:

时间: 2024-12-26 09:18:52

mmu介绍的相关文章

MMU实验

内存管理单元 MMU介绍:权限管理:地址映射 权限管理:内核->A->B 地址空间各不相同 地址映射:多任务系统也是分时系统 虚拟地址(地址空间)->MMU->物理地址 SDRAM:64M内存 源码分析:

跟着韦老师学Linux学习笔记(三)-MMU

(1).MMU介绍 a.权限管理 不同地址空间的程序是无法相互访问的,否则会发生错误. b.地址映射 老师在视频中关于MMU讲解不是很多,要求也只是了解MMU这个概念就行了,可以参考书上或者下面这个文章了解MMU http://www.cnblogs.com/bigbear1385/p/5325344.html 1.  建立表格,就是建立虚拟地址到物理地址的映射 2.  把表格地址告诉MMU 3.  启动MMU (2).程序代码 首先我们看汇编代码,因为我们的主要程序都在汇编代码里面了. .te

嵌入式学习汇总

[转载]嵌入式学习网学习资料下载 (2010-07-23 15:50:15) 转载▼ 标签: 转载   网络资源 原文地址:嵌入式学习网学习资料下载作者:潇楚一生 刚才发现一个论坛上贴的一个帖子,有很多学习资料可以下载,特转发. 学习经验 1.嵌入式Linux操作系统学习规划 http://www.embedstudy.com/?action-viewnews-itemid-342 2.学习ARM嵌入式Linux开发的学习过程 http://www.embedstudy.com/?action-

[转]S3C2440_MMU详细说明

一.内存管理单元MMU介绍内存管理单元简称MMU,它负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查.MMU使得每个用户进程拥有自己独立的地址空间,并通过内存访问权限的检查保护每个进程所用的内存不被其他进程破坏.重点就在于地址映射:页表的结构与建立.映射的过程. 1.S3C2440 MMU地址变换过程 1)地址的分类一个程序在运行之前,没有必要全部装入内存,仅需要将那些要运行的部分先装入内存,其余部分在用到时从磁盘载入,当内存不足时,再将暂时不用的部分调出到磁盘.这使得大程序可以在

S3C2440之MMU

转自:http://blog.chinaunix.net/uid-23193900-id-3187782.html 1.MMU简介 MMU(Memory Management Unit),内存管理单元,主要职责:将虚拟地址映射为物理地址,提供硬件机制的内存访问权限检查. 2.基本概念 虚拟地址(Virtual Address,VA),修改后的虚拟地址(Modified VA),物理地址(Phisical Address) VA是CPU使用的地址,MVA是MMU.Caches使用的,PA是内存设备

u-boot分析(五)----I/D cache失效|关闭MMU和cache|关闭看门狗

u-boot分析(五) 上篇博文我们按照210的启动流程,对u-boot启动中的设置异常向量表,设置SVC模式进行了分析,今天我们继续按照u-boot的启动流程对以下内容进行分析. 今天我们会用到的文档: Arm9内核手册:http://download.csdn.net/detail/wrjvszq/8358867 Arm11内核手册:http://download.csdn.net/detail/wrjvszq/8358877 Arm a8内核手册:http://download.csdn.

MMU讲解

MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器.物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权,多用户多进程操作系统. 1.历史 许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序.但随着图形界面的兴起还有用户需求的不断增大,应用程序的规模也随之

MMU理解

MMU,全称Memory Manage Unit, 中文名——存储器管理单元. 许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序.但随着图形界面的兴起还用用户需求的不断增大,应用程序的规模也随之膨胀起来,终于一个难题出现在程序员的面前,那就是应用程序太大以至于内存容纳不下该程序,通常解决的办法是把程序分割成许多称为覆盖块(overlay)的片段.覆盖块0首先运行

[uboot] (番外篇)uboot relocation介绍

http://blog.csdn.net/ooonebook/article/details/53047992 以下例子都以project X项目tiny210(s5pv210平台,armv7架构)为例 [uboot] uboot流程系列: [project X] tiny210(s5pv210)上电启动流程(BL0-BL2) [uboot] (第一章)uboot流程——概述 [uboot] (第二章)uboot流程——uboot-spl编译流程 ========================