26.核心初始化之关闭MMU和cache

发布者:RadiantBreeze最新更新时间:2024-10-29 来源: cnblogs关键字:核心初始化  cache 手机看文章 扫描二维码
随时随地手机看文章

下面看看ARM存储体系:

可以看到速度最快的是处理器和内部寄存器,他们的数量很少,价格很昂贵。接着是TCM紧耦合存储器:cache和main memory。速度最慢的是外部存储介质:Flash和SD卡等。

CACHE:

上面是两种访存的两种机制,一种是处理器直接访问主存,另一种是处理器-cache-主存。第一种中,处理器的速度相比主存是非常快的,所以两者的速度很不匹配。浪费了处理器的很多资源。第二种是为了改进第一种的缺陷,在处理器和主存之间增加了一种叫Cache的原件,cache的访问速度比主存快,比处理器慢了点,这样就缓和了第一种的资源浪费现象。

其实在cache里存放的是主存的一些数据的拷贝:当处理器要访问主存里的数据的时候,处理器会先到cache里面找,如果里面没有想要的数据,再到主存里面访问,此时主存除了把数据总到处理器之外,他还拷贝一份数据到cache里。下一次处理器访问数据的时候,还是到cache里面找,如果有就直接取走。不用访问主存。有人做过统计,就是处理器会频繁使用某些数据,有些数据处理器很久才使用一次。这样就大大地提高了访问的速度了。

 

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

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

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

2440的I/D-cache:

6410:

210:

 

 

 

 

虚拟内存:

假如一个程序员,编写了三个程序,都需要访问内存。而且操作系统中还有其他的应用程序。然而作为程序员,都是表层操作的,程序员都只是懂得软件的编写。他们怎么知道哪些物理地址被用了呢?他要使用哪些物理地址才不会冲突呢?最后很可能是两个应用程序访问同一个物理内存,就会产生地址冲突。还有就是实际的物理地址范围是很有限的。

 

但是引入了虚拟地址之后,程序员应用程序员不需要知道哪些物理地址被使用,因为他们使用的是虚拟地址。即使三个应用程序使用了同一个虚拟地址,最后系统会把这三个虚拟地址映射到不同的物理地址去执行。这样就不会产生冲突了。这样程序员使用的虚拟地址的范围比物理地址大了很多。

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

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

虚拟地址:

  1. 可以让进程使用更大的空间

  2. 可以解决冲突

 

那么谁来实现虚拟内存到物理内存的转换呢?这就是下面的MMU解决的问题了。

 

MMU的机制:

上面就是MMU的位置,完成虚拟地址到物理地址的转换。在上图结构看到cache在ARM11之前,cache是在MMU与处理器之间。ARM之后,cache是在MMU和Main memory之间。

要使用MMU和cache,这两个是必须学会使用的,这里把它关掉是我现在不用到MMU和cache,因为他们两的使用如果没有经过正确的配置,会出现一些意想不到的错误。所以这里先把他们关掉,免得出现影响裸机的学习。

 

 

 

 

 

 

 

 

 

 

 

 

2440的I、Dcache无效的设置:

首先进入ARM920t核手册ARM920T_TRM1_S.pdf,搜索CP15:

定位到2.3 CP15 register map summary

咋CP15里有一个control寄存器:

定位到该寄存器,可以看到它的访问方法read和write:

MRC p15, 0, Rd, c1, c0, 0 ; read control register

MCR p15, 0, Rd, c1, c0, 0 ; write control register

在这个寄存器中,怎么设置关闭I、Dcache和MMU,看下面control寄存器的参数:

从上图可以看到,控制I cache的是[12]位,该位设置为0就是disable I cache,1为使能。控制D cache的是[2]位,该位设置为0就是关闭D cache。第[0]位是控制MMU,设置为0是关闭,设置为1是使能。所以关闭I/D cache的工作就是设置上面三个位为0即可。

 

 

 

 

 

 

 

 

 

 

 

 

但是,在起初时,I/Dcache里面已经有了数据了的。所以我们还需要对它进行数据无效操作:

命令:

MCR p15,0,Rd,c7,c7,0

由上面的信息知道,关闭I/D cache和MMU的操作是:

  1. 使I/D cache和MMU无效:MCR p15,0,Rd,c7,c7,0

  2. 接着关闭I/D cache和MMU。

首先是使I/D cache和MMU无效,这里的通用寄存器选r2:

MCR p15,0,r2,c7,c7,0

关闭MMU和cache:

MRC p15,0,r2,c1,c0,0 @ read control register

bic r2,r2,#0x00000805 @0b100000000101=0x805

MCR p15,0,r2,c1,c0,0 @ write control register

最后的代码:

这里是2440的设置,6410和210也是一样的操作。前面提过他们三者的CP15是一样的。

6410:

MRC p15, 0, , c1, c0, 0

MCR p15, 0, , c1, c0, 0

MCR CP15,0,R1,C7,C10,0

 

 

 

 

210:


关键字:核心初始化  cache 引用地址:26.核心初始化之关闭MMU和cache

上一篇:27.点亮led的操作
下一篇:25.核心初始化之中断屏蔽-210

推荐阅读最新更新时间:2024-11-08 12:11

基于CPCI总线多DSP系统的高速主机接口设计
在现代通信、雷达和声纳系统中,随着实时处理要求的不断提高,对数字信号处理系统也提出了更高的要求。板载多片高性能的DSP芯片,配合大容量的SDRAM,可以很好地满足上述要求,并且已经成为了数字信号处理系统发展的趋势。采用CPCI总线集成系统,可以方便主机进行调试,控制和管理DSP系统。系统中的主机接口可以使主机通过CPCI总线访问板上的DSP和SDRAM芯片,这是多DSP系统设计的关键点之一。  不同于以往简单地使用一个CPLD进行粘合逻辑设计,本文提出了一种基于双状态机+Cache,预存预取的主机接口设计结构。在主机接口中设立了一个Cache,降低了CPCI总线与板上DSP和SDRAM芯片的耦合度,并且设计了两个独立状
[嵌入式]
TQ2440国嵌学院gboot-关闭MMUCache
在register 1寄存器中最后3位定义如下: 第0位可以关闭MMU 第1位可以关闭Data address check 第2位可以关闭Cache 当然你会说这里只关闭了Dcache,没有关闭Icache, 在register 1寄存器中第12位定义如下: 第12位可以关闭Icache,通常情况下,不对这一位做设定。 代码如下: 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
[单片机]
24.核心初始化之中断屏蔽-6410
打开6410的芯片手册,在12.VECTORED INTERRUPT CONTROLLERS向量中断控制寄存器。向量中断(6410、210)很多时候是使用硬件来完成中断的跳转的。 下面的最后一个寄存器VICxINTENABLE,功能是Interrupt Enable Register。 VICxINTENABLE寄存器: 可以看到,该中断屏蔽寄存器有两个组中断源,所以有两个中断使能寄存器。第0组和第1组。 但是在芯片手册后面: 在上面的描述知道,该寄存器只能使能中断不能屏蔽中断,屏蔽中断需要使用VICINTENCLEAR Register。 可以看到,上面也是两组寄存器,在描述中知道,往这两个寄存器写入0是没有影响
[单片机]
24.<font color='red'>核心</font><font color='red'>初始化</font>之中断屏蔽-6410
AMD推出全新锐龙7 5800X 3D 首款采用3D V-Cache技术处理器
近日,AMD推出全新处理器锐龙7 5800X 3D,该处理器也是AMD首款采用3D V-Cache技术的处理器。 据称,与同类产品相比,这些处理器可提供卓越的性能,并将很快发布。根据AMD的说法,带有3D V-Cache的新处理器已成为世界上最快的游戏处理器。 3D V-cache技术,是通过将SRAM叠加在CPU上面,通过铜对铜混合键合,以及硅通孔(TSV)进行数据的通信,实现3D小芯片叠层,极大的提升芯片的缓存大小和带宽,如此大大缩小缓存到芯片以及各组件之间的距离,很好的解决了MCM设计因为距离远而导致的数据传输延时,性能提升不高的问题。 这项技术增加了64MB的额外缓存,这款最新的处理器配备了32MB的L3缓存,
[手机便携]
AMD推出全新锐龙7 5800X 3D 首款采用3D V-<font color='red'>Cache</font>技术处理器
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved