首页 > 其他分享 >ARMv7-A 处理器窥探(2) —— CP15 协处理器

ARMv7-A 处理器窥探(2) —— CP15 协处理器

时间:2023-05-13 18:34:58浏览次数:41  
标签:c0 ARMv7 寄存器 协处理器 取值 CP15

1、ARMv7-A 协处理器

ARMv7-A 处理器除了标准的 R0~R15,CPSR,SPSR 以外,由于引入了 MMU、TLB、Cache 等内容,ARMv7-A 使用协处理器来对这些扩展来进行管理,ARMv7-A 支持 16 个协处理器,编号从 CP0~CP15,其中的 CP15 协处理器称之为系统控制协处理器,CP15 协处理器下的寄存器包含了 MMU、TLB、Cache等关键组件,其余的 CP0~CP14 有的控制Debug功能,有的控制 SIMD,有的控制浮点,咱们暂时只关注关键的 CP15;

2、CP15 协处理器

2.1、组成

CP15 协处理器由16个子寄存器组成,分别为 c0~c15,所以 CP15 的层次关系为:

这里的 c0~c15 不是寄存器的含义,而是主(Primary Register)寄存器的意思,也就是每个主寄存器,都是一个寄存器组。

所以,针对 CP15 协处理器相关的层次结构总结下来为(这里以c0为例,c1~c15同样有很多寄存器,每个寄存器都是 32bits 的):

2.2、Cp15 协处理器寄存器组成

Cp15 协处理器的所有寄存器访问,都要依赖这几个值的组合达到访问的目的,前面说过整个 Cp15 的寄存器,分为 c0~c15,一共 16 个 Primary Regiser,再在每个 Primary Regiser 下面,又细分了很多具体的每个长度为 32bits 的寄存器,他们的整体组织结构为:

 可以看到,Cp15 协处理器的 CRn 编号从 c0~c15,每个 Primary Regiser 都标记得有访问权限;后面的 opc1、CRm、opc2 的取值访问也都标记得清清楚楚;

 

 每个主寄存器的功能,下图链接都有详细的介绍

 

对于主寄存器c0,做下详细介绍

c0下的所有寄存器如下图

对于每个寄存器的介绍,可点下下图的蓝色字体

 

2.3、访问指令

与 CPSR 类似,协处理器的访问是通过指定的汇编指令进行访问;常用的有 MCR/MRC 两条:

MRC: 将 CP15 协处理器中的寄存器数据读到 ARM 寄存器中。
MCR: 将 ARM 寄存器的数据写入到 CP15 协处理器寄存器中。

使用这两条指令,外加一些标准的指令,就可以实现读改写;

2.3.1、MCR

MCR 指令的格式如下:

MCR<c> <coproc>, <opc1>, <Rt>, <CRn>, <CRm>{, <opc2>}

其中:

  • coproc:访问协处理器的名字,取值范围从 p0~p15;
  • opc1:协处理器要执行的操作码,取值范围从 0~7;
  • Rt:ARM 的寄存器(比如 R0),要写入到指定协处理器寄存器的数据就保存在此寄存器中;
  • CRn:指定协处理器的目标寄存器;
  • CRm:协处理器中附加的目标寄存器或者源操作数寄存器,如果不需要附加信息就将 CRm 设置为 C0,否则结果不可预测;
  • opc2:可选的协处理器特定操作码,取值范围从 0~7,当不需要的时候要设置为 0;

2.3.2、MRC

MRC 指令的格式如下:

MRC<c> <coproc>, <opc1>, <Rt>, <CRn>, <CRm>{, <opc2>}

其中:

  • coproc:访问协处理器的名字,取值范围从 p0~p15;
  • opc1:协处理器要执行的操作码,取值范围从 0~7;
  • Rt:ARM 的寄存器(比如 R0),将指定协处理器寄存器的数据读在此 ARM Core 寄存器中;
  • CRn:指定协处理器的目标寄存器;
  • CRm:协处理器中附加的目标寄存器或者源操作数寄存器,如果不需要附加信息就将 CRm 设置为 C0,否则结果不可预测;
  • opc2:可选的协处理器特定操作码,取值范围从 0~7,当不需要的时候要设置为 0;

2.3.3、指令使用举例

 

标签:c0,ARMv7,寄存器,协处理器,取值,CP15
From: https://www.cnblogs.com/god-of-death/p/17397903.html

相关文章

  • ARMv7-A 处理器窥探(1) —— 处理器模式
    arm官方资料ARMArchitectureReferenceManualARMv7-AandARMv7-Redition.pdf1、处理器模式1.1、特权等级ARMv7架构支持安全扩展,如果使能了安全扩展,ARMv7-A架构分为安全模式(SecureState)和非安全模式(Non-secureState)两个世界。在非安全模式下,存在三种运行特权PL0,PL1和P......
  • Hbase 协处理器 RegionObserver
     RegionObserver注:每次更新协处理器方法,最好加上版本更新,否则可能会出现更新失败协处理器安装-表级别安装disable'wechat_article'alter'wechat_article',METHOD=>'table_att','coprocessor'=>'hdfs://test111:8020/coprocessor/hbase-coprocessor-0.0.6-S......
  • Hbase 协处理器之将数据保存到es (二级索引)
    利用HbaseCoprocessor实现将插入hbase中的数据保存至ElasticSearch中,实现二级索引目的版本:Hbase:2.1ES:6.3.0一、Coprocessor代码开发协处理器类packagewiki.hadoop.coprocessor;importorg.apache.hadoop.hbase.Cell;importorg.apache.hadoop.hbase.CellUtil;importorg.ap......
  • CP15
    CP15有16个主寄存器,分别是c0~c15,每个主寄存器下还有很多寄存器 每个主寄存器都有详细的说明 c0主寄存器下的所有寄存器如下:  此表格按主寄存器顺序列举了CP1......
  • 嵌入式:ARM协处理器指令总结
    ARM支持16个协处理器,用于各种协处理器操作,最常使用的协处理器是用于控制片上功能的系统协处理器,例如控制ARM720上的高速缓存和存储器管理单元等,也开发了浮点ARM协处理器,还可......
  • 嵌入式:ARM存储器组织、协处理器及片上总线
    ARM存储器组织ARM存储数据类型和存储格式ARM处理器支持以下6种数据类型8位有符号和无符号字节。16位有符号和无符号半字,它们以两字节的边界定位。32位有符号和无符号字,它们......
  • ARMv7-A Coprocessor概要以及读写
     关键词:MRC/MCR/MRRC/MCRR、CP14、CP15等等。1.ARMv7-ACoprocessor介绍ARMv7-A支持16个Coprocessor,分别是:(A2.9Coprocessorsupport)CP15-SystemControl。CP14-D......
  • Hbase协处理器详解
    Hbase协处理器一、简述二、协处理器类型    2.1Observer协处理器    2.2Endpoint协处理器三、协处理的加载方式四、静态加载与卸载    4.1静态加......
  • 【Cocos2d-X(1.x 2.x) 】iOS6与iphone5适相关设置随笔(解决第三方类库无法通过armv7s编
    本站文章均为​​ 李华明Himi ​​原创,转载务必在明显处注明:​一、 很多项目使用>=4.5version的Xcode无法,发现很多第三方库,比如SWavesSDK、AdmobSDK、91SDKMobage......
  • 升级Xcode14之后如何打出带有armv7架构的SDK包
    Xcode14以前是默认armv7和arm64的,升级Xcode之后就被苹果这厮移除了,所以答案是Xcode14是打不出来armv7的包的,因为某些资本家的理念:宁可兼容到每一个古董机型,也不......