![d267c5704a5884cc897a6a4c6f9edc7c.png](https://i-blog.csdnimg.cn/blog_migrate/ee62f421505b9b2303b27eafa62671ab.jpeg)
ARM体系中,有三种方式控制程序执行的流程:
1、顺序执行,每执行一条ARM指令,程序计数器PC指针的值加4。每执行一条Thumb指令,PC指针的值加2个字节。整个过程按照顺序执行。
2、通过跳转指令。程序可以跳转到指定地址标号处执行。或跳转到指定的子程序执行。
3、当异常中断发生时,系统执行完当前的指令后,将跳转到相应的异常中断处理程序执行。在异常中断处理程序执行完毕后,程序返回到发生中断的指令的下一条指令执行。进入中断处理程序前,要保存现场,在从异常中断处理程序退出时,要恢复被中断的程序的执行现场。
ARM异常中断的种类如下所示:
异常中断名称含义复位(Reset)当处理器的复位引脚有效时,系统 产生复位异常中断,程序跳转导复位异常中断处理程序处执行。发生的几种情况:1、系统上电时,2、系统复位时,3、软件复位
未定义的指令(undefined Instruction)当ARM处理器或者协处理器认为当前指令未定义时,产生未定义指令异常中断。可由于仿真浮点向量运算。软件中断(Software Interrupt,SWI)用户定义的中断指令,可用于用户模式西安程序调用特权操作指令。RTOS中可通过该机制实现系统功能调用。 指令预取中止(Prefetch Abort)处理器预取的指令地址不存在,或者该地址不允许当前指令访问,当该被预取的指令执行时,处理器产生预取中止异常中断。数据访问中止(Data Abort)数据访问指令的目标地址不存在,或者该地址不允许当前指令访问,处理器产生数据访问中止异常中断。外部中断请求(IRQ)处理器外部中断请求引脚有限,且cpsr寄存器I控制位被清除时,处理器产生外部中断请求(IRQ)异常中断。系统中各个外设通过该异常中断请求处理器服务。快速中断请求(FIQ)当处理器的外部快速中断请求引脚有效,且cpsr的F控制位被清楚时,处理器产生外部中断请求(FIQ)异常中断
当多个中断同时发生时,可以根据每个异常中断的优先级选择相应优先级最高的异常中断。优先级后续再介绍。