本文主要是介绍刘帅嵌入式系统-ARM体系的异常中断,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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)异常中断 |
当多个中断同时发生时,可以根据每个异常中断的优先级选择相应优先级最高的异常中断。优先级后续再介绍。
这篇关于刘帅嵌入式系统-ARM体系的异常中断的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!