Cortex-M3 操作模式与特权等级

Cortex-M3支持2个模式(Handler模式、线程模式)和2个特权等级(特权级、非特权级)。

  • 当处理器处在线程模式时,既可以使用特权级,也可以使用非特权级。
  • 当处理器处在Handler模式时,总是特权级的。

Cortex-M3 操作模式与特权等级_第1张图片

 

【操作模式与特权等级状态转换图】

Cortex-M3 操作模式与特权等级_第2张图片

 

【线程模式特权级 与 Handler模式特权级 相互切换】

Cortex-M3 操作模式与特权等级_第3张图片

 

【线程模式非特权级 与 线程模式特权级&Handler模式特权级 切换】

Cortex-M3 操作模式与特权等级_第4张图片

 

  • 芯片复位后,进入线程模式特权级。
  • 线程模式特权级与Handler模式特权级之间通过异常/中断的进出来切换。
  • 在特权级下的代码可以通过置位CONTROL[0]来进入非特权级。
  • Handler模式永远都是特权级的。不管是任何原因产生了任何异常,处理器都将以特权级来运行其服务例程,异常返回后,系统将回到产生异常时所处的级别。
  • Handler模式通过异常/中断进入,退出即返回线程模式。从Handler模式异常返回时,也可以通过置位CONTROL[0](非特权级的线程模式)或清零CONTROL[0](特权级的线程模式)来改变返回线程模式的级别。
  • 线程模式非特权级下的代码不能再试图修改CONTROL[0]来回到线程模式特权级。它必须通过一个异常进入到Handler模式,由那个异常Handler处理来修改,清零CONTROL[0]为线程模式特权级,才能在返回到线程模式后拿到特权级。

 


 

参考摘录:

《Cortex-M内核系列和STM32-讲座2教程.pdf》

《ARM Cortex-M3权威指南.pdf》

转载于:https://www.cnblogs.com/utank/p/11249228.html

你可能感兴趣的:(嵌入式)