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进行开发时,可以在链接脚本中看到多个栈的定义:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

NW嵌入式开发

感谢您的支持,让我们一起进步!

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

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

打赏作者

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

抵扣说明:

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

余额充值