历史上的今天
返回首页

历史上的今天

今天是:2024年09月22日(星期日)

正在发生

2021年09月22日 | ARM协处理器CP15介绍

2021-09-22 来源:eefocus

概述

在基于ARM的嵌入式应用系统中,存储系统的操作通常是由协处理器CP15完成的。CP15包含16个32位的寄存器,其编号为0~15。而访问CP15寄存器的指令主要是MCR和MRC这两个指令。


MRC:协处理器寄存器到ARM处理器寄存器的数据传送指令(读出协处理器寄存器)。

MCR:ARM处理器寄存器到协处理器寄存器的数据传送指令(写入协处理器寄存器)。


1、指令格式

MRC{cond} p15, , , , ,


MCR{cond} p15, , , , ,


cond:为指令执行的条件码。当cond忽略时指令为无条件执行。

Opcode_1:协处理器的特定操作码. 对于CP15寄存器来说,opcode1=0

Rd:作为源寄存器的ARM寄存器,其值将被传送到协处理器寄存器中,或者将协处理器寄存器的值传送到 该寄存器里面 ,通常为R0

CRn:作为目标寄存器的协处理器寄存器,其编号是C~C15。

CRm:协处理器中附加的目标寄存器或源操作数寄存器。如果不需要设置附加信息,将CRm设置为c0,否 则结果未知

Opcode_2:可选的协处理器特定操作码。(用来区分同一个编号的不同物理寄存器,当不需要提供附加信息时,指定为0)


(1) 汇编语法表示:

mrc p15, 0, r0, c1, c0, 0             //将 CP15 的寄存器 C1 的值读到 r0 中 


mcr p15, 0, r0, c7, c7, 0             //关闭ICaches和DCaches 


mcr p15, 0, r0, c8, c7, 0             //使无效整个数据TLB和指令TLB


(2) C语言语法表示:

__asm__("mrc p15, 0, r1, c1, c0, 0n"      //使用__asm__  可以在C函数中执行汇编语句

"orr r1, r1, #0xc0000000n"                                         

"mcr p15, 0, r1, c1, c0, 0n"  

:::"r1"                             //:::"r1" 向GCC声明:我对r1作了改动

);


2、CP15中的寄存器介绍

image.png?imageView2/2/w/550

(1) CP15的寄存器C0

CP15 中寄存器 C0 对应两个标识符寄存器,由访问 CP15 的寄存器指令指定要访问哪个具体物理寄存器,与两个标识符寄存器的对应关系如下所示:

image.png?imageView2/2/w/550

A、主标识符寄存器


主标示符的编码格式对于不同的ARM处理器版本有所不同。对于AMR7之后的处理器,其主标示符编码格式如下 :


指令格式:MRC P15,0,R0,C0,C0,0,将主标示符寄存器的内容读到AMR寄存器R0中 。


各部分的编码详细含义如下表所示:

image.png?imageView2/2/w/550

B、cache类型标识符寄存器


ARM 处理器中 cache 类型标识符寄存器的编码格式如下所示:

指令格式:MRC P15,0,R0,C0,C0,1,将cache类型标识符寄存器内容读到AMR寄存器R0中


各部分字段含义如下所示:

image.png?imageView2/2/w/550

各部分的编码详细含义如下表所示:

image.png?imageView2/2/w/550

控制字段位[28: 25] 的含义 :主要用于定义对于写回类型的cache的一些属性,


cache 类型标识符寄存器的控制字段位 [28 : 25]。

image.png?imageView2/2/w/550

控制字段位 [23 : 12] 及控制字段位 [11 : 0] 含义 :[23:12]用于定义DCache的属性,[11: 0]用于定义ICache的属性。编码格式如下:

image.png?imageView2/2/w/550

其中bits[1:0]含义如下:

image.png?imageView2/2/w/550

其中bits[5:3]含义如下:

image.png?imageView2/2/w/550

其中bits[8:6]含义如下:


编 码 M=0 时含义 M=1****时含义

0b000 0.5KB 0.75 KB

0b001 1 KB 1.5 KB

0b010 2 KB 3 KB

0b011 4 KB 6 KB

0b100 8 KB 12 KB

0b101 16 KB 24 KB

0b110 32 KB 48 KB

0b111 64 KB 96 KB


(2) CP15 的寄存器 C1

CP15中的寄存器C1是一个控制寄存器,它包括以下控制功能:


禁止或使能MMU以及其他与存储系统相关的功能

配置存储系统以及ARM处理器中的相关部分的工作

**指令如下: **

mrc p15, 0, r0, c1, c0{, 0},将 CP15 的寄存器 C1 的值读到 r0 中

mcr p15, 0, r0, c1, c0{, 0},将 r0 的值写到 CP15 的寄存器 C1 中


CP15 中的寄存器 C1 的编码格式及含义说明如下:

image.png?imageView2/2/w/550

image.png?imageView2/2/w/550

image.png?imageView2/2/w/550

(3)CP15的寄存器C2

C2寄存器的别名:Translation table base (TTB) register

C2寄存器用来保存页表的基地址,即一级映射描述符表的基地址。其编码格如下所示:

image.png?imageView2/2/w/550

(4) CP15 的寄存器 C3

CP15 中的寄存器 C3 定义了 ARM 处理器的 16 个域的访问权限。


在 CP15的C3寄存器中,划分了 16个域,每个区域由两位构成,这两位说明了当前内存的检查权限:


**00:**当前级别下,该内存区域不允许被访问,任何的访问都会引起一个domain fault,这时 AP位无效 ;


**01:**当前级别下,该内存区域的访问必须配合该内存区域的段描述符中AP位进行权检查 ;


**10:**保留状态(我们最好不要填写该值,以免引起不能确定的问题) ;


**11:**当前级别下,对该内存区域的访问都不进行权限检查, 这时 AP位无效 。


所以只有当相应域的编码为 01 时,才会根据 AP位 和协处理器CP15中的C1寄存器的R,S位进行权限检查。


(5) CP15 的寄存器 C5

CP15 中的寄存器 C5 是失效状态寄存器,分为指令状态失效和数据状态失效。


MRC p15, 0, , c5, c0, 0 :访问数据失效状态寄存器


MRC p15, 0, , c5, c0, 1 :访问指令状态失效寄存器

编码格式如下所示:

image.png?imageView2/2/w/550

其中,域标识bit[7:4]表示存放引起存储访问失效的存储访问所属的域。状态标识 bit[3:0] 表示放引起存储访问失效的存储访问类型,该字段含义如下表所示(优先级由上到下递减)。


(6) CP15的寄存器C6

CP15 中的寄存器 C6 是失效地址寄存器,其中保存了引起存储访问失效的地址,分为数据失效地址寄存器和指令失效地址寄存器。


MRC p15, 0, , c6, c0, 0 :访问数据失效地址寄存器


MRC p15, 0, , c6, c0, 2 :访问指令失效地址寄存器

编码格式如下所示:

image.png?imageView2/2/w/550

(7) CP15的寄存器C7

CP15 的 C7 寄存器用来控制 cache 和写缓存,它是一个只写寄存器,读操作将产生不可预知的后果。


访问 CP15 的 C7 寄存器的指令格式为:mcr p15, 0, Rd, CRn, CRm, opcode_2 。具体含义如下表所示(表中的数据是指Rd中的数据)


(8) CP15的寄存器C8

系统协处理器CP15的寄存器C8就是清除TLB内容的相关操作。它是一个只写的寄存器。


MCR p15,0,Rd,c8,CRm,opcode_2


Rd中为要写入C8寄存器的内容,CRm和opcode_2的不同组合决定指令执行的不同操作。


(9) CP15的寄存器C12

CP15寄存器C12用来设置异常向量基地址,其编码格式如下所示: MCR p15, 0, , c12, c0, 0,Rd中存放要修改的异常向量基地址

image.png?imageView2/2/w/550

注:只有ARM11和cortex-a 可以任意修改异常向量基地址。arm7,ARM9,ARM10只可以在0地址或0xffff0000中


(10) CP15的寄存器C13

CP15中的寄存器C13用于快速上下文切换。其编码格式如下所示

image.png?imageView2/2/w/550

其中, 在读操作时,结果中位[31::25]返回PID,其他位 的数值是不可以预知的。写操作将设置PID的值。当PID的值为0时,MVA = VA | (0(PID)<<25),MVA=VA,相当于禁止了FCSE。系统复位后PID即为0。当PID的值不为0时,相当于使能了FCSE。

推荐阅读

史海拾趣

安谱隆(Ampleon)公司的发展小趣事

在安谱隆的发展历程中,资本市场对其一直保持着高度的关注。然而,其“安家”之路却并不平坦。2017年,奥瑞德曾有意收购安谱隆,但由于资金问题,这桩收购最终未能成行。2018年,旋极信息也计划收购安谱隆,但同样未能成功。这些波折反映了资本市场对安谱隆价值的认可,但也暴露出安谱隆在寻找合适买家方面所面临的挑战。

智烽维(CDA)公司的发展小趣事

在超级电容器领域不断取得突破的同时,智烽维也在积极探索新的技术领域。2018年,公司成功实现了锂离子电容器的研发突破。这一成果不仅填补了公司在这一领域的空白,也为公司未来的发展开辟了新的道路。锂离子电容器以其高能量密度、高功率密度和长寿命等特点,在新能源汽车、智能电网等领域具有广阔的应用前景。

Herotek Inc公司的发展小趣事

为了更好地服务中国及亚太地区的电子产业集群,Henkel在东莞市投建了汉高电子粘合剂华南应用技术中心。该中心不仅具备先进的研发设备和测试能力,还拥有一支专业的技术团队。通过模拟仿真和数字化手段,该中心能够快速响应客户需求,提供定制化的粘合剂解决方案。自启用以来,该中心已帮助众多电子企业实现了技术创新和产品升级。

CHONGQING PINGYANG ELECTRONICS CO.,LTD.公司的发展小趣事

随着公司的发展,技术创新成为推动重庆平洋电子有限公司不断前进的重要动力。公司不断加大对研发的投入,引进高端人才,积极研发新技术、新产品。经过多年的努力,公司在电子元器件领域取得了重大突破,产品性能和质量得到了显著提升,赢得了市场的广泛认可。

Hi-Optel Technologly Co Ltd公司的发展小趣事

在技术创新的基础上,重庆平洋电子有限公司积极拓展市场,不断提升品牌影响力。公司积极参与国内外各种电子展览和交流活动,与多家知名企业建立了战略合作关系。同时,公司还注重产品质量和售后服务,赢得了客户的信任和好评。随着品牌知名度的提升,公司的市场份额也逐年增长。

艾为(AWINIC)公司的发展小趣事

随着艾为电子在技术和产品方面的不断突破,公司开始积极拓展市场。艾为电子的产品不仅覆盖了华为、小米等知名手机厂商,还广泛应用于可穿戴设备、智能便携设备等领域。同时,公司还加大了品牌建设的力度,通过参加行业展会、举办技术研讨会等方式,提高了品牌知名度和影响力。

问答坊 | AI 解惑

听说会做这个设计就能拿六千块月薪哦,大家来看看,看看你们会不会!

用一个自复位型常开点按钮, 可以用任意个继电器, 控制一个灯泡, 要求按一下按钮,\\ 灯亮, 再按一下, 灯灭, 如此反复. 这是某大型企业招聘电气工程师时的一道题目,要求三十分钟, 大家是不是觉得很简单,但真的,三十分钟做不出来的人,好多好多…

查看全部问答>

单片机的C语言设计

关于嵌入式方面的我进场用…

查看全部问答>

关于sram的讨论

假设有块片内sram: 2kbyte, single port. 现在有两种形式: 1。做成一块:sram_2048x8 2。做成两块,每块各1kbyte: sram_1024x8  (x2) 现在从三个反面分析这两种形式的优缺点: 面积:哪个大一些? 功耗:哪种功耗大一些?(当然前 ...…

查看全部问答>

S3C6410+wince6.0 怎么实现在视频窗体显示半透明按钮?

S3C6410+wince6.0 怎么实现在视频窗体显示半透明按钮?…

查看全部问答>

谁有《一个操作系统的实现》的源代码

如题,于渊写的 也就是《自己动手写操作系统》的第二版 哪位有请发到我的邮箱: 346921212@qq.com 谢谢…

查看全部问答>

power pcb5.0.1中

power pcb5.0.1中 使用copper pouer命令画了两个长方行框,其中的一个在另一个里面,如何让里面的长方形里面敷铜而不是在他俩之间敷铜.高手指点一下!!!!!!!!!也就是说让里面的type为hatch outline,外面的type为copper pouer,不管采取哪样的敷铜方式.…

查看全部问答>

window7触摸屏驱动及触摸IC接口

请问各位大大,windows7支持哪些接口的触摸屏芯片,usb、I2C、spi还是PS2? 另外,对于多点触摸,windows需要从触摸屏控制芯片得到哪些数据以及数据格式? 以前的单点触摸,触摸屏芯片只要送坐标给系统就可以了,跟鼠标一样,不知道多点触摸跟普 ...…

查看全部问答>

WIN CE开发问题启蒙,希望得到帮助

谁有好的WIN CE的书籍或课程视频资料,介绍一下,我用VS2005的!最好都有链接地址,可以看看,简介也好!…

查看全部问答>

STM32RTC时钟好差劲

                                 不知道为什么,STM32 的RTC时钟那么差劲,我制作了10个装置,时间11个样,运行一个月,时间居然相差不靠谱, ...…

查看全部问答>

PIC单片机的特点及应用

Microchip公司生产的PIC16C72是一款基于EPROM的8位高性能微控制器。与其它价格相当的微控制器相比,它在执行速度和代码压缩方面都有很大的改进。由于随时可以买到需要的OPT(一次性编程)产品,因而缩短了利用PIC16C73进行产品设计开发的周期。 PI ...…

查看全部问答>