一、异常与终端的基本概念
异常是导致处理器脱离正常运行转向执行特殊代码的任何时间
异常分两类:同步异常和异步异常,不同之处是事件的来源不同
(1)同步异常:由内部事件(像处理器指令运行产生的事件)引起的异常称为同步异常
(2)异步异常:由外部异常源产生的异常
二者区别:事件的来源不同;同步异常触发后,系统必须立即进行处理;异步异常可以延缓处理甚者忽略
中断:中断属于异步异常,指中央处理器正在处理某件事时,外部发生某事件,请求CPU迅速处理,CPU暂时中断当前工作,转入处理所发生的事情,处理完成后,再回到原来被中断的地方,继续原来的工作
中断的管理包括:开/关中断、恢复中断、中单启用、中断屏蔽、可选择系统管理中的中断优先级
1.中断的介绍
与中断相关的硬件:外设、中断控制器(NVIC)、CPU本身
2.中断相关术语
中断号:每个中断清秀信号的特定标志
中断请求:向CPU提出请求,要求CPU暂停当前执行的任务,转而处理“紧急时间”这一过程
中断优先级:中断时间的重要性和紧迫程度
中断处理程序:
中断触发:中断源向CPU发送控制信号,中断触发器置1,
中断触发类型:电平触发、边沿触发
中断向量:中断服务程序的入口地址
中断向量表:中断向量与中断号对应,中断向量在中断向量表中按中断号顺序存储
临界段:即临界区,不允许任何中断打断,受保护的代码段
二、中断管理的运作机制
中断发生后处理器执行顺序:保存当前处理器状态信息-----加载中断函数到PC寄存器----控制权交给中断处理函数--------处理函数完成后恢复处理器状态------从中断中返回到前一个程序执行点
中断发生环境:任务上下文中和中断服务函数处理上下文中
中断嵌套
三、中断延迟概念
中断延迟:从硬件中断发生到开始执行中断处理程序(ISR)第一条指令的时间段
中断处理过程:外界硬件发生中断-------CPU读取中断处理器的中断向量--------查找中断向量表----找到对应中断服务程序的首地址------跳到ISR执行相应处理,
识别中断时间:以上这个中断处理过程的时间成为识别中断时间
等待中断打开时间:等待处理完当前的中断之后,才处理后来的中断,这段时间称等待中断打开时间
关闭中断时间:进入临界区,中断被挂起,到退出临界区打开中断,这段时间称关闭中断时间
中断延迟=识别中断时间+【等待中断打开时间】+【关闭中断时间】
四、中断管理应用场景
计算机执行程序的过程中,由于出现某个特殊情况(或称为“特殊事件”),使得系统暂时中止现行程序,转去处理这一特殊事件的程序,处理完之后再回到原来程序的中断点继续向下执行
五、ARM Cortex-M的中断管理
采用中断向量表方式处理,每个中断服务例程排列在同一的地址上,中断向量表由一个数组定义
当用户需要使用自定义的中断服务例程时,需要定义相同名称的函数覆盖弱化符号,即重定义中断服务函数
学习心得:
1.由异常引申到中断,即异常分同步异常和异步异常,同步异常属于内部事件引起,异步异常由外部异常源产生,中断属于异步异常
2.中断的处理过程:保留现场----载入中断服务函数----获取cpu处理权----中断函数执行完回复CPU处理权-----回到中断发生签到一个程序执行点
3.ARM Cortex-M的中断是由中断向量表管理,向量表是中断号与中断向量(也可以说是中断服务函数)对应的一个列表,即支持的所有向量都在启动文件里有列举,中断触发后,根据中断向量表中的中断号找到对应的中断向量(或者中断服务函数)执行中断