购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3 操作模式和特权级别

Cortex-M3 有两种操作模式,分别是线程模式和处理器模式,它们与ARM7TDM的操作模式有很大的区别。这两个模式的访问方式为特权和非特权方式,可以在不牺牲应用程序安全的前提下实现对复杂的开放式系统的执行。

线程模式:用于执行应用软件。处理器在退出复位时进入线程模式。该模式是常用的工作模式。它同时支持享有特权的代码和没有特权的代码。

处理器模式(handler mode):用于处理异常。处理器在完成异常处理后退回线程模式。该模式中的所有代码都享有特权。

软件执行的特权级别分别为非特权等级(或者称为用户等级)和特权等级。

非特权:对MSR和MRS指令的有限访问权限,且不能执行CPS指令;不能访问系统定时器、NVIC、系统控制模块;可能限制对存储器或外设的访问。

特权:软件可使用所有指令,并可访问全部资源。

如图 1-2 所示是操作模式与特权等级之间的切换过程。

图 1-2 操作模式与特权等级之间的切换过程

特权级下的代码可以通过置位 CONTROL[0]来进入用户级。不管是由于什么原因产生了什么异常,处理器都将用特权级来运行其服务例程,异常返回后,处理器将回到产生异常时所处的级别。用户级下的代码不能再通过试图修改CONTROL[0]来回到特权等级。它必须通过SVC指令实现一个异常处理器模式,由这个异常处理器模式来修改 CONTROL[0],然后才能在返回线程模式后拿到特权等级。 CvhklfBVZ0FSL1tdI0cKoZiO/4EVG37FPizZ/z53sZ6J3mQ84w8g8caMH5toMgyl

点击中间区域
呼出菜单
上一章
目录
下一章
×