呵呵,刚好今天我复习了一遍中断,所有中断基本都一样的,只是cpu的一些具体细节不同而已。有单片机的中断基础,看arm的中断很容易理解。
中断发生过程:
中断源----》中断标志寄存器-----》中断屏蔽寄存器------》中断模式-----irq-----优先级-----IRQ中断
| ------fiq------------------FIQ中断
cpu响应中断过程:
1.硬件自动处理: lr_x = pc 保存返回地址 (五级流水线,取指---译码---执行---存储--写; 因此pc有偏移)
spsr_x = cpsr;保存状态寄存器
设置cpsr进入异常模式
强制pc指向异常向量,进入ISR
2。中断服务程序ISR(期间要清除中断标志)
1)保护现场,寄存器&lr入栈
2)中断处理(要求尽量短小精悍,处理完硬件紧急事件后退出中断模式,耗时部分在普通模式进行(linux驱动里说的)
3)恢复现场,寄存器&lr出栈,中断返回 |