1.异常处理流程(4大步,3小步)
-
将cpsr保存到spsr中
-
设置cpsr
2.1设置到ARM的状态
2.2设置异常模式
2.3如果有必要就禁止中断
-
保存PC到LR中
-
设置PC跳转到对应的位置执行
2.中断执行的流程
3.linux内核中断子系统的API
#include <linux/interrupt.h>
unsigned int irq_of_parse_and_map(struct device_node *dev, int index)
功能:解析并映射中断号得到软中断号
参数:
@dev:节点的结构体指针
@index:下标(interrupts成员的下标)
返回值:成功返回软中断号,失败返回0
int request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,
const char *name, void *dev)
功能:注册中断
参数:
@irq:软中断号
@handler:指向中断处理函数
irqreturn_t irq_handle(int irqno, void *dev)
{