ARM基础----STM32处理器操作模式

Cortex-M处理器操作模式、特权等级和栈指针

操作模式

  • 处理模式:执行中断服务程序等异常处理,处理器具有特权访问等级
  • 线程模式:执行普通的应用程序代码,处理器处于的访问特权等级不一定
    如果想完成线程模式下的访问等级由非特权访问等级,变为特权访问等级需要使用异常机制
    在这里插入图片描述

栈指针

栈指针分为MSP主栈指针和PSP进程栈指针,用到FreeRTOS等操作系统时才会用到PSP。

CONTROL寄存器

栈指针的选择和线程模式的访问等级依靠CONTROL寄存器实现。
功能
CONTROL[0]nPRIV定义线程模式特权等级
0 = 特权级的线程模式(默认)
1 = 用户级的线程模式
CONTROL[1]SPSEL定义栈指针
0 = 选择主堆栈指针MSP(默认)
1 = 选择进程堆栈指针PSP

Handler处理模式永远都是特权级的,Handler处理模式下只允许使用MSP。

异常压栈时的SP指针

线程模式下,使用MSP,压栈时使用MSP.
线程模式下,使用PSP,压栈时使用PSP.
处理模式下,全部使用PSP,因此嵌套中断的压栈都是使用PSP

在这里插入图片描述

Cortex-A 处理器运行模型

运行模型

USR用户模式,用户程序运行在User模式下,非特权模式拥有受限的系统资源访问权限
FIQ快速中断模式,发生FIQ中断时的进入这个模式,拥有更高的响应等级和更低的延迟
IRQ一般中断异模式,发生IRQ中断时进入这个模式
SVC管理员模式,操作系统内核通常运行在该模式下,应用程序发生系统调用svc指令进入这个模式
Abort(ABT)异常终止模式,当发生数据访问异常的时候进入这个模式
System(SYS)系统模式,特权模式,一般用来设置USR模式的寄存器
Undefined(UND)未定义指令模式,执行未定义指令时进入这个模式。
Monitor(MON)监视模式,用于安全扩展模式,比如TF-A
Hyp虚拟化扩展的处理器才有该模式

寄存器组

在这里插入图片描述

  • 除了FIQ模式,其它模式共用R0-R12,FIQ有自己R8-R12,所以比IRQ模式更快。

  • 处理器模式是由状态寄存器CPSR的M域来控制的。对于用户模式而言,是没有权限操作CPSR寄存器的M域的,只能通过svc指令进入到SVC模式。
    在这里插入图片描述

  • 系统模式和用户模式共享寄存器视图,可以在处理器启动时通过设置系统模式的SP寄存器来达到设置用户模式堆栈的目的,要设置用户模式的其他寄存器也可以这样操作

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值