中断是什么鬼?
中断就是自发打断原有的工作状态,进入中断模式,完成中断对应工作,结束后,回到原来的状态。
ARM中有7个异常中断:
1、复位(reset)。ARM复位都是从0x00000000地址开始执行指令,优先级最高
复位:上电、reset、看门狗复位
2、未定义指令(undefined instruction)。ARM在对一个指令进行译码的时候,译码出错。
3、软件中断(SWI)。使用ARM汇编指令SWI可以产生中断,这个中断就是SWI。其中linux的系统调用,就是使用这个SWI指令实现的。
4、指令预取中止:在取值阶段出错。当取指令的地址不存在或者禁止访问。
5、数据访问中止:数据处理阶段出错。如向一个只读的地址写入数据。
6、IRQ:Interrupt一般中断
7、FIQ:Fast Interrput快速中断。
二、FIQ和IRQ的区别
1、FIQ和IRQ是中断的两种类型,一个中断源可以设置成FIQ也可以设置成IRQ。
2、在ARM的体系结构上,保证了FIQ是快于IRQ。
1)FIQ的优先级是高于IRQ
2)FIQ的分组寄存器多于IRQ
3、一般情况下,只能将一个中断源设置成FIQ中断,这个中断就是最紧急需要处理的。
4、在嵌入式linux系统中,是不支持FIQ中断。在linux的中断驱动中,将寄存器的访问过程做好了封装。
三、210中,中断的框架
四、中断源
外部中断、定时器中断,看门狗中断、闹钟中断、串口中断。