gzyueqian
13352868059

嵌入式培训机构哪个好?粤嵌详解ARM的异常中断响应过程

更新时间: 2019-03-27 14:56:14来源: 嵌入式培训浏览量:4708

  ARM及嵌入式开发近年越来越热,特别是android与linux在手机、平板等许多消费类电子及工业设备中越来越成熟的应用。同学们在嵌入式培训学习过程中会遇到很多问题,其中一个就是——ARM的异常中断响应过程是怎样的?

  当发生异常时,除了复位异常立即中止当前指令外,处理器尽量完成当前指令,然后脱离当前的指令处理序列去处理异常。嵌入式培训总结ARM异常处理器对异常中断响应过程是这样子的:

  ① 将CPSR的内存保存到将要执行的异常中断对应的SPSR中,以实现对处理器当前状态、中断屏蔽及各条件标志位的保存。各异常中断模式都有自己相应的物理SPSR寄存器。

  ② 设置当前状态寄存器CPSR中的相应位。

  设置CPSR模式控制位CPSR[4:0],,是处理器进入相应的执行模式;

  设置中断标志位(CPSR[6]=1),禁止IRQ中断;

  当进入Reset或FIQ模式时,还要设置中断标志位(CPSR[7]=1),禁止FIQ中断。

  ③ 将引起异常指令的下一条指令的地址保存到新的异常工作模式的R14即R14_mode中,使异常处理程序执行完后能正确返回原程序。

  ④ 给程序计数器强制赋值,是程序从ARM体系中的异常工作模式表中给出的相应的矢量地址开始执行中断处理程序。一般来说,矢量地址处将包含一条指向相应程序的转移指令,从而可跳转到相应的异常中断处理程序处执行异常中断处理程序。

  ARM处理器对异常的响应过程可用伪代码描述:

  R14_<exception_mode>=return link

  SPSR_<exception_mode>=CPSR

  CPSR[4:0]=exception mode number

  CPSR[5]=0

  CPSR[6]=1

  If<exception-mode>=Reset or FIQ then

  CPSR[7]=1

  PC=exception vector address

  上面每个异常模式对应有2个寄存器R13_<mode>、 R14_<mode>,分别保存相应模式下的堆栈指针、返回地址。堆栈指针可用来定义一个存储区域保存其他用户寄存器,这样异常处理程序就可使用这些寄存器。

  FIQ模式还有额外的专用寄存器R8_fiq~R12_fiq,使用这些寄存器可加快快速中断的处理速度。

  ARM嵌入式培训机构哪个好?粤嵌嵌入式培训开设了适合零基础学员的阶梯式课程安排,不仅有适合零基础的学习的基础班,更有适合有基础的就业班,欢迎你来学习。


免费预约试听课