我正在試圖編寫AT91SAM9M10-EKES評估板上的GPIO IRQ。 我成功註冊了IRQ,並且IRQ正在工作。 但是,有些中斷錯過了。我送26,而我得到的只有22基於ARM的嵌入式Linux上的GPIO IRQ
代碼:
static irqreturn_t wiegand_interrupt(int irq, void *dev_id){
atomic_inc(&counter);
printk(KERN_WARNING "IRQ recieved, counting... %d\n",atomic_read(&counter));
return 0;
}
irq1 = gpio_to_irq(AT91_PIN_PA21);
if (irq1 < 0) {
err = irq1;
printk("Unable to get irq number for GPIO %d, error %d\n",AT91_PIN_PA21, err);
goto fail;
}
err = request_irq(irq1,wiegand_interrupt,0 ,"wiegand",NULL);
irq2 = gpio_to_irq(AT91_PIN_PA20);
if (irq2 < 0) {
err = irq2;
printk("Unable to get irq number for GPIO %d, error %d\n",AT91_PIN_PA21, err);
goto fail;
}
err = request_irq(irq2,wiegand_interrupt,0 ,"wiegand",NULL);
這是不是整個驅動器,但是這是與IRQ涉及實際的一部分。 如果有人在代碼中看到問題,或者可以建議一種方法來知道爲什麼我會丟失4箇中斷,請回復。我卡在這幾個小時... :(
感謝。 拉蒙。
printk是原因!有用。謝謝。 – stdcall 2011-08-18 14:40:19