ARM CPU的工作模式:
1.User:该模式为Unprivileged modes,该模式下的程序不能访问受保护的系统资源,不能更改CPU工作模式。如果需要跳出该模式,程序需要抛出一个异常(Exception),使CPU进入"Exception"模式。"User"模式下可以使用的寄存器R0-R14,PC,CPSR。
2.System:该模式为Privileged modes,程序可以访问系统的任何资源,可以更改CPU工作模式。该模式是专用于操作系统的程序。该模式下,程序可使用的寄存器与"User"模式相同。
3.Exception:该模式为Privileged modes,程序可以访问系统的任何资源,可以更改CPU工作模式。Exception 专用于处理各种异常,每中异常都有一个固定的程序入口地址。"Exception"模式包含的各个异常及其功能如下:
3.1 Supervisor:操作系统的程序入口。操作系统的程序均在此模式下运行,并且操作的程序具有对硬件完全的访问权限。该模式下可以使用的寄存器:R0-R12,R13_svc,R14_svc,PC,CPSR,SPSR_svc。
3.2 Abort:存储空间访问异常处理入口。当存储空间的读写出现异常时,CPU直接跳入该入口进行异常处理。该模式下可以使用的寄存器:R0-R12,R13_abt,R14_abt,PC,CPSR,SPSR_abt。
3.3 Undefined:未定义。该模式下可以使用的寄存器:R0-R12,R13_und,R14_und,PC,CPSR,SPSR_und。
3.4 Interupt:一般中断处理入口。当CPU接收到有效中断时,直接进入中断处理程序入口。该模式下可以使用的寄存器:R0-R12,R13_irq,R14_irq,PC,CPSR,SPSR_irq。
3.5 Fast Interupt:快速中断处理入口。通常用于数据传输等实时性非常强的场合。该模式下可以使用的寄存器:R0-R7,R8_fiq-R14_fiq,PC,CPSR,SPSR_fiq。
注1:R13、R13_svc、R13_abt、R13_und、R13_irq、R13_fiq,它们是不同的物理寄存器(其余类似)。
注2:ARM CPU中,共有37个物理寄存器,只是在不同的CPU模式下,有对应的访问限制。这种做法目的是:当CPU切换模式时,可保持前一个模式的程序运行现场,减少数据压栈的时间。
注3:一般,R13_<mode>=Stack Pointer,R14_<mode>=Link Register。每个模式均维护一个独立的栈。每个模式均维护一个独立的程序套嵌关系。
|