Привет, я разрабатываю связь PCIe между Xilinx FPGA и Intel PC ... Я написал модуль ядра (драйвер Linux), я использую прерывания INTx. Я столкнулся с проблемой обработки прерываний ....
Перед загрузкой модуля ядра:
из lspci: INT A -> 11
из конфигурации читать: INT A -> 11
из / proc / interrupts: ничего, потому что irq не зарегистрирован
После загрузки модуля ядра:
от lspci: INT A -> 16
из конфигурации читать: INT A -> 11
из / proc / interrupts: INT 11 зарегистрировано
Когда я запускал программу на ПЛИС, она отправляла прерывание на IRQ-16 и говорила, что никому нет дела, и она была отключена.
в моем module_init:
request_irq(dev->gIrq, XPCIe_IRQHandler, IRQF_SHARED, gDrvrName, gDev));
Мой обработчик irq:
static irqreturn_t XPCIe_IRQHandler(int irq, void *dev_id, struct pt_regs *regs)
{ return IRQ_HANDLED; }
Так что любой может сказать, в чем может быть проблема ....