×
嵌入式 > 嵌入式开发 > 详情

ARM中断异常及其处理器模式

发布时间:2020-08-26 发布时间:
|
ARM 处理器核有七种异常中断:

1.复位(包括上电)

2.FIQ(快速中断)

3.IRQ(一般中断)

4.SWI(软件中断)

5.预取址中止

6.数据中止

7.未定义指令异常

ARM核发生以上异常时,便会进入相应的处理器模式进行相应的异常处理。

其中ARM的处理器模式有以下7种:

1.管理模式(SVC):Supervisor也是处理器上电默认的运行模式,可由复位(包括上电)和SWI(软件中断)触发进入

2.快速中断模式(FIQ):由快速中断异常异常触发进入进行相应的中断处理子程序

3.一般中断模式(IRQ):由一般中断异常触发进入进行相应的中断处理

4.中止模式(abort):由预取址中止异常和数据中止异常触发进入的

5.未定义模式:由未定义指令异常触发进入

6.用户模式(user):用户软件修改CPSR进入

7.系统模式(system):用户软件修改CPSR进入

由此可见,处理器模式是相应的处理器异常的处理模式,但是用户模式和系统模式并不能由异常触发进入,而必须是由软件修改CPSR的值进入的。此外系统模式和用户模式共用15个寄存器和CPSR。总结处理器异常和处理器模式的关系为:7 TO 5。

当一个异常触发触发模式的改变时,CPU内核自动(硬件)做如下动作:

1.把CPSR保存到相应的异常模式下的SPSR(除了系统模式和用户模式没有自己的SPSR)

2.把PC保存到相应的异常模式下的LR(各个模式都有自己的LR寄存器,系统模式和用户模式共用)

3.设置CPSR为相应的异常模式。

4.设置PC为相应的异常处理程序的入口地址。

值得注意的是所有的处理器模式都可以通过修改CPSR来进入(即使没有发生处理器异常),但是仅仅是进入模式而已,并没有发生上面的三个步骤即:把CPSR保存到SPSR中,把PC保存到LR中,设置PC为相应的异常处理向量,这些都没有发生,而仅仅是处于该模式而已。这可以用来在系统初始化时给各个模式的堆栈指针(R13)进行初始化.



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
scsi接口