ARM有7种处理器模式,其由CPSR的[4:0]位决定。
用户模USR:正常程序动行的工作模式。只能读CPSR不能写
系统模式sys:与用户模式共用一套寄存器。用于支持操作系统的特权任务模式,但它具有直接切换到其它模式的特权。
管理模式svc:操作系统的特权任务模式。系统复位和软件中断时才进入这个模式
中止abt:在ARM7中没多大做用.另外还有未定义und中断(irq),快速中断(fiq)
除用户模式外都 是特权模式。吸有在特权模式下才允许对当前的程序状态寄存器的反有控制位直接进行读写访问。
特权模式中除系统模式外都是异常模式。异常发生时总是切换到ARM状态。
何时近入到异常模式
1 复位进入管理模式,操作系统内核通常处于此种模式
2访问失败则进入中止模式
3 遇到不支持的指令时,进入未定义
4中断模式与快速中断模式分别对ARM外理器2种不同等级别的中断响应
特权模式可以访问所有内部资源
用户模式与作系统模式不能由异常进入必须通过修改CPSR才能实现。
ARM处理器工作模式
处理器工作模式 |
特权模式 |
异常模式 |
说明 |
用户(user)模式 |
|
|
用户程序运行模式 |
系统(system)模式 |
该组模式下可以任意访问系统资源 |
|
运行特权级的操作系统任务 |
一般中断(IRQ)模式 |
通常由系统异常状态切换进该组模式 |
普通中断模式 |
|
快速中断(FIQ)模式 |
快速中断模式 |
||
管理(supervisor)模式 |
提供操作系统使用的一种保护模式,swi命令状态 |
||
中止(abort)模式 |
虚拟内存管理和内存数据访问保护 |
||
未定义指令终止(undefined)模式 |
支持通过软件仿真硬件的协处理 |
CPU的模式可以简单的理解为当前CPU的工作状态,比如:当前操作系统正在执行用户程序,那么当前CPU工作在用户模式,这时网卡上有数据到达,产生中断信号,CPU自动切换到一般中断模式下处理网卡数据(普通应用程序没有权限直接访问硬件),处理完网卡数据,返回到用户模式下继续执行用户程序。
特权模式
除用户模式外,其它模式均为特权模式(Privileged Modes)。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。
异常模式
特权模式中除系统(system)模式之外的其他5种模式又统称为异常模式。它们除了可以通过在特权下的程序切换进入外,也可以由特定的异常进入。比如硬件产生中断信号进入中断异常模式,读取没有权限数据进入中止异常模式,执行未定义指令时进入未定义指令中止异常模式。其中管理模式也称为超级用户模式,是为操作系统提供软中断的特有模式,正是由于有了软中断,用户程序才可以通过系统调用切换到管理模式。
(1)用户模式:
用户模式是用户程序的工作模式,它运行在操作系统的用户态,它没有权限去操作其它硬件资源,只能执行处理自己的数据,也不能切换到其它模式下,要想访问硬件资源或切换到其它模式只能通过软中断或产生异常。
(2)系统模式:
系统模式是特权模式,不受用户模式的限制。用户模式和系统模式共用一套寄存器,操作系统在该模式下可以方便的访问用户模式的寄存器,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。
(3)一般中断模式:
一般中断模式也叫普通中断模式,用于处理一般的中断请求,通常在硬件产生中断信号之后自动进入该模式,该模式为特权模式,可以自由访问系统硬件资源。
(4)快速中断模式:
快速中断模式是相对一般中断模式而言的,它是用来处理对时间要求比较紧急的中断请求,主要用于高速数据传输及通道处理中。
(5)管理模式:
管理模式是CPU上电后默认模式,因此在该模式下主要用来做系统的初始化,软中断处理也在该模式下,当用户模式下的用户程序请求使用硬件资源时通过软件中断进入该模式。
(6)终止模式:
中止模式用于支持虚拟内存或存储器保护,当用户程序访问非法地址,没有权限读取的内存地址时,会进入该模式,linux下编程时经常出现的segment fault通常都是在该模式下抛出返回的。
(7)未定义模式:
未定义模式用于支持硬件协处理器的软件仿真,CPU在指令的译码阶段不能识别该指令操作时,会进入未定义模式。
ARM920T支持的7种处理器操作模式:
.用户模式(user模式),运行应用的普通模式。
.快速中断模式(fiq模式),用于支持高速数据传输或通道处理。
.中断模式(irq模式),用于普通中断处理。
.超级用户模式(svc模式),操作系统的保护模式
.异常中断模式(abt模式),输入数据后登入或预取异常中断指令
.系统模式(sys模式),是操作系统使用的一个有特权的用户模式
.未定义模式(und模式),执行了未定义指令时进入该模式
处理器的模式可以通过软件控制进行切换,也可以通过外部中断或是异常处理过程进行切换。
7种模式中除用户模式外其它的6种处理器模式称为Privileged Modes(特权模式)。
用户模式:大多数用户程序运行在用户模式,此模式下程序不能够访问一些受操作系统保护的系统资源,应用程序也不能直接进行处理器模式的切换。
特权模式:程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。
6种特权模式中除系统模式外,其他5种特权模式又称之为异常模式。
异常模式:当应用程序发生异常中断时,处理器进入相应的异常模式。每一种异常模式都有一组寄存器,供相应的异常处理程序使用,这样可保证进入异常模式时,用户模式下的寄存器(保存了程序运行状态)不被破坏。
系统模式:系统模式不是通过异常过程进入的,它和用户模式具有完全一样的寄存器。但是系统模式属于特权模式,可以访问所有的系统资源,也可以直接进行处理器模式的切换。它主要供操作系统任务使用。