MMU = memory management unit

1、把虚拟地址转化成物理地址,防止地址冲突

2、访问权限管理

MMU把一个虚拟地址的20位到31位作为取出来,建立

一张表,叫做translation table base,也叫做一级页表

索引,根据每个地址的最后两位进行分类,在进行段式

转换、粗叶地址转换和细叶地址转换。

段式转换是将最后两位是10的虚拟地址的高12位作为基

地址,剩余20位作为偏移地址

细叶地址转换是将最后两位是11的虚拟地址的高12位作为

一级页表,第10到第19位作为二级页表,0到11位作为偏移

地址。

#define GPBCON (volatile unsigned long *)0xA0000010
#define GPBDAT (volatile unsigned long *)0xA0000014 #define MMU_FULL_ACCESS (3<<10)  // 访问权限
#define MMU_DOMAIN    (0<<5)  // 属于哪个域
#define MMU_SPECIAL (1<<4)  // 必须是1
#define MMU_CACHEENABLE (1<<3)  // cacheable
#define MMU_BUFFERABLE (1<<2)  // bufferable
#define MMU_SECTION (2<<0)  // 表示这是段描述符 #define SECDESC (MMU_SECTION|MMU_SPECIAL|MMU_SPECIAL|MMU_FULL_ACCESS)
#define SECDESC_WB (MMU_SECTION|MMU_SPECIAL|MMU_SPECIAL|MMU_FULL_ACCESS|MMU_CACHEENABLE|MMU_BUFFERABLE) void creat_page_table()
{
unsigned long *ttb = (unsigned long *)0x30000000;
unsigned long vaddr,paddr; vaddr = 0xA0000000;
paddr = 0x56000000; *(ttb + (vaddr >> )) = ((paddr & 0xfff00000)|SECDESC); vaddr = 0x30000000;
paddr = 0x30000000; while(vaddr += 0x34000000)
{
*(ttb + (vaddr >> )) = ((paddr & 0xfff00000)|SECDESC);
vaddr += 0x10000;
paddr += 0x10000;
}
} void mmu_init()
{
__asm__(
  //设置TTB
"ldr r0, =0x3000000\n"
"mcr p15,0,r0,c2,c0,0\n"   //不进行权限检查
"mvn r0,#0\n"
"mcr p15,0,r0,c3,c0,0\n"   //使能MMU
"mrc p15,0,r0,c1,c0,0\n"
"orr r0,r0,#0x0001\n"
"mcr p15,0,r0,c0,c1,0\n"
:
:
);
} int gboot_main()
{
creat_page_table();
mmu_init(); *(GPBCON) = 0x15400;
*(GPBDAT) = 0x0; return ;
}

MMU功能解析、深入剖析、配置与使用的更多相关文章

  1. [国嵌攻略][047][MMU功能解析]

    MMU功能解析 1.Memory Management Unit(存储器管理单元) 2.两个进程读取同一个地址能读到不同的值.因为进程访问的是虚拟地址,通过MMU转换成不同的物理地址.不同的进程通过M ...

  2. springmvc 项目完整示例06 日志–log4j 参数详细解析 log4j如何配置

    Log4j由三个重要的组件构成: 日志信息的优先级 日志信息的输出目的地 日志信息的输出格式 日志信息的优先级从高到低有ERROR.WARN. INFO.DEBUG,分别用来指定这条日志信息的重要程度 ...

  3. Lemon OA第2篇:功能解析方法

    Lemon OA,整个系统功能也算是比较丰富,OA的很多功能都能看见影子,虽然做得不是很强大 接触Lemon OA,起源于Activiti的学习热情,既然这样,研究Lemon OA的目标有3: 1.L ...

  4. java -D 参数功能解析

    我们都知道在启动tomcat或直接执行java命令的时候可以通过参数-XX等来配置虚拟机的大小,同样,也应该留意到java -Dkey=value的参数.那么这个参数是什么作用呢? 使用案例 其实,在 ...

  5. 菜鸟nginx源代码剖析 配置与部署篇(一) 手把手实现nginx &quot;I love you&quot;

    菜鸟nginx源代码剖析 配置与部署篇(一) 手把手配置nginx "I love you" Author:Echo Chen(陈斌) Email:chenb19870707@gm ...

  6. SQL Server 数据加密功能解析

    SQL Server 数据加密功能解析 转载自: 腾云阁 https://www.qcloud.com/community/article/194 数据加密是数据库被破解.物理介质被盗.备份被窃取的最 ...

  7. 微信小程序0.11.122100版本新功能解析

    微信小程序0.11.122100版本新功能解析   新版本就不再吐槽了,整的自己跟个愤青似的.人老了,喷不动了,把机会留给年轻人吧.下午随着新版本开放,微信居然破天荒的开放了开发者论坛.我很是担心官方 ...

  8. Unity5 新功能解析--物理渲染与standard shader

    Unity5 新功能解析--物理渲染与standard shader http://blog.csdn.net/leonwei/article/details/48395061 物理渲染是UNITY5 ...

  9. 【原创】Matlab中plot函数全功能解析

    [原创]Matlab中plot函数全功能解析 该帖由Matlab技术论(http://www.matlabsky.com)坛原创,更多精彩内容参见http://www.matlabsky.com 功能 ...

随机推荐

  1. sql中对查询出的某个字段转换查询

    <select id="queryCmonByLanId" parameterType="java.util.Map" resultType=" ...

  2. log4j日志配置文件

    log4j.properties: ### 设置### log4j.rootLogger = debug,stdout,D,E ### 输出信息到控制抬 ### log4j.appender.stdo ...

  3. 阶段3 3.SpringMVC·_03.SpringMVC常用注解_8 SessionAttributes注解

    SpringMvc提供的Model类 ModelMap继承LinkedHashMap 页面取值 把request这个对象全部输出了. SessionAttribute 取值 从sessionAttri ...

  4. flask 学习 (五)

    之前照着书去做的时候经常出现一些小问题,由于对于flask核心内容还不甚了解,我觉定先从更简单的做起,再根据别的需要对搭建的网站进行扩展. 上网找了一下,发现这位http://zhanghonglun ...

  5. java源码-HashMap类设计

    map(内部interface Entry<K,V>)->abstractMap(定义视图 entrySet抽象方法)->hashMap(静态内部类Node(继承Entry&l ...

  6. linux常用命令(10)more命令

    more命令,功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上. more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会 ...

  7. java:LeakFilling (Linux)

    1.Nosql 列数据库,没有update,非关系型数据库: 为了解决高并发.高可扩展.高可用.大数据存储问题而产生的数据库解决方案,就是NoSql数据库.  NoSQL,泛指非关系型的数据库,NoS ...

  8. ServletContainerInitializer

    在web容器启动时为提供给第三方组件机会做一些初始化的工作,例如注册servlet或者filtes等,servlet规范中通过ServletContainerInitializer实现此功能. 每个框 ...

  9. 应用安全 - 工具|平台 - Elasticsearch- 漏洞 - 汇总

    未授权访问 (1)/_cat/indices #Index个数查询 (2)/_mapping?pretty=true #type个数查询 (3)根据Index和type查询表数据 (4)/_river ...

  10. postman Tests断言

    摘要:关于postman的断言方法很多,在网上随便搜寻下,能搜出一大推,什么牛鬼蛇神都有,让人眼花缭乱..甚至在应用时出现错误.Test断言都是根据js规则来写的,对于我这种不懂js语言的来说确实不友 ...