uboot-step5 关闭MMU与cache
MMU是什么
MMU 的概念参考百度百科的内容:
MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权,多用户多进程操作系统。
其功能主要有:
- 完成虚拟地址到物理地址的转化
- 对相应的地址空间的访问权限控制
- 与操作系统的内存管理程序一起协作对内存进行管理
cache 是什么
cache是处理器内部的一个高速缓存单元,为了应对处理器和外部存储设备的速度不匹配而设立的,其速度比内存的读写速度要快好多,接近处理器的工作速度,一般处理器从内存中读取数据到cache中,到下次再用到数据时,会先去cache中查找,如果cache中存在的话就不会去访问内存了,用以提高系统性能
在系统未初始化完成时,代码还没有转移到内存中,我们还没有用到内存,先将mmu与cache关闭,以免发生不可预料的错误:
使cache中数据无效
这个功能也是通过cp15协处理器来控制的,从arm1176内核手册中可以得到下图:
关闭mmu与cache
这些是通过cp15协处理器的c1寄存器来完成的:
代码实现
/*
* 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