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.转化的步骤例如以下:

mmu介绍的更多相关文章

  1. 第七章 内存管理单元MMU介绍

    7.1 内存管理单元MMU介绍 7.1.1 S3C2410/S3C2440 MMU特性 负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查 特性: 与ARM V4兼容的映射长度.域.访问权 ...

  2. MMU介绍【转】

    转自:http://blog.csdn.net/martree/article/details/3321578 虚拟存储器的基本思想是程序,数据,堆栈的总的大小可以超过物理存储器的大小,操作系统把当前 ...

  3. 转 s3c2440硬件学习----内存管理单元MMU

    本篇基本是韦东山书上的 一.内存管理单元MMU介绍 内存管理单元简称MMU,它负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查.MMU使得每个用户进程拥有自己独立的地址空间,并通过内存访 ...

  4. 三、内存管理单元---MMU

    3.1 MMU介绍 3.1.1 MMU 特性 内存管理单元(Memory Management Unit)简称MMU,它负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查.现在的多用户多进 ...

  5. u-boot移植(八)---代码修改---存储控制器--MMU

    一.MMU介绍 1.1 虚拟地址与物理地址 建立两个应用程序,hello1.c和hello2.c,然后运行: hello1.c hello2.c 运行结果如下: 可以看到两个结果打印的地址是一样的,都 ...

  6. MMU实验

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

  7. JZ2440 裸机驱动 第7章 内存管理单元MMU

    本章目标:     了解虚拟地址和物理地址的关系:     掌握如何通过设置MMU来控制虚拟地址到物理地址的转化:     了解MMU的内存访问权限机制:     了解TLB.Cache.Write ...

  8. 十三、S3C2440 裸机 — 初始化代码及MMU

    13.1 NOR FLASH 搬运 把程序从 nor flash 上搬运到 SDRAM 中 程序存储在 nor flash 上,运行时将程序搬运到 SDRAM 中运行 nor flash 启动:nor ...

  9. 内存管理单元(MMU)和协处理器CP15介绍(转)

    内存管理单元(MMU)和协处理器CP15介绍内存管理单元(MMU)介绍嵌入式系统中,存储系统差别很大,可包含多种类型的存储器件,如FLASH,SRAM,SDRAM,ROM等,这些不同类型的存储器件速度 ...

随机推荐

  1. Extjs,实现树形结构的总结

    工作总结,用extjs.mybatis.springMVC实现树形显示班级 前台extjs实现树形代码如下: xtype : 'combotree', fieldLabel : '部门名称', nam ...

  2. 如何解决redis高并发客户端频繁time out?

    解决方案:https://www.zhihu.com/question/24781521

  3. css 五角星 (转)

    1.前言 之前做的好几个项目中,都会遇到打分,评分,点赞这样的需求,写了很多次,每次需要再写的时候,就会翻出之前写过的代码,然后copy过来.总觉得这样的话没有进步,没有把知识放进脑袋里,所以,自己花 ...

  4. RabbitMQ OS X下安装及常用命令-1

            RabbitMQ的主页在http://www.rabbitmq.com/ . 1. 安装Erlang RabbitMQ是用Erlang编写的,所以需要先安装Erlang,如果有的话跳过 ...

  5. 【Openwrt】刷

    设定你的电脑ip 为192.168.1.100 网线一头连接lan口,另外一头连接电脑.WAN口不能插线. 按住路由器的qss 键,开启路由器的电,灯灭掉,等6秒左右灯会再次闪几下就松开,用googl ...

  6. sublime window 配置记录 (转)

    大家好,今天给大家分享一款编辑器:sublime text2    我用过很多编辑器,EditPlus.EmEditor.Notepad++.Notepad2.UltraEdit.Editra.Vim ...

  7. 传递任意数量的实参*parameter&使用任意数量的关键字实参**parameter

    1.*形参名(*parameter) 有时候我们不知道知道函数需要接受多少个实参,所以我们可以在形参名前加一个*,是让python创建一个名为parameter的空元组,并将收到的所有值都封装到这个元 ...

  8. 使用cordova+Ionic+AngularJs进行Hybird App开发的环境搭建手冊

    一.所需工具 1,JDK:生成 2.安卓SDK开发环境 3,NodeJs:主要使用的还是npm 4,Python开发环境 5.VS 2012(2008,2015也能够,已亲測):安装这个主要是须要一些 ...

  9. Android 安卓真机调试 出现Installation error: INSTALL_FAILED_UPDATE_INCOMPATIBLE....

    [2017-03-24 13:30:04 - DataVDemo06] Installing DataVDemo06.apk...[2017-03-24 13:30:08 - DataVDemo06] ...

  10. 主线程不能执行耗时的操作,子线程不能更新Ui

    在Android项目中经常有碰到这样的问题,在子线程中完成耗时操作之后要更新UI,下面就自己经历的一些项目总结一下更新的方法: 在看方法之前看一下Android中消息机制: 引用 Message:消息 ...