Cortex-R52(一):系统控制寄存器

目录

1、R52内核架构

 1.1 ArmV8架构基本概念

2、系统寄存器描述

3、代码解析


1、R52内核架构

        Cottex-R52是一个中等性能的处理器,主要用于汽车以及其他工业领域。其内核架构是Armv8-R AArch32,如下图:

         今天我们先来聊聊ArmV8架构。

 1.1 ArmV8架构基本概念

        Arm本身是精简指令集(Reduced Instruction Set Computer)架构,这种架构:

  • 大量统一的寄存器
  • load/store架构,其中数据处理操作只对寄存器内容进行操作,而不直接对memory内容进行操作(注意这个特性,特别是在有Cache的时候)
  • 简单的寻址模式,所有的加载/存储地址仅由寄存器内容和指令字段决定。

        Arm架构支持两个执行状态,AArch64--64bit执行状态,支持A64指令集;AArch32--32bit执行状态在,支持T32和A32指令集。同时Arm根据核的不同定义了三种不同的架构:

  • A   Application  Armv8-A:VMSA(Virtual Memory System Arch)
  • R  Real-time     Armv8-R:基于MPU支持PMSA(Protected Memory system Arch);支持VMSA
  • M  Microcontroller  Armv8-M:仅支持T32

PS:A32:使用32位指令编码的固定长度指令集

        T32:这是一个可变长度的指令集,使用16位和32位指令编码

        现在我们对V8架构有了初步的认识,知道是干什么的呢?那具体还有什么特性呢?对于V8架构有哪些拓展?进一步的,V7\V8\V9架构之间有什么不同?这些会在以后慢慢阐述,今天主要了解,重点在R52系统寄存器这块。

2、系统寄存器描述

        参考Arm® Cortex®-R52 Processor TRM,我们来看看系统寄存器

        系统寄存器主要用于控制核的功能实现和状态信息,根据功能,可以分为如下几类:

  • 整体系统控制和配置
  • MPU的管理和配置
  • Cache管理和配置
  • 系统性能监测
  • GIC CPU接口的管理和配置

        在R52中,系统寄存器只能由协处理器(coproc = 0b1111)使用指令MCR\MRC\MRRC\MCRR进行访问。下面来看下系统寄存器的字段定义

类别描述
CRn        系统控制主寄存器号
Op1                寄存器访问指令参数
CRm
Op2
Name寄存器或操作名

        从手册上看,系统寄存器包括C0-C15、AArch32 等寄存器多达几十个,我们这里选用一个来举例说明

        例如,MIDR,用于描述设备ID等,该寄存器属于只读,那么该如何访问该寄存器呢?

        格式如下:

        MRC p15,0,<Rt>,c0,c0,0

         根据内核手册语法格式,

         我们来一一对应,<coproc> = p15,opc1 = 0,Rt = 返回值,CRn = c0,CRm = C0,opc2 = 0

        如果想要访问MPIDR呢,汇编应该这样写

        MRC p15,0,<Rt>,c0,c0,5

3、代码解析

        在上述基础上,可以得出一个规律,访问系统寄存器的汇编可以封装出一个公共函数

例如

#define __set_CP(cp, op1, Rt, CRn, CRm, op2) __ASM volatile("MCR p" # cp ", " # op1 ", %0, c" # CRn ", c" # CRm ", " # op2 : : "r" (Rt) : "memory" 

        更多可参考Zephyr API Documentation: zephyr/arch/arm/aarch32/cortex_a_r/lib_helpers.h File Reference (zephyrproject.org)

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Cortex-R52Arm Cortex-R系列中最先进的处理器,它提供了实时功能和安全性能。作为第一款Armv8-R处理器,Cortex-R52引入了对虚拟机管理程序的支持,通过强大的分离来简化软件集成以保护安全关键代码,并保持高要求的实时确定性操作可靠的控制系统。\[1\] Cortex-R52支持硬件强制软件分离功能,以确保需要绝对安全的代码被完全隔离。这使得硬件可由软件管理程序管理,监督任务的执行和资源分配。通过精准且完善的软件分离,Cortex-R52减少了必须通过安全认证的代码量,简化了软件集成、维护和验证,从而加快了研发进程。此外,Cortex-R52还能应对日益增长的软件复杂性,同时实现实时系统所需的确定性和快速环境切换。\[2\] 在Cortex-R52中,系统寄存器只能由协处理器(coproc = 0b1111)使用指令MCR、MRC、MRRC、MCRR进行访问。系统寄存器的字段定义包括类别描述、CRn系统控制寄存器号、Op1寄存器访问指令参数、CRm、Op2和Name寄存器或操作名。\[3\] #### 引用[.reference_title] - *1* *2* [Armv8-R系列之ARM Cortex-R52 由来](https://blog.csdn.net/xy010902100449/article/details/126570309)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Cortex-R52(一):系统控制寄存器](https://blog.csdn.net/djkeyzx/article/details/130820821)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CyberSecurity_zhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值