PCI桥 中断驱动的问题
在工控板上(Linux2.6的内核)做一个PCI桥的驱动。PCI桥设备上的Memory已经可以读写了,剩余一个PCI中断的问题
没有做过,问一下大家。
硬件工程师跟我说,他们把中断信道坐在了PCI的SERR上。而且已经可以测量到中断时电平的变化。
但是我不知道这个SERR如何映射到我的驱动上。
lspci设备时可以看到:
01:06.0 Bridge: Unknown device 1980:0517 (rev 90)
Subsystem: Altera Corporation Unknown device 0000
Flags: medium devsel, IRQ 161
Memory at fc000000 (32-bit, non-prefetchable) [size=32M]
提示IRQ161, 我不知道这个IRQ161是不是就是Linux内核为PCI设备的SERR分配的中断号。
我在驱动里面调用:
request_irq(pcidev->irq, &pci_bridge_interrupt, IRQF_SHARED, PCI_DRIVER_NAME, dev)
可以提示注册中断成功,其中pcidev->irq就是161
但是pci_bridge_interrupt捕捉不到中断的发生。
而且在rmmod时,出现内核崩溃。如果在模块Probe时,不调用request_irq,rmmod这个模块时,内核是不会崩溃的。
弄了两天了,没有结论!大家帮忙啊!