首页 理论教育 ARM异常种类、中断向量和优先级

ARM异常种类、中断向量和优先级

时间:2023-11-23 理论教育 版权反馈
【摘要】:ARM 的异常中断向量表2.5 中断向量表中指定了各异常中断与其处理程序的对应关系,它通常存放在存储地址的低端。在ARM 体系结构中,异常中断向量表的大小为32 字节。通过这两种指令,程序将跳转到相应的异常中断处理程序处执行。在ARM 中通过给各异常中断赋予一定的优先级来实现这种处理次序。各异常中断的处理优先级见表2.5。

ARM异常种类、中断向量和优先级

在ARM 体系结构中,异常中断用来处理软件中断、未定义指令陷阱(它不是真正的“意外”事件)及系统复位功能(它在逻辑上发生在程序执行前而不是在程序执行中,尽管处理器在运行中可能再次复位)和外部事件,这些“不正常”事件都被划归“异常”,因为在处理器的控制机制中,它们都使用同样的流程进行异常处理。 其异常种类、异常中断向量优先级见表2.5。

表2.5 ARM 体系中的异常类型、优先级及向量地址

续表

(1)ARM 异常种类

异常的种类见表2.5,复位异常、未定义的指令异常、软件中断异常、指令预取中止异常、数据访问中止异常、外部中断请求及快速中断请求,共七种不同类型的异常中断。

(2)ARM 的异常中断向量

表2.5 中断向量表中指定了各异常中断与其处理程序的对应关系,它通常存放在存储地址的低端。 在ARM 体系结构中,异常中断向量表的大小为32 字节。 其中,每个异常中断占据4 个字节,保留了4 个字节空间。 每个异常中断对应的中断向量表的4 个字节的空间中存放一个跳转指令或者一个向PC 寄存器中赋值的数据访问指令。 通过这两种指令,程序将跳转到相应的异常中断处理程序处执行。

存储器的前8 个字中除了地址0x00000014 之外,全部被用作异常矢量地址。 这是因为在早期的26 位地址空间的ARM 处理器中,曾使用地址0x00000014 来捕获落在地址空间之外的load 和store 存储器地址。 这些陷阱称为“地址异常”,因为32 位的ARM 不会产生落在它的32 位地址空间之外的地址,所以,地址异常在当前的体系结构中没有作用,0x00000014 的矢量地址也就不再使用了。

(3)异常中断优先级

当几个异常中断同时发生时,就必须按照一定的次序来处理这些异常中断。 在ARM 中通过给各异常中断赋予一定的优先级来实现这种处理次序。 优先级如下:(www.xing528.com)

①复位(最高优先级);

②数据异常中止;

③FIQ;

④IRQ;

⑤预取指异常中止;

⑥软件中断SWI 和未定义指令(包括缺协处理器)。 这两者是互斥的指令编码,因此不可能同时发生。

复位是优先级最高的异常中断,这是因为复位从确定的状态启动微处理器,使得所有其他未解决的异常都没有关系了。

处理器在执行某个特定异常中断的过程中,称处理器处于特定的中断模式。 各异常中断的处理优先级见表2.5。

最复杂的异常莫过于FIQ、IRQ 和第三个异常(不是复位)同时发生的情形。 FIQ 比IRQ的优先级高,会将IRQ 屏蔽,IRQ 将被忽略,直到FIQ 处理程序明确地将IRQ 使能或返回用户代码为止。

如果第三个异常是数据中止,因为进入数据中止异常并未将FIQ 屏蔽,所以处理器将在进入数据中止处理程序后立即进入FIQ 处理程序。 数据中止将“记”在返回路径中,当FIQ 处理程序返回时进行处理。

如果第三个异常不是数据中止,将立即进入FIQ 处理程序。 当FIQ 和IRQ 两者都完成时,程序返回到产生第三个异常的指令,在余下的所有情况下异常将重现并作相应处理。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈