浅谈ARMv7-A协处理器CP15

article/2025/9/26 5:15:34

协处理器,顾名思义就是协助型处理器,主要协助做一些主处理器无法执行或者执行效率不佳的事情,比如浮点、图像、音频处理这一类,随着硬件的发展,大多协处理器的功能都慢慢集成到主处理器中,但是某些特定的工作还是需要协处理器进行辅助。

ARM拥有16个协处理器,常被命名为 CP0—CP15,其中CP0—CP7由厂家定义协处理功能,而CP8—CP15预留给ARM使用:

1.CP15 提供一些系统控制功能,这包括体系结构和特征识别,以及控制、状态信息和配置支持,还提供了性能监视器寄存器。

2.CP14 主要提供 debug 系统的控制、Thumb执行环境、Java字节码执行。

3.CP10、CP11 两个协处理器一起,提供了浮点运算和向量操作,以及高级的 SIMD 指令扩展。

4.协处理器8、9、12和13预留给ARM将来使用。

01.CP15寄存器特性:

CP15 一共有 16 个寄存器,通常是需要 PL1 特权级才能访问,ARMv7 的 CP15 寄存器都是复合功能寄存器,多种功能对应多个寄存器内存实体,由访问指令的参数来决定访问的是哪种功能对应的内存。

对于 ARMv7 架构而言,A 系列和 R 系列是统一设计的,A 系列带有 MMU 相关的控制,而 R 系列带有 MPU 相关控制,针对不同的功能需要做区分,同时又因为协处理器 CP15 只支持 16 个寄存器,而需要支持的功能较多,所以通过同一寄存器不同功能的方式来满足需求。

在指令的编码中,支持 16 个寄存器只需要使用 4 位,如果需要支持 32 个寄存器,就需要多使用一位寄存器位,要知道,对于指令编码而言,每一位的资源都是非常紧缺的,关于指令编码可以参考 ARM指令集编码。

02.CP15寄存器的访问:

ARMv7 中对于协处理器的访问,使用 mcr 和 mrc 指令,分别表示将 ARM 核心寄存器中的值的写到 CP15 寄存器中和从 CP15 寄存器中读到 ARM 核心寄存器中,大部分指令都需要在 PL1 以及更高的特权级下才能正常执行,这是因为 CP15 协处理器大多都涉及到系统和内存的设置,user 模式没有操作权限,user 模式仅能访问 CP15 中有限的几个寄存器比如:ISB、DSB、DMB、TPIDRURW、TPIDRURO 寄存器。

下面以mrc和mcr指令为例,进行讲解:

MRC:

作用:将协处理器寄存器的值读取到ARM的寄存器中

实例:mrc p15, 0, r0, c0, c1, 1

将协处理器CP15的寄存器的值读取到ARM的r0寄存器中。

MCR:

作用:将ARM的寄存器的值读取到中协处理器寄存器

实例:mcr p15, 0, r0, c0, c1, 1

将ARM的r0寄存器的值读取到协处理器CP15的寄存器中。

03.CP15寄存器和操作数总览:

尽管 CP15 的寄存器是 c0—c15,但是根据上文中的介绍,实际上真正的寄存器实体完全不止 16 个,而是通过 “<opc1>(通常是0),<CRn>,<CRm>{,#<opc2>}” 来确定需要操作的目标寄存器,下表就是整个 c0—c15 寄存器以及功能的总览:

c0:

c0是标识寄存器,对应的功能列表如下表:

c1:

c1是系统控制寄存器,对应的功能列表如下表:

c2、c3:

c2和c3是内存保护和控制寄存器,对应的功能列表如下表:

在ARM v7-A的大型物理地址扩展或虚拟化扩展的实现中,CP15的c2寄存器包括一些64位的系统控制寄存器。

c4:

c4未使用

c5、c6:

c5和c6是内存系统错误寄存器,对应的功能列表如下表:

c7:

c7包括缓存维护、地址转换,以及其他功能,对应的功能列表如下表:

c8:

c8是TLB维护操作,对应的功能列表如下表:

c9:

c9寄存器预留了缓存、TCM控制和性能监视器,对应的功能列表如下表:

c10:

c10是内存重映射和TLB控制寄存器,对应的功能列表如下表:

c11:

c11保留给TCMDMA寄存器,对应的功能列表如下表:

c12:

c12是安全扩展寄存器,对应的功能列表如下表:

c13:

c13是进程、上下文和线程ID寄存器,对应的功能列表如下表:

c14:

c14,保留给通用计时器扩展,对应的功能列表如下表:

32位的c14寄存器:

64位的c14寄存器:

c15:

ARMv7保留CP15的c15用于实现定义的目的,并且对CP15的c15编码的使用不做任何限制。

从上述的协处理器寄存器列表可以看出,每个寄存器都对应多种功能,通过 mcr 或者 mrc 指令的参数来指定需要操作的具体寄存器,同时,CP15 协处理器的大部分寄存器功能都是和系统的内存相关,比如 MMU、TCM、TLB、DMA、Memory protection 等等。

SkyEye相关仿真介绍

由本公司自主研发的SkyEye全数字实时仿真软件,是基于可视化建模的硬件行为级仿真平台,利用拖拽的方式快速搭建任意的虚拟硬件平台,保证虚拟嵌入式系统的可靠性和实时性,进行嵌入式软件的开发和调试。SkyEye目前支持主流的嵌入式硬件平台,可以运行主流的操作系统,此外还能适配国内自主研发的操作系统天脉。通过利用基于LLVM的动态二进制翻译技术,使虚拟处理器在典型的桌面计算机上运行速度可以达到2000MIPS以上。对标产品为美国风河公司的Simics。

在SkyEye软件里面,关于ARM架构的仿真芯片中,主要设置了CP10、CP11协处理器来进行VFP和SIMD相关指令运行,CP15协处理器来复用协处理器的多功能。

通过仿真的协处理器,可以使得仿真芯片实现协处理器相关指令的操作。


http://chatgpt.dhexx.cn/article/kdowvwHZ.shtml

相关文章

i.MX6ULL(三) CP15协处理器

CP15 CP15协处理器是ARM处理器中一门重要的协处理器&#xff0c;主要用来控制 cache、TCM&#xff08; tiny code memory&#xff09;和存储器管理。 CP15协处理器包含16个32位的寄存器&#xff0c;其编号为0~15&#xff0c;其中CP15寄存器0是预留的&#xff0c;所以CP15实际有…

ARM汇编指令3 - CP15协处理器介绍和操作方法

一. ARM CP15协处理器寄存器简介 CP15协处理器寄存器是ARM处理器里面的一些有特殊功能的寄存器&#xff0c;CP15协处理器一般包括C0 - C15寄存器&#xff0c;它们分别控制高速缓存cache&#xff0c;MMU&#xff0c;TLB等功能&#xff0c;下面分别介绍 二. CP15寄存器访问 1. C…

【文献翻译】用于5G蜂窝的毫米波移动通信:我看行!

【标题】&#xff1a;Millimeter Wave Mobile Communications for 5G Cellular: It Will Work! 【作者】&#xff1a;T. S. Rappaport, S. Sun, R. Mayzus, H. Zhao, Y. Azar, K. Wang, G. N. Wong, J. K. Schulz, M. Samimi, and F. Gutierrez 【来源】&#xff1a;IEEE Acces…

STM32之单DAC数模转换输出(2021-07-30)

STM32之单DAC数模转换输出 1.DAC简介及框图&#xff1a; DAC功能只有STM32大容量的芯片才具有&#xff1b;中低容量的芯片没有&#xff1b; DAC有两个 8位*&#xff08;右对齐&#xff09;或者是12位&#xff08;左或右对齐&#xff09;*的转换器&#xff0c;每个转换器只有一…

pycinrad学习入门笔记,数据为雷达新旧格式基数据、pup产品数据

安装步骤 1.更改pip源为清华径向 2.pip install cinrad 3.运行上传的代码&#xff0c;在我的资料上传里 4、可以解码的基数据有&#xff1a;old 、new&#xff0c;格式可以是bz2和bin格式&#xff0c;分别使用不同的函数 file1 "Z_RADR_I_Z9552_20200711161600_O_DO…

Linux 初级 文件与目录管理(3)

文件和目录管理 在开始目录的切换之前&#xff0c;先了解一下路径&#xff0c;什么是相对路径&#xff0c;什么是绝对路径。 绝对目录 &#xff1a; 路径的写法&#xff0c;一定是由根目录写起/ 写起。例如如&#xff1a; /usr/share/dor这个目录 相对路径&#xff1a; 路径的…

bwapp通关教程

** HTML Injection - Reflected (GET) ** low: 低级漏洞中&#xff0c;输入数据没有做校验 First name: <script>alert( xss )</script> Last name: <script>alert( xss )</script> 出现xss即为成功。 medium 和low一样&#xff0c;但发现被全…

新一代天气雷达文件三维可视化

链接&#xff1a;从最新文章获取百度盘地址 支持新一代天气雷达SA SB CA&#xff0c;支持FMT&#xff0c;支持SWAN格式直接将文件拖进程序即可 支持列表样例Z_RADR_I_Z***_20200803100000_O_DOR_SA_CAP.bin.bz2Z_RADR_I_Z***_20210514000000_O_DOR_SA_CAP_FMT.bin.bz2Z_OTHE_…

激光雷达动态障碍物滤除-调研与展望

0. 简介 激光雷达作为自动驾驶中最常用的传感器之一&#xff0c;由于其深度感知特性优良&#xff0c;这也让以激光SLAM为主的SLAM方法被广泛应用。但是我们发现在人员密集&#xff0c;车辆密集的场景经常会造成点云定位效果不佳&#xff0c;而这些情况传统滤波方法是没有办法解…

DAC的简单应用

1.简介 DAC指数字/模拟转换。STM32F103RCT6具有2个12位数字输入&#xff0c;模拟输出的DAC&#xff1b;支持数字输入配置成8位右对齐、12位左对齐或12位右对齐格式&#xff1b;在双DAC通道模式下支持单通道独立转换或双通道同步转换。 2.框图 根据框图&#xff0c;将数据写入…

STM32学习笔记--DAC

目录&#xff1a; 一、DAC原理1.DAC定义2.STM32DAC简介3.STM32DAC工作原理 二、STM32DAC库函数配置参考资料 一、DAC原理 1.DAC定义 DAC是Digital-to- Analog Converter的缩写&#xff0c;数字/模拟转换模块的简称&#xff0c;它的作用就是把输入的数字编码&#xff0c;转换成…

Bwapp 04 05

文章目录 Insecure DOR (Change Secret)Insecure DOR (Reset Secret)Insecure DOR (Order Tickets)安全配置 Insecure DOR (Change Secret) 抓包的话&#xff0c;就可以实行篡位修改 Insecure DOR (Reset Secret) 同上&#xff0c;换成了xml的形式 Insecure DOR (Order Ticke…

水处理相关工艺控制程序汇总(RXXW_Dor)

水处理和化工行业流程控制类程序工艺有很多相似之处,属于过程控制,并不太关心控制实时性和控制速度,这篇博客汇总项目各种工艺写法,陆续会更新。流程控制类程序很多可以利用状态机思想进行编程,有关状态机编程的详细方法可以参看下面的文章链接: PLC面向对象编程系列之有…

整理 kanban 的 DoR 和 DoD

所谓 DoR 和 DoD 就是 Definition of Ready 和 Definition of Done。 我们的敏捷团队在需求管理上主要有两个会:需求梳理会和需求计划会议。 需求梳理会的阐述的意向用户故事会放到 Backlog,后由研发 Owner 跟进,在计划会上,将符合 DoR 放入 Sprint Todo。 「Backlog」…

人生的DoR和DoD:志向、遗产

我们要为两件事做好准备&#xff1a;太阳升起和太阳落山。前者没准备好&#xff0c;则错过了大好时光。后者没准备好&#xff0c;则坠入无边黑暗。前者让你醒的来&#xff0c;后者让你睡得着。 &#xff08;一&#xff09;立志是人生的DoR 年少的刘备与同族的孩子在树下玩耍时&…

【Scrum模式语言9】准备就绪的定义(Definition of Ready - DoR )

译者序&#xff1a;在很多敏捷项目中&#xff0c;秩序诞生的标志之一是有了成文的DoR。但是项目组和需求方的折中往往也无可奈何地始于将没有就绪的需求纳入到Sprint待办事项列表&#xff0c;并为Sprint实施阶段带来一系列的不可控因素。为什么市场和产品人员时常要求技术人员在…

敏捷开发中的 DoD 和 DoR 是什么?

在敏捷开发中&#xff0c;让所有成员保持目标统一、步调和节奏一致非常重要&#xff0c;但是在团队协作中&#xff0c;认知偏差却在所难免。需求在不同环节中流转&#xff0c;是否存在某种途径能保证所有成员的理解一致&#xff0c;将偏差最小化&#xff1f; 今天跟大家介绍敏…

传播动力学--SIR模型及其应用

王道谊 2020年3月 1. 传播动力学 “道生一&#xff0c;一生二&#xff0c;二生三&#xff0c;三生万物。” ---《道德经》 所谓“不积跬步无以至千里”&#xff0c;任何变化都是由点滴变化决定并发展起来的。知道所有的微观点滴变化&#xff0c;就能够掌握宏观变化。点滴…

SIR传播模型的科普和预测

>关注公众号&#xff1a;大数据技术派&#xff0c;回复资料&#xff0c;领取1024G资料。 注&#xff1a;本文仅是个人对于几个疾病模型做的一些概念性描述&#xff08;科普&#xff09;&#xff0c;并进行了简单的编程实现。切勿当做现实的行动指导。因为文章内容原因&#…

6.复杂网络实验六:SIR病毒传播模型(matlab)

一、SIR模型简介 在典型的传染病模型中&#xff0c;种群&#xff08;Population&#xff09;内的N个个体的状态可分为如下几类&#xff1a; (1)、易染状态S(Susceptible),即健康状态&#xff0c;可被感染的个体。 (2)、感染状态I(Infected),处于感染状态的个体还能够感染将康…