专题1-MMU-lesson3-MMU配置与使用
1、段方式MMU
利用虚拟地址然后找到物理地址,通过物理地址访问到led,其过程如下:
一个段的大小是[19:0]总共有1M的地址空间。
从上面可知对应GPIO的段物理基地址是0x7f000000.那么要在虚拟地址当中找一个段与之形成对应关系,那么这个段是多少呢,假如是0xa0000000这个段,把这两个段关联起来,那么通过页表来建立这个关系。那么这个页表存放在内存的起始地址0x50000000。接下来就要建立该页表的页表项,要建立页表项就要知道它在页表当中的位置,它的位置实际上就是页表的起始地址+虚拟地址的高12位,
找具体表项里面的内容看芯片手册
[31:20]保存的段的物理基地址的高12位,[19:12]should be zero固定为零。[11:10]access permission控制访问权限的,[9]:也为0;[8:5]域,[4]固定为1,[3]是否使用cache
,[2]是否使用write buffer
,[1]固定为1,[0]固定为0.
表项中的第一个部分[31:20](0x7f000000&0xfff00000)
表项中的第二个部分[19:12]0b00000000
表项中的第三个部分[11:10]AP:
表项中的第四个部分[9]为0
表项中的第五个部分[8:5]domain
表项中的第六个部分[4]固定为1
表项中的第七个部分[3]c是否使用cache
表项中的第八个部分[2]b是否使用buffer
表项中的第九个部分[1:0]固定为0b10段的模式
域和AP来共同决定访问权限的:
有疑问???怎么把域写到对应页表项,是直接把对应数字域写到[8:5]位吗?比如要域3,将3写到[8:5]这里??,视频里面使用的域0,将0左移5位保存在[8:5]这里。那么下面的3-11表是什么意思??
ARM系统把整个的存储空间分为了16个域,每一个域可以有一个权限,你可以选择你访问的区域放到哪一个域里面去,假如我们放到我们的域0里面,放到哪个域都没有关系,那么放到域0之后,那么这个区域的访问权限怎么来决定呢,
可以将其设置为11对应table3-11
"mvn r0,#0\n"
"mcr p15,0,r0,c3,c0,0\n"把全部域设置为11,
由三个因素AP、S、R来决定的;S、R由域里面的S、R来决定的,在cp15里面每一个域都有一个S和R设置,当把AP设置为11的时候,就不管S和R了,都可以进行读写操作。
1、建立一级页表
建立好了页表项之后,要写入TTB。
2、写入TTB
TTB是保存在CP15的c2寄存器,
3、打开MMU
别忘了当我们打开了MMU之后,所有的地址都要经过一个转换的过程,不管是访问内存还是外设,故
代码如下:
专题1-MMU-lesson3-MMU配置与使用的更多相关文章
- Oracle研究专题:Oracle系统安装与配置
最近开始研究Oracle数据库,盖因公司的系统要么Oracle要么是mysql吧. 作为一个IT工作者,没有碰过Oracle是一件很匪夷所思得事情. 想到过去几年,乃至接触IT行业开始就只有玩过sql ...
- java架构之路(MQ专题)kafka集群配置和简单使用
前面我们说了RabbitMQ和RocketMQ的安装和简单的使用,这次我们说一下Kafka的安装配置,后面我会用几个真实案例来说一下MQ的真实使用场景.天冷了,不愿意伸手,最近没怎么写博客了,还请见谅 ...
- Maven 专题(八):配置(一)常用修改配置
修改配置文件 通常我们需要修改解压目录下conf/settings.xml文件,这样可以更好的适合我们的使用. 此处注意:所有的修改一定要在注释标签外面,不然修改无效.Maven很多标签都是给的例子, ...
- ok6410,mmu,内存管理
MMU 一.MMU学习 MMU其实就是一个页表.将虚拟地址通过查表的方式,对应到物理地址去他由一个或一组芯片组成,一般存在与协处理器中. 1.将虚拟地址转化为物理地址 2.访问权限管理 1.1得出mm ...
- 内存管理单元(MMU)和协处理器CP15介绍(转)
内存管理单元(MMU)和协处理器CP15介绍内存管理单元(MMU)介绍嵌入式系统中,存储系统差别很大,可包含多种类型的存储器件,如FLASH,SRAM,SDRAM,ROM等,这些不同类型的存储器件速度 ...
- MMU(why)
在ARM中,MMU几个主要作用: 1. I/D Cache 管理 -> 大幅提高代码运行效率. 2. PA/VA 重映射 -> 实现多进程内存空间映射. 3. 内存 ...
- u-boot移植(八)---代码修改---存储控制器--MMU
一.MMU介绍 1.1 虚拟地址与物理地址 建立两个应用程序,hello1.c和hello2.c,然后运行: hello1.c hello2.c 运行结果如下: 可以看到两个结果打印的地址是一样的,都 ...
- 硬件篇之MMU
<背景> MMU即内存管理单元(Memory Manage Unit),是一个与软件密切相关的硬件部件,也是理解linux等操作系统内核机制的最大障碍之一.可以说,不懂MMU使很多人一直停 ...
- u-boot分析(十一)----MMU简单分析|u-boot分析大结局|学习规划
u-boot分析(十一) 通过前面十篇博文,我们已经完成了对BL1阶段的分析,通过这些分析相信我们对u-boot已经有了一个比较深入的认识,在BL2阶段大部分是对外设的初始化,并且有的我们已经分析过, ...
- u-boot分析(五)----I/D cache失效|关闭MMU和cache|关闭看门狗
u-boot分析(五) 上篇博文我们按照210的启动流程,对u-boot启动中的设置异常向量表,设置SVC模式进行了分析,今天我们继续按照u-boot的启动流程对以下内容进行分析. 今天我们会用到的文 ...
随机推荐
- loj #6138. 「2017 山东三轮集训 Day4」Right
题目: 题解: 暴力一波 \(SG\) 函数可以发现这么一个规律: \(p\) 为奇数的时候 : \(SG(n) = n \% 2\) \(p\) 为偶数的时候 : \(SG(n) = n \% (p ...
- Dawn 阿里开源前端开发构建工具
Dawn 取「黎明.破晓」之意,原为「阿里云·业务运营团队」内部的前端构建和工程化工具,现已完全开源.它通过pipeline 和 middleware 将开发过程抽象为相对固定的阶段和有限的操作,简化 ...
- 使用pinyin4j汉字转pinyin
引入maven依赖<dependencies> <dependency> <groupId>com.belerweb</groupId> <art ...
- leetcode 21.Merge Two Sorted Lists ,java
题目: Merge two sorted linked lists and return it as a new list. The new list should be made by splici ...
- DM8127-UART驱动
一.重要文件 1./arch/arm/plat-omap/include/plat/omap-serial.h ##串口名称 1)宏定义#define OMAP_MAX_HSUART_PORTS ...
- 1128 N Queens Puzzle
题意:给定一串序列,判断其是否是合法的N皇后方案. 思路:本题是阅读理解题,不是真的N皇后问题.N皇后问题的合法序列要求任意两个皇后不在同一行.同一列,以及不在对角线.本题已经明确不会在同一列,故只需 ...
- python's twenty eithth day for me 模块和包
模块: 什么是模块: 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀,但其实import加载的模块分为四个通用类别: 1,使用python编写的代码 ...
- springboot成神之——websocket发送和请求消息
本文介绍如何使用websocket发送和请求消息 项目目录 依赖 DemoApplication MessageModel WebConfig WebSocketConfig HttpHandshak ...
- Java中 单例(Singleton)的两种方式
第一种(饿汉式单例模式):在声明变量时实例化 public class Singleton { //静态初始化自动实例化 private static Singleton instance = new ...
- HDFS的介绍
设计思想 分而治之:将大文件.大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析: 在大数据系统中作用:为各类分布式运算框架(如:mapreduce,spark,te ...