Compreendendo o kernel Linux do IRQ

0

Estou desenvolvendo um driver para controlar as entradas de sinal que chegam a uma placa receptora conectada por uma porta PCI e tenho um problema quando se trata de lidar com esses sinais.

Quando um sinal chega, este cartão envia um sinal de interrupção para o processador e, em teoria, o motorista executa a instrução de interrupção, mas isso nunca chega a acontecer.

Eu verifiquei com um osciloscópio que o cartão envia o sinal de interrupção e que no pino que está conectado ao processador esse sinal também chega, no entanto o Linux não detecta a qualquer momento que uma interrupção chegou. Embora eu estivesse errado no design do software, o Linux deveria me mostrar que as interrupções estão chegando, certo?

Para declarar o log de interrupções em / proc / interruptions usei a função request_irq (pcidev-> irq, IntrCheck, 0, "FPGA_INT, pcidev"); e a função IntrCheck está declarada como void Esta função está correta?

Eu pensei que um possível erro que não estamos vendo as interrupções tem a ver com o DTB que estamos usando para desenvolver e temos que modificá-lo

    
por Daniel 31.10.2018 / 15:53

0 respostas

Tags