ARMV7-M 的工作模式和特权等级

照例先上两段原文:

02d7e4d08f70426c8cbb7074ae387bf0.png

不是人话的翻译:

线程模式(Thread mode)是ARMV7-M 的复位后的运行模式。线程模式又分为“用户等级”(直译“无特权级”,unprivileged)和“有特权级”(privileged)。

线程模式下可以使用SVC指令,来触发 SVCall 例外,该例外能将运行模式改为“管理者模式”(Hander mode);也可以直接处理系统访问和控制。

所有的例外,都运行在管理者模式。

ARM内核设计了 SVCall 例外, 可以用来代替应用程序管理资源, 例如外设交互、软件栈的内存管理和分配

faf02f61f8d74022bae71146b7917179.png

CONTROL.nPRIV 用来配置,线程模式下内核的特权等级。

管理者模式下,永远处于“有特权级”

以下为是人话的翻译:

ARMV7-M 有两种运行模式和两种特权等级

ARMV7-M的两种运行模式

线程模式:系统复位(进入复位例外)后处于该模式。

管理者模式:进入除了“复位例外”的其它例外后,处于该模式。

ARMV7-M 的两种特权等级,“有特权级”和“无特权级”,通过 CONTROL.nPRIV 或 运行模式控制:

有特权级:只要进入例外,将处于该等级。此时可以执行所有指令,访问所有寄存器。

无特权级:线程模式下,CONTROL.nPRIV 写 1,将处于该等级。此时执行指令和访问寄存器,都会受限。比如,该等级下 CONTROL.nPRIV 为只读(写操作会被忽略),即无法通过将 CONTROL.nPRIV 写0来恢复“有特权级”。

管理者模式下,内核特权等级与CONTROL.nPRIV无关,将永远处于“有特权级”。

当系统处于“无特权级”状态时,可以通过SVC指令,触发 SVCall 中断(例外),就可以进入“管理者模式”

运行模式CONTROL.nPRIV特权等级备注
线程模式0有特权级系统启动后默认状态
线程模式1无特权级
管理者模0有特权级
管理者模1有特权级

参考资料:

DDI0403E_e_armv7m_arm.pdf

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

十三香炖猪肉

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值