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

2.2 CM3处理器的工作模式及状态

不同的应用会有不同的模式,不同的模式解决不同的问题,模式代表着一组特定的应用或某类问题的解决方案。CM3中引入模式是为了区别普通应用程序代码与异常程序代码。

CM3中提供了一种存储器访问的保护机制,使得普通应用程序代码不能意外或恶意地执行涉及要害的操作,因此处理器为程序赋予了两种权限,分别为特权级和用户级。特权执行可以访问所有资源。非特权执行对有些资源的访问受到限制或不允许访问。

CM3下的工作模式和权限如表2-1所示。工作模式转换图如图2-3所示。

表2-1 CM3下的工作模式和权限

图2-3 工作模式转换图

在CM3运行主程序代码(线程模式)时,既可以使用特权级,又可以使用用户级,但是异常程序代码必须在特权级下执行。复位后,处理器默认进入线程模式特权级访问。在特权级下,程序可以访问所有存储器,并且可以执行所有指令,但若有存储器保护单元(MPU),则MPU规定的“禁地”不能访问。特权级下的程序功能比用户级多一些。一旦进入用户级,用户级的程序不能简单地试图改写控制寄存器(详见2.3节)就返回特权级,它必须先执行一条系统调用指令(SVC),这会触发SVC异常(详见2.8节),然后由异常程序代码(通常是操作系统的一部分)接管,如果批准进入,则异常程序代码修改CONTROL寄存器,只有这样才能在用户级的线程模式下重新返回特权级。

事实上,从用户级到特权级的唯一途径就是异常,如果在程序执行过程中触发了一个异常,则处理器先切换到特权级,并且在异常程序代码执行完毕退出时返回先前的状态,也可以手工指定返回的状态。

通过引入特权级和用户级,就能够在硬件上限制某些不受信任的或尚未调试好的程序,禁止它们随意配置重要的寄存器,因而系统的可靠性得到了提高。如果配置了MPU,则它还可以作为特权机制的补充——保护关键的存储区域不被破坏,这些区域通常是操作系统所在区域。举例来说,操作系统的内核通常都是在特权级下执行的,所有未被MP U禁止的存储器都可以访问。在操作系统开启了一个应用程序后,通常都会让它在用户级下执行,从而使操作系统不会因某个程序的崩溃或恶意破坏而受损。

CM3处理器还有Thumb和调试两种状态。Thumb状态是16位和32位半字对齐的Thumb与Thumb-2指令的正常执行状态。进行调试时,处理器会进入调试状态。

CM3处理器的工作模式、权限等的划分,使得它运行时更加安全,不会因为一些小的失误导致整个系统崩溃。此外,CM3处理器还专门配置了MPU,可以控制多片内存区域的读/写权限,从而有效地防止应用程序的非法访问。 pwZ6yixKtKe3EqZ7uHtYsURGVde5bQXGCjzetwSCGadX8osKuDoMvVUX11rOUnqt

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

打开