ARM架构之异常与中断
作者:互联网
ARM920T架构中有7中运行模式:
1.用户模式(user)
2.快中断模式(fiq)
3.中断模式(irq)
4.超级用户模式(svc)
5.中止模式(abt)
6.系统模式(sys)
7.未定义模式(und)
ARM在处理异常和中断的时候都会到中断向量表中寻找相对应的异常与中断处理程序地址,通过跳转指令去执行相关的异常与中断的处理程序。
在ARM检测到异常或中断时,系统会进入相对应的运行模式,如中断进入IRQ模式,具体进入什么中断可以通过读取CPSR寄存器的值来判断。在进入相关的运行模式中,各个模式都有自己专属的寄存器,不同于通用寄存器,这些是只有进入该模式才有的寄存器,所以在进入异常中断处理程序之前,要保存除了专用寄存器以外的专用寄存器,在离开异常中断处理程序之后,要恢复保存的寄存器的值,并且恢复CPSR的值。
在相应的模式下,只有FIQ模式的专用寄存器有R8-R14,高达7个,其他的模式(除了系统和用户模式),专用寄存器只有R13(SP)和R14(LR),分别用来保存栈和返回地址。
在异常处理完之后,各个异常模式的返回地址也是不同的,要根据地址返回表设置返回地址
CPSR寄存中也有关于CPU对中断、快中断模式的设置bit位,如果要实现中断和快中断,必须将对应的bit设置为enable,否则CPU不允许中断和快中断模式,这个相当于中断总开关
CPSR寄存器BIT6、7是中断、快中断使能开关,清零则使能,置位则禁能。
M0-M4表示ARM模式,具体查表就可以知道。
高4位是有关寄存器运算的状态位,程序不用过分关心。
标签:架构,中断,模式,寄存器,异常,ARM,CPSR 来源: https://blog.csdn.net/qq_42719809/article/details/90342409