文章目录
1. 什么是中断
中断是硬件和软件驱动事件,它使得CPU暂停当前的主程序,转而去执行一个中断服务子程序。X281x的中断系统从上至下分成了三级,即CPU级中断、PIE级中断、外设中断。
2. CPU中断
通常中断申请信号是由外围设备提出的,表示一个特殊的时间已经发生,请求CPU暂停正在执行的主程序,去处理相应的更为紧急的事件。
2.1 CPU中断的概述
中断的触发有两种:一种是在软件中写指令,例如INTR、OR IFR或者TRAP指令;另一种是硬件方式触发,例如来自片内外设或者外设设备的中断信号,表示某个事件已经发生。
无论是软件中断还是硬件中断,都可以归结为可屏蔽中断和不可屏蔽中断。
中断类型 | 中断信号 | 特点 |
---|---|---|
不可屏蔽中断 | INTR指令和TRAP指令、硬件中断NMI、非法指令陷阱以及硬件复位中断 | 一旦中断申请信号发出,CPU必须无条件的立即去响应 |
可屏蔽中断 | 大部分的中断 | CPU检查这个中断的使能情况,决定是否响应中断 |
接受到中断信号后,CPU会按照以下4个步骤来处理中断:
- 接收中断信号:外设或者其他方式向CPU提出中断请求。
- 响应中断:如果是个可屏蔽中断,会检查它的使能情况,决定是否响应,如果是不可屏蔽中断,就立即响应。
- CPU会完整地执行当前指令,为了记住当前主程序的状态,CPU必须做一些准备工作,例如将寄存器的内容存放到堆栈。
- 准备工作做完之后,CPU就取回中断向量,开始执行中断服务子程序。
2.2 CPU中断向量和优先级
X2812支持32个CPU中断,其中每一个中断都是一个32位的