uboot-step5 关闭MMU与cache

uboot-step5 关闭MMU与cache

MMU是什么

MMU 的概念参考百度百科的内容:
MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权,多用户多进程操作系统。
其功能主要有:

  • 完成虚拟地址到物理地址的转化
  • 对相应的地址空间的访问权限控制
  • 与操作系统的内存管理程序一起协作对内存进行管理

cache 是什么

cache是处理器内部的一个高速缓存单元,为了应对处理器和外部存储设备的速度不匹配而设立的,其速度比内存的读写速度要快好多,接近处理器的工作速度,一般处理器从内存中读取数据到cache中,到下次再用到数据时,会先去cache中查找,如果cache中存在的话就不会去访问内存了,用以提高系统性能


在系统未初始化完成时,代码还没有转移到内存中,我们还没有用到内存,先将mmu与cache关闭,以免发生不可预料的错误:

使cache中数据无效

这个功能也是通过cp15协处理器来控制的,从arm1176内核手册中可以得到下图:


7.1.png

7.2.png

关闭mmu与cache

这些是通过cp15协处理器的c1寄存器来完成的:


7.3.png

7.4.png

7.6.png

代码实现

/*
 * flush v4 I/D caches
 */
disable_mmu:  
mov r0, #0
mcr p15, 0, r0, c7, c7, 0   /* flush v3/v4 cache */
mcr p15, 0, r0, c8, c7, 0   /* flush v4 TLB */

mrc p15,0,r0,c1,c0,0
bic r0, r0, #0x00000007
mcr p15,0,r0,c1,c0,0
mov pc, lr

此去经年
zhaiyk@sina.cn
August 2, 2016

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,347评论 19 139
  • 2016年国庆假期终于把此书过完,整理笔记和体会于此。 关于书名 书名源于俄罗斯的演员斯坦尼斯拉夫斯基创作的《演员...
    李剑飞的简书阅读 12,038评论 2 65
  • 概述 我们都知道一个进程是与其他进程共享CPU和内存资源的。正因如此,操作系统需要有一套完善的内存管理机制才能防止...
    SylvanasSun阅读 9,269评论 0 25
  • 1 内存寻址 1.1 物理地址、虚拟地址以及线性地址 物理地址: 物理内存的内存单元地址 虚拟地址: 程序员看到的...
    疯狂小王子阅读 8,108评论 3 21
  • 天灰灰亮,听到铃声便开始起床,没想到外面淅淅沥沥的小雨把我留住,早晨家里的空气也变得格外清新,洗刷完,打算...
    小清的日记阅读 1,261评论 0 0