深度探索嵌入式操作系统:从零开始设计、架构和开发
上QQ阅读APP看书,第一时间看更新

3.5 ARM920T处理器的7种工作模式

ARM920T处理器一共有7种工作模式,如下:

1)系统管理模式。

2)数据访问终止模式。

3)未定义指令终止模式。

4)外部中断模式。

5)快速中断模式。

6)系统模式。

7)用户模式。

以上这7种工作模式除用户模式外,其他6种模式都可以称为特权模式。ARM920T处理器用CPSR寄存器中几个二进制位来识别处理器的工作模式,等到介绍寄存器时,再详细讨论它及其中的二进制位。为什么要有这么多工作模式,并且还要分有没有特权?有一点很重要:就是为了保护系统资源,比如,一个行为不端的应用软件去访问硬件,但是由于它运行在用户模式下,并没有访问操作硬件的权力,处理器就能捕获这个错误。

(1)系统管理模式

系统管理模式,是一种特权模式,在这种模式下软件程序可以自由访问所有硬件资源,还可以自由切换到其他工作模式。当ARM920T处理器第一次上电时,就会自动进入这种模式,如果用户模式下软件执行SWI指令(即软中断指令),处理器执行完指令后就会切换到系统管理模式。这种工作模式通常用于执行操作系统内核代码。

(2)数据访问终止模式

当ARM920T处理器操作、访问数据时,数据的地址不存在,或者这个地址上的数据不允许被操作或者访问,这时处理器就会自动进入数据访问终止模式。它也是一种特权模式,在这种模式下程序可以自由访问所有硬件资源,也可以自由切换到其他工作模式。这种工作模式通常被操作系统用于虚拟内存管理。比如,对操作系统的内存空间进行保护,不允许应用程序访问系统代码数据的内存空间。

(3)未定义指令终止模式

当ARM920T处理器执行程序时,执行到一条未定义的指令,即它不认识这条指令时,处理器就会自动进入未定义指令终止模式。此工作模式也是一种特权模式,在这种模式下程序可以自由访问所有硬件资源,同时可以自由切换到其他工作模式。这种工作模式通常被系统用于支持软件仿真硬件协处理器。比如,用软件仿真硬件浮点计算单元,假如我们在程序指令数据中放一个处理器不认识的数据充当未定义的指令,处理器就自动切换这个工作模式,最后我们在这种模式下用软件模拟完成浮点计算任务。

(4)外部中断模式

当ARM920T处理器外部中断引脚有电子信号时,并且ARM920T处理器这时允许响应外部中断时,处理器就会自动进入外部中断模式。这种工作模式也是一种特权模式。在这种模式下,程序可以自由访问所有硬件资源,同时可以自由切换到其他工作模式。这种工作模式通常被系统用于普通的外部设备中断,以便和外部设备进行通信。

(5)快速中断模式

当ARM920T处理器快速中断引脚有电子信号时,并且ARM920T处理器这时允许响应快速中断时,处理器就会自动进入快速中断模式。这种工作模式也是一种特权模式,在这种模式下程序可以自由访问所有硬件资源,同时可以自由切换到其他工作模式。这种工作模式通常被系统用于高速的外部设备中断或者要求实时性响应的设备,以便处理器可以快速、实时地和外部设备进行通信。

(6)系统模式

系统模式除了有特权外,其他都和用户模式一样,但要切换到这种模式下,一定要在其他特权模式下,通过程序手动切换。这种工作模式有特权,所以这种模式下程序可以自由访问所有硬件资源,同时还可以自由切换到其他工作模式。通常用于运行操作系统服务程序,这种程序像普通的应用软件,但是它需要自由访问硬件和系统资源。这种工作模式就刚好派上用场了。

(7)用户模式

用户模式没有特权,不能访问和操作硬件资源,同样也不能自由地切换到其他特权模式,但是若出现下列三种情况,ARM920T处理器就会自动切换到其他特权模式。

1)数据访问和未定义指令异常。在用户模式下处理器操作数据和执行程序若遇到这两种情况,处理器会分别切换到数据访问终止模式或者未定义指令终止模式。

2)外部中断。在用户模式下处理器快速中断和外部中断引脚上有信号,并且处理器允许响应它们。处理器会分别切换到快速中断模式或者外部中断模式。

3)SWI指令。在用户模式下处理器若执行SWI软中断指令,处理器会切换到系统管理模式。

用户模式最大的优点是能有效地保护系统资源,防止恶意软件的不良行为。所以专门用于运行应用软件,使构建现代意义的操作系统成为可能。