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

news/2024/11/22 17:54:10/

目录

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)


http://www.ppmy.cn/news/139763.html

相关文章

ARM Cortex-R52 通用中断控制器GIC:Generic Interrupt Controller(一)

ARM Cortex-R52 GIC:Generic Interrupt Controller 前言&#xff1a;名词解释 英文缩写英文全称&#xff08;中文释义&#xff09;GICgeneral interrupt controllerITSInterrupt Translation Service:用来解析中断SPIShared Peripheral InterruptsPPIPrivate peripheral inte…

G120变频器准备就绪和运行指示信号解析

1 概述 变频器的准备就绪信号和运行指示信号经常应用于变频器控制系统中&#xff0c;可以通过变频器的数字量输出连接指示灯来显示变频器的运行状态&#xff0c;也可以通过现场总线发送给上位控制器作为控制回路的连锁信号。 对于G120变频器&#xff08;控制单元CU240B/E-2, C…

leetcode 494. 目标和

题目链接&#xff1a;leetcode 494 1.题目 给你一个整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 ‘’ 或 ‘-’ &#xff0c;然后串联起所有整数&#xff0c;可以构造一个 表达式 &#xff1a; 例如&#xff0c;nums [2, 1] &#xff0c;可以在 2 之前添…

1.矢量引入

目录 一.什么是矢量 1.1 定义 1.2 公理与体系 1.3 矢量几何化 二.矢量间的相互作用 1.点积 2.点积应用 3.叉积 4. 叉积应用 三.矢量除法 1.单用叉积无法唯一定义矢量除法 2.矢量除法 四.复杂相互作用 1.混合积 2.双叉积 3.Laplace公式 五.泛函的广义矢量理论…

小兔鲜案例注册,登录,索引的实现效果

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>注册页面</title><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"renderer" content&q…

登录界面的实现

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>登录页面</title><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"renderer" content&q…

实现综合案例的注册、登录和跳转到主页面的功能

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>首页面</title><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"renderer" content&quo…