我正在尝试使用NXP QorIQ SDK 2.0为LS1021A外部中断IRQ5编写中断处理程序。我创建了一个内核模块来处理中断,但reset_irq函数总是返回-22(无效参数)。
这是我的代码:
static unsigned int irqNum;
static irq_handler_t irq5_handler(unsigned int irq, void *dev_id, struct pt_regs *regs){
printk(KERN_INFO "Interrupt received\n");
return (irq_handler_t) IRQ_HANDLED;
}
static int __init irq_init(void){
int result = 0;
irqNum = 201; // IRQ number of IRQ5
result = request_irq(irqNum, (irq_handler_t) irq5_handler, IRQF_TRIGGER_RISING, "irq5_handler", NULL);
printk(KERN_INFO "request_irq result is %d\n", result);
return result;
}
module_init(irq_init);
创建内核模块是处理中断的正确方法吗? 在请求中断(request_irq)之前,是否需要执行任何操作,例如初始化处理器引脚?