|
ARM处理器工作状态
自从ARM7TDMI核产生以后,体系结构具有T变种的ARM处理核可工作在以下两种状态:
ARM状态。32位,ARM状态下执行字对齐的32位ARM指令。
Thumb状态。16位,Thumb状态下执行半字对齐的16位Thumb指令。在Thumb在程序执行的过程中,处理器可在2种状态下切换。需要强调的是:
ARM和Thumb之间状态切换不影响处理器的模式或寄存器的内容。
ARM指令集和Thumb指令集都有相应的状态切换命令。
ARM处理器在开始执行代码时,只能处于ARM状态。
ARM处理器在2种工作状态之间切换的方法为:
进入Thumb状态。当操作数寄存器Rm的状态位bit[0]为1时,执行“BX Rm”指令进入Thumb状态。如果处理器在Thumb状态下进入异常,则当异常处理返回时,自动切换到Thumb状态。
进入ARM状态。当操作数寄存器Rm的状态位bit[0]为0时,执行“BX Rm”指令进入ARM状态。如果处理器进行异常处理,在此情况下,把PC放入异常模式链接寄存器LR中,从异常向量地址开始执行,把PC放入异常链接寄存器LR中,从异常向量地址开始执行,也可进入ARM状态。
ARM处理器工作模式
CPSR的低5位用于用户定义当前操作模式。ARM处理器共支持表所列的7种处理器模式。在表给出了CPSR[4:0]与7种工作模式的关系以及各种模式的解释。在软件控制、外部中断或异常处理器工作模式的改变。
CPSR[4:0] |
模式 |
用途 |
可访问的寄存器 |
10000 |
用户 |
正常用户模式,程序正常执行模式 |
PC、R14~R0、CPSR |
10001 |
FIQ |
处理快速中断,支持高速数据传送或处理通道 |
PC、R14_fiq~R8_fiq、R7~R0、CPSR、SPSR_fiq |
10010 |
IRQ |
处理普通中断 |
PC、R14_irq~R13_fiq、R12~R0、CPSR、SPSR_irq |
10011 |
SVC |
操作系统保护模式,处理软件中断 |
PC、R14_svc~R13_svc、R12~R0、CPSR、SPSR_svc |
10111 |
中止 |
处理存储器故障、实现虚拟存储器和存储器保护 |
PC、R14_abt~R13_abt、R12~R0、CPSR、SPSR_abt |
11011 |
未定义 |
处理未定义的指令陷阱,支持硬件协处理器的软件仿真 |
PC、R14_und~R13_und、R12~R0、CPSR、SPSR_und |
11111 |
系统 |
运行特权操作系统任务 |
PC、R14-R0、CPSR |
大多数用户程序运行在用户模式下,这时应用程序不能访问一些受操作系统保护的系统资源,也不能改变模式。应用程序也不能直接进行处理器模式的切换,除非异常发生。这允许操作系统来控制系统资源的使用,适合编写操作系统,可用来控制系统资源的使用。
除用户模式之外的其他6种模式称为特权模式。特权操作模式主要处理异常和监控调用,它们可自由地访问系统资源和改变模式。特权模式中除系统模式外的5种模式又称为异常模式。即FIQ、IRQ、SVC、中止、未定义。
因此,也认为特权模式由异常模式和系统模式组成。
异常模式主要用于处理中断和异常。当应用程序发生异常中断时,处理器进入相应的异常模式。在每一种异常模式中,都有某些附加的影子寄存器组,供相应的异常处理程序使用。这样就可以保证在进入异常模式时,用户模式下的寄存器不被破坏,以避免异常出现时,用户模式的状态不可靠。
系统模式仅在ARM体系结构V4及以上版本存在。系统模式不是通过异常过程进入的,它与用户模式有完全相同的寄存器。这样操作系统的任务可访问所有需要的系统资源,也可使用用户模式的寄存器组,但不使用异常模式下相应的寄存器组,因此避免了使用与异常模式相关的附加寄存器,进而确保当任何异常出现时,不会使任务的状态不可靠或被破坏。系统模式属于特权模式,因此不受用户模式的限制。
不是所有ARM处理器都支持上述的所有操作模式,而且有些还支持“26位”模式,以便与较早的ARM兼容,这主要与不同体系结构的版本定义内容相关。
更多嵌入式学习资料下载请点击www.sunplusedu.com访问凌阳教育官网,获得更多嵌入式学习资料下载。