OK6410的uboot关闭mmu和cache---嵌入式回归第九篇

接着上一篇设置系统为SVC模式,关闭看门狗,关闭中断,下面就根据正对ok6410架构分析上的来关闭mmu和cache.虽说是重复造轮子,但对学习来说也是一种很好的方法,我要一步一步努力向上爬!

1. 先来介绍ARM的存储体系

从上到写依次存储访问速度下降,容量增大!同时价格也不是一个档次!


2. Cache简介:

Cache是一种容量小但存取速度非常快的存储器,它保存最近用到的存储器中数据的拷贝,对于程序员来说,Cache是透明的,它自动决定保存那些数据、覆盖那些数据,按照功能划分

I-Cache: 指令Cache,用于存放指令

D-Cache: 数据Cache,用于存放数据

下面的一张截图显示有cache和没cache的区别!当没有cache时,处理器的高速和外设的低速会造成处理器资源的巨大浪费!所以Cache就诞生了!从上面的截图可以看出cache也是一种内存,但是比一般的内存访问速度更快!

Cache里面主要存放的是主存储器一些数据的拷贝


这里看可以看到6410的Cache大小, 都是16KB


3. 虚拟地址(这个和MMU紧密相连)

概念:

    虚拟地址:程序中使用的地址

    物理地址:物理存储单元实际的地址

使用虚拟地址可以让进程使用更大的空间、可以解决冲突!(这个详细可以网上多了解一下虚拟地址的作用)

4. MMU的作用

将程序运行的硬件地址作为一个映射,然和一个程序可以使用的硬件地址为4G,32位的,但这里是uboot部分,初始化的时候还需要要配置才能使用,麻烦,所以初始化部分先关闭MMU(将虚拟地址转化为物理地址


5. 和之前的一样,下面就来根据datasheet来理清思路如何关闭mmu和cache,然后用代码实现,手册比较多,这里截图只挑重点的说,这一篇还会和后边的博客程联系起来!

第一步:还是先找到MMU和Cache的控制寄存器

第二步:使I/Dcache失效

第三步: 关闭cache

打开ARM11核的芯片手册!搜索CP15,可以看到CP15里有个Control寄存器。


这个怎么设置基本上是按照手册上给的代码(手册上可以查到),这里在前面的基础上加上这一节的代码:

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



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值