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内核手册中可以得到下图:


uboot-step5 关闭MMU与cache_第1张图片
7.1.png

uboot-step5 关闭MMU与cache_第2张图片
7.2.png

关闭mmu与cache

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


uboot-step5 关闭MMU与cache_第3张图片
7.3.png

uboot-step5 关闭MMU与cache_第4张图片
7.4.png

uboot-step5 关闭MMU与cache_第5张图片
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

此去经年
[email protected]
August 2, 2016

你可能感兴趣的:(uboot-step5 关闭MMU与cache)