Bootstrap

【物联网】ARM核异常处理


一、异常介绍

1. 什么是异常

异常是处理器核在执行程序指令的过程中突然遇到了异常的事情,这些事件包括硬件中断、指令执行错误、用户程序请求服务、内存访问异常、取指令异常等,几乎每种处理器都支持特定的异常处理,中断也是异常的一种

2. ARM的异常源

在这里插入图片描述

FIQ 较 IRQ 快的原因:

  1. FIQ在异常向量表位于最末
    a:所以可以直接把异常处理程序写在异常向量表之后,省去了跳转的过程。
    b.而IRQ需要执行向量表对应的跳转指令之后,跳转到指定的中断处理程序。
  2. FIQ模式有5个私有寄存器(R8-R12)
    a.执行中断处理程序前无需压栈保存寄存器,可直接处理中断。
    b.而IRQ的R8-R12寄存器是与和其它模式共用的,在中断前需要保护现场,即把R8-R12的数据保存在栈中。
  3. FIQ的优先级高于IRQ
    a.两个中断同时发生时先响应FIQ
    b.FIQ可以打断IRQ,IRQ不能打断FIQ。

二、ARM核异常处理过程

在这里插入图片描述

1. 异常向量表

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;