Armv8-R AArch32 architecture概念学习
提示
- 该博客主要为个人学习,通过阅读官网手册整理而来(个人觉得阅读官网的英文文档非常有助于理解各个IP特性)。若有不对之处请参考参考文档,以官网文档为准。
- 阅读该文章,可以先查看AArch64 Exception Model学习,再来看该文章会非常简单
1. 执行状态
该体系结构只有AArch32执行状态。执行状态定义了处理器的执行环境,包括:
- 支持寄存器位宽
- 支持指令集
- 还有以下几方面
- 执行模型
- PMSA
- 编程模型
2. 异常等级
Armv8-R AArch32的异常等级为: EL0~EL2
EL0:Applications
EL1: 通常被描述为特权的操作系统内核和相关函数
EL2: Hypervisor
- EL0具有最低的软件执行特权,在EL0处的执行称为非特权执行。
- 从1到2表示增加了软件执行特权。
- EL2提供了对处理器虚拟化的支持。
只有在发生异常或从异常返回时,执行才能在异常级别之间切换: - 在发生异常时,异常级别会增加或保持不变。在发生异常时,异常级别无法降低。
- 当从异常返回时,异常级别会降低或保持不变。当从异常返回时,异常级别无法增加。
发生异常时执行更改或保留在的异常级别称为异常的目标异常级别,并且: - 每个异常类型都有一个目标异常级别:
- 隐含在异常的性质中
- 由系统寄存器中的配置位定义
- 异常目标不能是EL0
3. AArch32执行模式
当处于AArch32状态时,处理器可以以几种模式之一执行。每个模式都与一个异常级别相关联。有些模式有一些通用寄存器的私有、bank副本。异常情况会导致处理器切换到一个特定的模式。
下表显示了AArch32处理器模式,以及每个模式的异常级别
4. 支持v8内存类型
Armv8提供了互斥的内存类型。内存映射中的每个地址都有一个由MPU决定的内存类型。
内存类型:
- Normal:这通常用于大容量内存,包括读/写内存和只读内存。
- Device:这通常用于外设,它们可能是读敏感或写敏感的。Arm架构限制了对设备内存的排序、合并或推测。
Armv8架构将设备内存细分为几个子类型。这些属性涉及以下属性: - G:收集。将请求收集并合并为单个事务的能力。
- R:重新排序。重新排序事务的能力。
- E:早期承认。接受来自互连的事务的早期确认的能力。
下表描述了Armv8的内存类型。
5. 系统寄存器
系统寄存器提供控制和状态信息。例如,寄存器可能提供有关core已采取的abort exception的综合信息,或提供一个启用或禁用缓存的控制。
系统寄存器使用一种标准的命名格式,<register_name>.<bit_field_name>,来识别特定的寄存器以及寄存器内的控制位和状态位。位也可以用它们在形式<register__name>[x:y]或通用形式bits[x:y]中的数字位置来描述。
系统寄存器包括:
- ID registers.
- General system control registers.
- Debug registers.
- Generic Timer registers.
- Performance Monitor registers.
- GIC CPU interface registers.
6. 通用寄存器
Armv8-R AArch提供了对15个32位通用寄存器R0-R14的访问。
其中,有两个有专门的或受限制的用途:
- R13通常被标识为SP,即堆栈指针。
- R14通常被标识为LR,即链接寄存器。
当然,还有一个32位的程序计数器(PC),R15。
其中一些寄存器是bank上的。这些是使用相同的标识符访问的多个物理寄存器,执行模式决定了访问哪个寄存器。例如: - 在abort模式下,对SP的访问将访问物理寄存器SP_abt。
- 在user模式下,对SP的访问将访问物理寄存器SP_usr。
在Hypervisor模式下,还有一个附加的专用链接寄存器,ELR_hyp。
高级SIMD和浮点指令使用了另一组寄存器。这些寄存器可以作为32位单精度寄存器S0-S31访问,也可以作为64位双精度寄存器D0- D31访问,或128位四元寄存器Q0-Q15访问,但这些是相同数据的不同视图。数据可以在高级SIMD和浮点寄存器和整数寄存器之间传输。
7. 程序状态寄存器
程序状态寄存器包括当前程序状态寄存器(CPSR)、应用程序状态寄存器(APSR)和已保存的程序状态寄存器(SPSR)。
CPSR包括:
- 可以由某些指令设置并决定其他指令的行为的标志。
- 反映处理器的当前模式和其他状态的状态位。
- 控制位决定例如中断掩蔽和数据大小端。
CPSR中的许多位都限制了使用,并且只能进行修改: - 在特权模式。
- 作为异常或异常返回的副本。
呈现给运行在异常级别EL0上的应用程序的CPSR的视图称为APSR。
每个可以采用异常的模式都有自己的SPSR。每个SPSR用于在发生异常时保存CPSR的副本,从而允许在异常返回时恢复它。
8. 数据类型
AArch32体系结构支持以下整数数据类型:
- Byte (8 bits).
- Halfword (16 bits).
- Word (32 bits).
- Doubleword (64 bits).
该架构还支持半精度、单精度和双精度的浮点数据类型。
9. 内存模型
该架构定义了PMSAv8内存模型,以确定:
- 对指令和数据执行内存访问的排序规则和其他限制。
- 内存访问的权限和其他属性,以及它们是如何由MPU确定的。
Cortex-R52+支持PMSAv8,并且没有MMU或地址转换功能。即使MPU不执行任何实际的转换,该函数仍然被称为转换。这是因为物理地址总是与虚拟地址是相同的。虚拟地址和物理地址是指由指令生成的转换前和转换后在总线上可见的地址。虚拟地址和物理地址可以作为Cortex-R52+的一套地址来处理。
10. GIC架构
Cortex-R52+处理器支持GIC架构的三个组件:分发器(Distributor)、再分发器(Redistributor)和CPU接口(CPU interface)。
分发器包含支持SPIs的寄存器,除了优先级逻辑,它计算每个核心的最高优先级等待中断。再分发器包含支持PPIs和SGIs的寄存器。CPU接口跟踪当前正在运行的优先级和虚拟中断。它决定了核心是否被中断。
中断被配置为对边缘触发或电平敏感的。每个中断都具有可编程启用、优先级(0-31)、组(0或1)、路由(仅SPI)配置和当前状态。
当接收到中断信号时,它被pending。根据其配置,一个pending中断可能会中断一个core的执行。软件可以读取中断的ID,并且激活(active)它。软件还可以结束一个中断,从而使其失效(deactives)。
虚拟中断是由系统管理程序(hypervisor)软件写入CPU接口中的列表寄存器而创建的,通常是为了响应物理中断。虚拟中断的处理方式与物理中断类似,但只能在core处于EL0或EL1中时中断它。当一个虚拟中断被停用(deactive)时,可以对其进行配置,即当该虚拟中断被停用时,相应的物理停用消息也会发送给GIC分发器。
该章会单独写几篇文章说明,别担心
参考文献
Arm® Cortex®-R52+ Processor Technical Reference Manual
相关文章:

Armv8-R AArch32 architecture概念学习
提示 该博客主要为个人学习,通过阅读官网手册整理而来(个人觉得阅读官网的英文文档非常有助于理解各个IP特性)。若有不对之处请参考参考文档,以官网文档为准。阅读该文章,可以先查看AArch64 Exception Model学习&…...

linux手动安装 vscode-server
适用场景 很多时候,我们需要在本机(比如windows)通过remote ssh访问远程服务器(一般是ubuntu),但经常出现 vscode 一直连不上远程服务器的情况,看一下 log: 这个log表示远程服务器…...

【Maven】009-Maven 简单父子工程搭建
【Maven】009-Maven 简单父子工程搭建 文章目录 【Maven】009-Maven 简单父子工程搭建一、需求说明1、结构2、第三方库 二、工程搭建1、父工程第一步:创建父工程第二步:引入公共依赖 lombok 和管理 hutool 依赖版本 2、公共子模块第一步:创建…...

verilog编程题
verilog编程题 文章目录 verilog编程题序列检测电路(状态机实现)分频电路计数器译码器选择器加减器触发器寄存器 序列检测电路(状态机实现) module Detect_101(input clk,input rst_n,input data,o…...

What is `addArgumentResolvers` does in `WebMvcConfigurer` ?
addArgumentResolvers 在SpringMVC框架中,主要用于向Spring容器注册自定义的参数解析器。在处理HTTP请求时,SpringMVC会使用这些参数解析器将请求中的数据(如查询参数、路径变量、表单数据等)转换并注入到控制器方法的参数中。 使…...

[NSSCTF Round#16 Basic]RCE但是没有完全RCE
RCE但是没有完全RCE wp 题目代码: 第一关 <?php error_reporting(0); highlight_file(__file__); include(level2.php); if (isset($_GET[md5_1]) && isset($_GET[md5_2])) {if ((string)$_GET[md5_1] ! (string)$_GET[md5_2] && md5($_GET[m…...

LTD营销枢纽(乐通达)成为杭州市中小企业数字化转型遴选服务商
为推进国家中小企业数字化转型城市试点建设,赋能中小企业信息化、智能化、新型工业化能力水平提升,杭州市经信局公开招募了具备高质量服务能力的中小企业数字化转型服务商。经过公开征集、专家评审等多个环节,LTD营销枢纽凭借其在数字化转型领…...
详细分析Mybatis中的<foreach>标签
目录 前言1. 基本语法2. Demo3. 实际例子 前言 对于Java专栏:Java专栏 对于Mybatis的相关知识可看我之前的文章:Mybatis从入门到精通(全) 对于其余Java框架可看我之前的文章:java框架 零基础从入门到精通的学习路线 附…...
linux-挂载Samba共享
linux-挂载Samba共享 1、linux服务器启动Samba共享服务 2、客户端电脑安装cifs-utils dnf install cifs-utils # 或 yum install cifs-utils3、挂载共享目录 # 创建挂目录 mkdir /share # 使用mount命令挂在共享目录,-t协议类型 -o用户名密码 共享目录访问地址 挂…...

Java入门IDEA基础语法
1:Java入门 1.1 Java简介 Java是什么: Java是一门非常优秀的计算机语言 语言:人与人交流沟通的表达方式 计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言 Java之父:詹姆斯高斯林(James Gosli…...

【小白专用】C# 连接 MySQL 数据库
C# – Mysql 数据库连接 1. 配置环境 #前提:电脑已安装Mysql服务; Visual Studio 安装Mysql依赖库: 工具 -> NuGet 包管理器 -> 管理解决方案的 NuGet程序包 —> 搜索, 安装Mysql.Data (Oracle); (安装成功后&…...
Django登录注销视图
Django在身份验证框架中包含了一些你可以直接使用的表单和视图。在大多数情况下,可以使用默认的Django认证视图。 Django在django.contrib.auth.views提供了以下基于类的视图来处理身份验证: LoginView:处理登录表单并登录用户 LogoutView&a…...
云原生到底是什么意思
云原生到底是什么意思? 引言 随着云计算技术的迅速发展,云原生成为了一个备受关注的话题。云原生不仅仅是一种新的软件架构,更是一种变革性的开发方法论。本文将深入解析云原生的意义、特点以及为什么它在现代软件开发中变得如此重要。 云…...

【银行测试】银行项目,信用卡业务测试+常问面试(三)
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 银行测试-信用卡业…...

AI大模型学习笔记之二:什么是 AI 大模型的训练和推理?
在人工智能(AI)的领域中,我们经常听到训练(Training) 和 推理(Inference) 这两个词汇,它们是构建强大 AI 模型的关键步骤。我们通过类比人类的学习过程来理解这两个概念,可以更加自然而生动地理…...

【MATLAB源码-第113期】基于matlab的孔雀优化算法(POA)机器人栅格路径规划,输出做短路径图和适应度曲线。
操作环境: MATLAB 2022a 1、算法描述 POA(孔雀优化算法)是一种基于孔雀羽毛开屏行为启发的优化算法。这种算法模仿孔雀通过展开其色彩斑斓的尾羽来吸引雌性的自然行为。在算法中,每个孔雀代表一个潜在的解决方案,而…...

iphone 5s的充电时序原理图纸,iPAD充电讲解
上一篇写了iphone 5的时序。那是电池供电的开机时序。iphone 5s也是差不多的过程,不说了。现在看iphone5s手机充电时候的时序。iphone5s充电比iphone5充电简单了很多。 首先是usb接口接到手机上,usb线连接到J7接口上。J7接口不只是接usb,还能…...

react基础入门
1,了解react react并不是一个MVC框架,他只是一个很强大的javaScript库,主要作用是用来构建UI界面。 react的核心是封装一个个大大小小的组件(小到一个按钮,大到一个页面)来构建复杂的UI界面,每…...

spring boot学习第八篇:通过spring boot、jedis实现秒单
参考:Redis实现分布式锁的7种方案 - 知乎 1、 准备数据库表,如下SQL表示库存表,有主键ID和库存数量字段 CREATE TABLE t_stock (id bigint(20) NOT NULL AUTO_INCREMENT,quantity bigint(20) NOT NULL,PRIMARY KEY (id) ) ENGINEInnoDB DEF…...
NineAi 新版AI系统网站源码 ChatGPT
简介: Nine AI.ChatGPT是基于ChatGPT开发的一个人工智能技术驱动的自然语言处理工具,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,真正像人类一样来聊天交流,甚至能完成撰写邮件、视频脚本、文案、翻译、代码,写论文等任务。 NineAi 新版A…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...

DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

android RelativeLayout布局
<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...
用鸿蒙HarmonyOS5实现中国象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...