存储管理单元存储管理单元MMU概述
  在ARM系统中,存储管理单元MMU主要完成以下工作:
1、虚拟存储空间到物理存储空间的映射。在ARM中采用页式虚拟存储管理。他把虚拟地址空间分成一个个固定大小的块,每一块称为一页,把物理内存的地址空间也分成同样大小的页。页的大小可以分为粗粒度和细粒度两种。MMU要实现虚拟地址到物理地址的转换。
2、存储访问权限的控制
3、设置虚拟存储空间的缓冲特性

MMU的操作步骤
1、使无效cachen/TLB
  在S3C6410中 CP15中的寄存器C7用于控制cache和写缓冲区,他是一个只写的寄存器。使用MRC指令读取该寄存器,将产生不可预知的结果。使用MCR指令写该寄存器,具体操作格式如下:
    MCR p15, 0, <Rd>, <c7>, <CRm>, <opcode_2>
其中 CRm = c7 ,opcode_2 = 0 表示使无效整个cache(Icachen和Dcachen),
其中 CRm = c10 ,opcode_2 = 4 表示清空写缓冲区
    
2、将页表地址告诉MMU
页表存放在内存中,系统通常有一个寄存器来保存页表的基地址,在ARM中系统控制协处理器CP15的寄存器c2用来保存页表的基地址。具体操作格式如下
    MCR p15, 0, <Rd>, <c2>, <CRm>, <opcode_2>
    其中 CRm = c0 ,opcode_2 = 0 表示写入基地址

3、设置域
  MMU可以将整个存储空间分为最多16个域。每个域对应一定的内存区域,该区域具有相同的访问控制属性。MMU中寄存器C3用于控制与该域相关的属性配置

4、使能cache
  和cache和写缓冲操作相关的寄存器包括CP15中的寄存器C7、寄存器C9以寄存器C1中的某些位寄存器c1中与cache和写缓冲区操作相关的为有C(bit[2]),W(bit[3]),I(bit[12]),和RR(bit[14])其中 CRm = c7 ,opcode_2 = 0 表示使无效整个cache(Icachen和Dcachen).

5、使能MMU
  CP15的寄存器C1的位[0]用于控制禁止/使能MMU。当CP15的寄存器C1的位[0]设置成0时,禁止MMU;当CP15的寄存器C1的位[0]设置成1时,使能MMU;C(bit[2]) 当数据cache和指令cache是分开的时候,本控制禁止/使能数据cache;当数据cache和指令cache是统一的时候该控制位禁止/使能整个cache
  0  禁止cache
  1  使能cache
 W(bit[3]) 禁止/使能写入缓冲
  0 禁止写入缓冲
  1 使能写入缓冲
 I(bit[12]) 当数据cache和指令cache是分开的时候,本控制禁止/使能指令cache;
  0  禁止cache
  1  使能cache

RR(bit[14]) 如果系统中的淘汰算法可以选择的话,本控制位选择淘汰算法
  0 选择常规的淘汰算法
  1 选择预测性的淘汰算法

 //将页表地址告诉MMU,启动MMU
.global mmu_enable
mmu_enable:
//使无效cache/TLB
mov r1, #
mcr p15, , r1, c7, c7, //使无效ICache、DCache
mcr p15, , r1, c7, c10, //使无效写缓冲
mcr p15, , r1, c8, c7, //使无效指令、数据TLB //将页表地址告诉MMU
mcr p15, , r0, c2, c0, //写入页表地址,r0位页表基地址 //设置域
mrc p15, , r1, c3, c0, //获取控制寄存器的值
orr r1, r1, #
mcr p15, , r1, c3, c0, //使能ICache、DCache
mcr p15, , r1, c1, c0, //读取控制寄存器的值 orr r1,r1, #(<<)
orr r1,r1, #(<<)
orr r1,r1, #(<<)
mcr p15, , r1, c1, c0, //写入控制寄存器 //使能MMU
orr r1,r1,#(<<)
mcr p15,,r1,c1,c0,
//返回
mov pc lr

MMU.S

Tiny6410之MMU开启的更多相关文章

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

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

  2. MMU(why)

    在ARM中,MMU几个主要作用: 1. I/D Cache 管理      -> 大幅提高代码运行效率. 2. PA/VA 重映射        -> 实现多进程内存空间映射. 3. 内存 ...

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

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

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

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

  5. 第4天--linux内核学习

    驱动使用方式1.编译到内核中 * make uImage进入到系统后mknod /dev/led c 500 0 创建设备节点 2.编译为模块 M make module进入到系统后 mknod /d ...

  6. U-Boot GOT表分析和u-boot.lds解读

    转自:http://blog.sina.com.cn/s/blog_70dd16910100zab6.html u-boot-2010.09/arch/powerpc/cpu/mpc86xx/star ...

  7. arm linux kernel 从入口到start_kernel 的代码分析

    参考资料: <ARM体系结构与编程> <嵌入式Linux应用开发完全手册> Linux_Memory_Address_Mapping http://www.chinaunix. ...

  8. ARMv8 Linux内核head.S源码分析

    ARMv8Linux内核head.S主要工作内容: 1. 从el2特权级退回到el1 2. 确认处理器类型 3. 计算内核镜像的起始物理地址及物理地址与虚拟地址之间的偏移 4. 验证设备树的地址是否有 ...

  9. Linux X86在下面TLB机制

    TLB - translation lookaside buffer 快表.直译为翻译后备缓冲器,也能够理解为页表缓冲.地址变换快速缓存. 因为页表存放在主存中,因此程序每次訪存至少须要两次:一次訪存 ...

随机推荐

  1. C# 词法分析器

    当前标签: 编译原理   C# 词法分析器(七)总结 CYJB 2014-01-09 12:46 阅读:582 评论:1   C# 词法分析器(六)构造词法分析器 CYJB 2013-05-07 01 ...

  2. 网络地址到物理地址的映射(ARP)

    网络的互连首先要解决的问题就是网络地址到物理地址的映射,以太网接口分配的是一个48位的物理地址,而IP地址却只有32位,因此无法将它编码到IP地址中.有人建议可以构建一个中央数据库存储所有网络中的网络 ...

  3. ETHREAD APC

    ETHREAD APC <寒江独钓>内核学习笔记(4) 继续学习windows 中和线程有关系的数据结构: ETHREAD.KTHREAD.TEB 1. 相关阅读材料 <window ...

  4. 计算image 积分图

    // testopencv.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <opencv2\opencv.hpp& ...

  5. Azure的两种关系型数据库服务:SQL Azure与SQL Server VM的不同

    Azure的两种关系型数据库服务:SQL Azure与SQL Server VM的不同 <Windows Azure Platform 系列文章目录> 如果熟悉Windows Azure平 ...

  6. GNU Make 学习系列一:怎样写一个简单的Makefile

    编程通常遵循一个相当简单的程序:编辑源文件,编译源代码成可执行的格式,调试结果.尽管将源代码翻译成可执行程序是常规的过程,如果做的不正确,程序员可能会浪费大量的时间去追踪问题.大多数的开发者都经历过这 ...

  7. TOGAF架构能力框架之架构合同、成熟度模型和架构技能框架

    TOGAF架构能力框架之架构合同.成熟度模型和架构技能框架 5. 架构合同 架构合同是在开发团体和赞助者之间关于架构的交付物.质量以及适用目标的联合协议,并且通过有效的架构治理将会促使这些协议的成功施 ...

  8. 【C#】聊聊不需要记密码的密码管理补充帖 —— 具体实现

    开篇第一句话,就是“小白继续,有实际经验的兄弟们可以洗洗睡了”,因为这个 Lite 版是个实验性的实现,也由于水平原因源码不忍直视,所以如果你坚持看完了,请留下宝贵意见. 以下,干货: 基本模式: 程 ...

  9. php面试题中的约瑟夫环

    最近忙着做面试题,看到一道题感觉比较有兴趣,查阅相关资料后发现这是一个约瑟夫环的问题. 一群猴子围成一圈,按1,2,3,4,....n一次编号.然后从第1值开始数,数到第m只,把它踢出圈,从它后面再开 ...

  10. mac在线恢复教程

    上个周,我本来想升级一下Xcode,可是我的系统是10.8de,xcode5.0.1 最低支持10.8.4 所以就想升级一下我的mac的系统,可是因为我的appstore 是从别人的电脑上考过来的,要 ...