안녕하세요 iam이 자일링스 FPGA와 인텔 PC 간의 PCIe 통신을 개발하고 있습니다 ... 커널 모듈 (Linux 드라이버)을 작성했으며 INTx 인터럽트를 사용하고 있습니다. 내가 인터럽트 처리의 문제에 직면하고있다 .... 로딩 커널 모듈 전에드라이버의 PCI Express 인터럽트
: lspci를에서
: INT A -> 11
설정에서 읽어 INT A ->
(11) PROC /하는 인터럽트 /에서 : 아무것도 IRQ가
로드 커널 모듈 후을 등록을 한 때문이 아니라 :
lspci를에서: INT의 A -> 16
설정에서 읽기 : INT A ->
11/proc 디렉토리/인터럽트 : INT (11) 등록을 한
내가 프로그램을 실행하면 FPGA가 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; }
그래서 사람
그리고 최신 커널에서는 그걸하지 말고 대신'pci_alloc_irq_vectors()'& Co를 사용합니다. – 0andriy