一、异常与终端的基本概念

异常是导致处理器脱离正常运行转向执行特殊代码的任何时间

异常分两类同步异常异步异常,不同之处是事件的来源不同

(1)同步异常:内部事件(像处理器指令运行产生的事件)引起的异常称为同步异常

(2)异步异常:由外部异常源产生的异常

二者区别:事件的来源不同;同步异常触发后,系统必须立即进行处理;异步异常可以延缓处理甚者忽略

中断中断属于异步异常,指中央处理器正在处理某件事时,外部发生某事件,请求CPU迅速处理,CPU暂时中断当前工作,转入处理所发生的事情,处理完成后,再回到原来被中断的地方,继续原来的工作

中断的管理包括:开/关中断、恢复中断、中单启用、中断屏蔽、可选择系统管理中的中断优先级


1.中断的介绍

与中断相关的硬件:外设中断控制器(NVIC)CPU本身

2.中断相关术语

中断号:每个中断清秀信号的特定标志

中断请求:向CPU提出请求,要求CPU暂停当前执行的任务,转而处理“紧急时间”这一过程

中断优先级:中断时间的重要性和紧迫程度

中断处理程序

中断触发:中断源向CPU发送控制信号,中断触发器置1,

中断触发类型电平触发、边沿触发

中断向量:中断服务程序的入口地址

中断向量表中断向量中断号对应,中断向量在中断向量表中按中断号顺序存储

临界段:即临界区,不允许任何中断打断受保护的代码段

二、中断管理的运作机制

中断发生后处理器执行顺序:保存当前处理器状态信息-----加载中断函数PC寄存器----控制权交给中断处理函数--------处理函数完成后恢复处理器状态------从中断中返回到前一个程序执行点

第22章 中断管理_中断向量

中断发生环境:任务上下文中和中断服务函数处理上下文中

中断嵌套

第22章 中断管理_中断处理_02

三、中断延迟概念

中断延迟:从硬件中断发生开始执行中断处理程序(ISR)第一条指令的时间段

中断处理过程:外界硬件发生中断-------CPU读取中断处理器的中断向量--------查找中断向量表----找到对应中断服务程序的首地址------跳到ISR执行相应处理

识别中断时间:以上这个中断处理过程的时间成为识别中断时间

等待中断打开时间等待处理完当前的中断之后,才处理后来的中断,这段时间称等待中断打开时间

关闭中断时间:进入临界区,中断被挂起,到退出临界区打开中断,这段时间称关闭中断时间

中断延迟=识别中断时间+【等待中断打开时间】+【关闭中断时间】

四、中断管理应用场景

计算机执行程序的过程中,由于出现某个特殊情况(或称为“特殊事件”),使得系统暂时中止现行程序,转去处理这一特殊事件的程序,处理完之后再回到原来程序的中断点继续向下执行

五、ARM Cortex-M的中断管理

采用中断向量表方式处理,每个中断服务例程排列在同一的地址上,中断向量表由一个数组定义

第22章 中断管理_中断处理_03

第22章 中断管理_中断向量表_04

当用户需要使用自定义的中断服务例程时,需要定义相同名称的函数覆盖弱化符号,即重定义中断服务函数


学习心得:

1.由异常引申到中断,即异常分同步异常和异步异常,同步异常属于内部事件引起,异步异常由外部异常源产生,中断属于异步异常

2.中断的处理过程:保留现场----载入中断服务函数----获取cpu处理权----中断函数执行完回复CPU处理权-----回到中断发生签到一个程序执行点

3.ARM Cortex-M的中断是由中断向量表管理,向量表是中断号与中断向量(也可以说是中断服务函数)对应的一个列表,即支持的所有向量都在启动文件里有列举,中断触发后,根据中断向量表中的中断号找到对应的中断向量(或者中断服务函数)执行中断