[Classic AUTOSAR学习] ARM Cortex-M处理器系列的访问等级/处理模式

汽车安全 2个月前 admin
158 0 0

在处理器的安全方面,我们在ARM Cortex-M处理器系列上需要了解特权/用户模式,这个机制为访问不同资源提供了不同的访问控制,因此我们也可以使用特权/用户访问等级来理解,以避免对Cortex-M处理器的两种处理模式产生混淆。

访问等级

Cortex-M系列处理器提供两种代码执行等级,也即访问等级,分为特权等级与非特权等级。

非特权模式限制了对某些系统寄存器以及受保护的内存区域的访问。当尝试在非特权等级下,去访问这些受限资源时,处理器会忽略访问请求或者产生异常。

特权访问等级可以访问所有资源以及分区。

处理模式

Cortex-M系列处理器有两种模式:Thread Mode以及Handler Mode。

Thread Mode是程序运行所处的普通模式,Thread Mode既可以使用特权等级或者非特权等级的访问权限,处理器启动运行时即运行在Thread Mode,且拥有特权等级。[1]

Handler Mode是指处理器执行异常处理(或者是中断服务)时所在模式。[2]在这个模式当中,代码可以操作系统资源以及受保护内存分区。Handler Mode一定拥有特权等级。

[Classic AUTOSAR学习] ARM Cortex-M处理器系列的访问等级/处理模式

https://www.iotality.com/armcm-access-levels/

例子

系统使用SysTick作为周期任务的时钟参考,如果希望在运行时修改时钟,那么你就需要修改SysTick控制寄存器,如果是在非特权模式进行操作,会产生错误。

另外一个用例是,当你希望对某些内存分区进行保护时,你需要用到MPU特性以及特权等级来进行控制。Cortex-M的MPU介绍可阅读:

KimChan:[Classic AUTOSAR学习]以S32G为例,基于Cortex-M7的内存保护单元(MPU)2 赞同 · 0 评论文章

特权等级的控制

[Classic AUTOSAR学习] ARM Cortex-M处理器系列的访问等级/处理模式

对于特权等级的控制,对应于CONTROL寄存器的bit 0。处理器启动时PRIV为0,即特权等级,设置为1后进入非特权等级。但是此时无法在此状态下设置0回到特权等级,需要先进入Handler模式,然后才能设置PRIV并返回特权等级。

AUTOSAR OS

Trusted Application运行在特权等级的Thread Mode下,当然,它的中断和钩子函数也都运行在这个模式下。在执行这些任务,中断等的时候,MPU是不工作的。

对于Non-Trusted Application,是运行在非特权等级的Thread Mode下,但是它的中断和钩子函数等会运行在特权等级的Handler Mode下。这些情况下,MPU是使能的。

参考

  1. ^Introduction to Cortex-M3/M4 M0+ Security (Privileged/Non-Privileged Access Level) http://www.vlsiip.com/socsec/socsec_0004.html

  2. ^Understanding Access Levels – ARM Cortex-M https://www.iotality.com/armcm-access-levels/


原文始发于微信公众号(车载嵌入式软件开发):[Classic AUTOSAR学习] ARM Cortex-M处理器系列的访问等级/处理模式

版权声明:admin 发表于 2022年12月1日 上午9:56。
转载请注明:[Classic AUTOSAR学习] ARM Cortex-M处理器系列的访问等级/处理模式 | CTF导航

相关文章

暂无评论

暂无评论...