1.什么是中断
中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。
2.中断的流程
1.设置中断源,允许指定的中断发生;
2.设置中断控制器,例如屏蔽指定中断,例如设置允许发生的中断的优先等级;
3.设置CPU中断总开关,使能中断; 执行一般程序;
4.产生中断,硬件将中断信号发送给中断控制器,中断控制器再发给CPU让CPU知道发生了什么中断;
5.CPU每执行完一句指令,都会去检查有无异常中断产生; 如果发现有异常中断发生,那么就会去处理异常中断;
3.ARM对中断的处理
1.保存现场:将一般程序的当前执行地址、变量等保存到栈中;
2.处理异常:通过异常中断信号跳转到保存在异常向量表中的中断服务函数开始执行中断;
3.恢复现场:执行完中断处理程序之后,从栈中读取之前保存的数据,跳转到原本的执行地址开始执行一般程序;
4.中断优先级
1.优先级数值越低,被执行的优先等级就越高;
2.优先级分为:抢占优先级和子优先级; 抢占优先级数值低的中断可以打断正在执行的抢占优先级数值高的中断;
3.子优先级只能决定同一时间产生的多个相同抢占优先级中断的执行顺序;
4.当两个优先级数值一样的(不管是抢占还是子优先级)中断同时产生,那么则根据在异常向量表中的位置决定执行先后,越靠前的中断先被执行;