当前位置: 首页 > news >正文

Cortex-A7的运行模式和寄存器组详解

0 参考资料

ARM Cortex-A(armV7)编程手册V4.0.pdf
ARM体系结构与编程第2

2 Cortex-A7运行模式

2.1 运行模式

Cortex-A7共有9种运行模式,如下图所示:
在这里插入图片描述
除了用户模式之外其它模式均属于特权模式,在特权模式下处理器可以访问所有系统资源,也可以任意切换运行模式。
注:

在新的ARMv7架构中,加入了TrustZone安全拓展,因此新加入了一种运行模式:Monitor模式,此外,新的处理器架构还能支持虚拟化拓展,加入了另外一种运行模式:Hyp模式。

2.2 特权级别

每个工作模式都具有自己的特权级别。特权定义如下:
在这里插入图片描述
PL0:在用户模式下执行的应用软件级操作的特权级别。软件在用户模式下执行的操作被描述为无特权操作。在PL0上执行的操作只能进行非特权内存访问。
PL1:除用户模式和Hyp模式外的所有模式下的软件执行均在PL1。通常,操作系统在PL1执行。一般来说,操作系统将在PL1模式及PL0(用户模式)下执行应用程序。
PL2:Hyp模式通常由管理程序使用,如果实施了虚拟化扩展,管理程序将在PL2执行(Hyp模式)。管理程序将控制并启用多个操作系统共存并在同一处理器上执行。
各个模式的特权级定义下图:
在这里插入图片描述

2.3 运行模式设置寄存器

运行模式可以通过CPSR寄存器设置,CPSR寄存器定义如下:
在这里插入图片描述
最后5bit用来设置运行模式:
在这里插入图片描述
运行模式对应的寄存器值如下(红框标记处):
在这里插入图片描述

2 Cortex-A7寄存器组

Cortex-A7包含16个32位通用寄存器(R0-R15),其中R13是SP(栈指针)、R14是LR(程序链接寄存器)、R15是PC(程序计数器)。如下图所示:
在这里插入图片描述
Cortex-A7共有9种运行模式,这9种运行模式共用了一些寄存器,也有些是模式独占的寄存器。下图被标记为“Banked”的寄存器只有在对应的运行模式下才可见,浅色寄存器表示和第一列共用同一个物理寄存器。
在这里插入图片描述
我们可以看到,除了用户模式及系统模式共用SP、LR,其余模式均有自己独立的SP、LR。这也是为什么基于Cortex-A7进行开发时,可以在链接脚本中看到多个栈的定义:
在这里插入图片描述


http://www.mrgr.cn/news/18485.html

相关文章:

  • 实战项目-快速实战-springboot dataway
  • 相机常见名词详解
  • String和StringBuffer互转
  • 【C语言必学知识点六】自定义类型——内存对齐与位段
  • 《系统架构设计师教程(第2版)》第17章-通信系统架构设计理论与实践-02-广域网网络架构
  • 给你的头像加个口罩网站html源码
  • MySQL数据库管理系统下载安装
  • 认知杂谈29
  • AI耳机是不是好赛道
  • 第J2周:ResNet50V2算法实战与解析(pytorch版)
  • 使用SymbolGlyph和SymbolSpan在HarmonyOS中实现高级图标效果
  • 技术献文-小白如何正确使用Linux(3-高级篇)
  • Python对音频进行频谱分析
  • 美团代付支持多模板全开源多种支付通道 多模版三合一源码附教程
  • 【算法】-贪心算法
  • Django 第十三课 -- Form 组件
  • 基于yolov8的路面垃圾检测系统python源码+onnx模型+评估指标曲线+精美GUI界面
  • SUSE Linux下编译Nginx报错:recipe for target ‘install‘ failed
  • 团队动力之社会比较理论
  • 推荐大模型面临的严峻挑战