Cortex-M7核心寄存器

参考内容:Cortex-M7编程手册


软件执行的处理器模式和权限级别

Processor mode and privilege levels for software execution

处理器模式

线程模式Thread mode:执行应用程序软件。处理器在 reset 中退出时进入 Thread 模式。

异常模式Handler mode:处理异常。处理器在完成所有异常处理后返回到 Thread 模式。

软件执行的权限级别

非特权Unprivileged
• 使用 MSR 和 MRS 指令对系统寄存器的访问受到限制,并且不能使用 CPS 指令来屏蔽中断。
• 无法访问系统计时器、NVIC 或系统控制块。
• 可能限制了对内存或外围设备的访问。
非特权软件在非特权级别执行。

特权Privileged:该软件可以使用所有指令并可以访问所有资源。特权软件在特权级别执行。

在 Thread 模式下,CONTROL 寄存器决定软件执行是特权还是无特权。
在这里插入图片描述
在这里插入图片描述

在 Handler 模式下,软件执行始终具有特权

只有特权软件才能写入 CONTROL 寄存器,以更改在 Thread 模式下执行软件的权限级别。非特权软件可以使用 SVC 指令进行监督程序调用,以将控制权转移给特权软件


栈Stacks

处理器使用完整的降序栈。
处理器实现了两个栈,主栈和进程栈,每个栈都有一个指针保存在独立的寄存器中,就是有两个栈指针MSP和PSP

堆栈指针 (SP) 是寄存器 R13
在 Thread 模式下,CONTROL 寄存器的 bit[1] 表示要使用的堆栈指针:
• 0 = 主堆栈指针 (MSP)。这是复位值。
• 1 = 进程堆栈指针 (PSP)
复位时,处理器使用地址 0x00000000 的值加载 MSP

在 Thread 模式下,CONTROL 寄存器决定处理器是使用主堆栈还是进程堆栈
在这里插入图片描述
在这里插入图片描述

在 Handler 模式下,处理器始终使用主堆栈。

在这里插入图片描述

总结:

处理器模式 用于 特权等级 使用栈指针
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值