ARM中断
1. ARM处理器的工作模式
2. FIQ的响应速度比IRQ快的原因
1)优先级高
2)FIQ的异常向量在末端,直接把异常程序写在后面,省去了跳转时间;
3)私有寄存器个数多,许多保存cpu自动保存,不用压栈
3. 异常发生时CPU的处理步骤
ARM处理器的动作(自动完成)
1)拷贝 CPSR 到SPSR_<mode>
2) 修改CPSR:a. 改变处理器状态进入ARM状态;
b. 改变处理器模式进入相应的异常模式;
c. 设置中断禁止位进制相应中断(如果需要)
3)保存返回地址到 LR_<mode>
4) 设置PC为相应的异常向量(跳转到异常向量表中对应的位置)
4. 异常处理完成后,返回时需要(用户自己完成)
1)从 SPSR_<mode> 恢复CPCR,使处理器恢复到异常前的状态
2)从LR_<mode>恢复PC,程序返回到被异常打断的位置继续执行
5. 中断服务程序需要满足以下要求
1)不能返回值;
2)不能向ISR传递参数;
3)ISR应该尽可能的短下精悍
4)printf函数会带来重入和性能问题,不能在ISR中调用