关闭mmu和cache

首先介绍cache,在此先了解ARM存储体系。

这里写图片描述

上图是计算机系统存储体系,嵌入式系统是属于计算机系统的,因此上图的存储体系也是嵌入式系统的存储体系。
内部存储器:包括通用寄存器,程序状态寄存器。特点是访问速度快,容量小;
TCM:如cache,主存储器,内存。特点是访问速度不及内部存储器,但容量大;
辅助存储器:速度更慢,但容量更大。

cache:

这里写图片描述

没有使用cache时,处理器是直接访问存储器的。其中存储器的速度较慢,处理器速度较快,这种速度的不一致导致了处理器访问存储器用时较长。为了解决这个问题,引进了cache。
cache是一种容量小但存取速度非常快的存储器,它保存最近用到的存储器中数据的拷贝。对于程序员来说,cache是透明的,它自动决定保存哪些数据、覆盖哪些指令。当处理器需要访问存储器时,首先访问cache,若cache里面有处理器需要的数据,则直接从cache取得所需数据;若cache没有处理器需要的数据,则会从存储器中取得所需数据,并且将数据拷贝一份到cache。
cache按照功能划分为:
I-cache:指令cache,用于存放指令
D-cache:数据cache,用于存放数据

mmu

这里写图片描述

虚拟地址:程序中使用的地址
物理地址:物理存储单元实际的地址
虚拟地址的作用:①可以让进程使用更大的空间②可以解决地址冲突
mmu的作用:完成虚拟地址到物理地址的映射。

这里写图片描述

ARM11前,cache位于MMU的左端,即虚拟内存可以直接访问cache;ARM11后(包括ARM11),cache位于MMU的右端,即要访问cache首先要通过mmu将虚拟地址映射成物理地址才能访问cache。

MMU和Cache的控制都是通过协处理器CP15来实现的。
从ARM核的数据手册中可以看到,CP15存在一个control寄存器,该32位寄存器中有3位是用来控制Icache,Dcache和mmu;CP15还存在一个cache operations寄存器也是用于控制cache。所以要关闭mmu和cache,包括两部分:
①通过cache operations寄存器使cache失效
②关闭Dcache,mmu(Icache可以不用关闭)
汇编代码:

disable_mmu_cache:
    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
  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值