ARM的7种工作模式
1.用户模式(USR):正常程序执行模式,不能直接切换到其他模式
2.系统模式(SYS):运行操作系统的特权任务,与用户模式类似,但具有可以直接切换到其他模式等特权
3.快速中断模式(FIQ):支持高速数据传输及通道处理,FIQ异常响应时进入此模式
4.中断模式(IRQ):用于通用中断处理,IRQ异常响应时进入此模式
5.。管理模式(SVC):操作系统保护模式,系统复位和软件中断响应时进入此模式(由系统调用执行软中断SWI命令触发)
6.数据访问中止模式(ABT):用于支持虚拟内存和/或存储器保护,当数据或指令预取终止时进入该模式。
7.未定义模式(UND):支持硬件协处理器的软件仿真,未定义指令执行时进入此模式
除用户模式外,其余6种工作模式都属于特权模式。也就是可以分为两类:用户模式、特权模式。
进入特权模式是为了处理中断、异常、或者访问被保护的系统资源
除了系统模式和用户模式以外的其余5种模式称为异常模式,也就是可以分为三类:用户模式、系统模式、异常模式。
硬件权限级别:系统模式 》 异常模式 》 用户模式
大多数程序运行于用户模式
2种中断模式区别:
快速中断模式(FIQ--First Interrupt Request):当一个高优先级中断(FIQ)产生时会进入这种模式。
外部中断模式(IRQ--Interrupt Request):当一个低优先级(Normal)中断产生时进入这种模式。
区别FIQ和IRQ的区别---FIQ模式必须尽快处理,处理结束后离开这个模式;IRQ模式可以被FIQ模式中断,但IRQ不能中断FIQ模式;为使FIQ模式响应更快,FIQ模式具有更多的影子(Shadow)寄存器(硬件自动完成相应寄存器的数据备份)。ARM的FIQ模式提供了更多的banked寄存器,r8到r14还有SPSR,而IRQ模式就没有那么多,R8,R9,R10,R11,R12对应的banked的寄存器就没有,这就意味着在ARM的IRQ模式下,中断处理程序自己要保存R8到R12这几个寄存器,然后退出中断处理时程序要恢复这几个寄存器,而FIQ模式由于这几个寄存器都有banked寄存器,模式切换时CPU自动保存这些值到banked寄存器,退出FIQ模式时自动恢复,所以这个过程FIQ比IRQ快。
对于Cortex A系列的ARM处理器来说,还有一种特有的Minitor模式:
Monitor模式:是为了安全而扩展出的用于执行安全监控代码的模式,也是一种他特权模式。