PCI并行端口卡,无法调用中断处理程序

时间:2018-11-02 22:46:11

标签: linux linux-device-driver interrupt pci parallel-port

更新:[似乎是硬件错误,可以使用相同的代码但新卡工作正常]

我最近购买了一块非常便宜的并行pci卡(link),以尝试了解我的ubuntu机器上的Linux设备驱动程序(通过ldd3)

我已将LED连接到2-9针,并且能够使用IO端口设置/清除针。但是还不能引发中断并处理它。任何帮助或指示,将不胜感激

(请注意,我有第9针直接连接到第10针)

  

lspci

07:04.0 Parallel controller: Device 1c00:2170 (rev 0f) (prog-if 01 [BiDir])
Subsystem: Device 1c00:2170
Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Interrupt: pin A routed to IRQ 11
Region 0: I/O ports at ccf0 [size=8]
Region 1: I/O ports at ccf8 [size=8]

系统启动后,io寄存器为:

DATA: 0xff,  STATUS: 0x07, CONTROL: 0xc0

我尝试过:

outb_p(0x10, BASE+2);  // enable irq
outb_p(0x00, BASE);  outb_p(0xFF, BASE); // trigger interrupt
// => DATA: 0xff, STATUS: 0x7b, CONTROL: 0xd0

,但是 / proc / stat 的IRQ11 intr行中的中断计数(由lspci报告)仍然为零

我还尝试将上述序列包装在probe_irq_on/off()之间(之间还有一个额外的outb_p(0x00,BASE + 2); udelay(5)),这也无法发现并报告任何中断。 在调用模块代码中的pci_enable_device(dev)之后,完成了该内核探测。

请让我知道是否需要其他信息。预先感谢。

0 个答案:

没有答案