更新:[似乎是硬件错误,可以使用相同的代码但新卡工作正常]
我最近购买了一个非常便宜的并行pci卡( 链接 ),以尝试了解我的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- SERR-
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报告)仍然为零
我也尝试过将上述seq包装在probe_irq_on/off()之间probe_irq_on/off()之间probe_irq_on/off()一个额外的outb_p(0x00,BASE + 2); udelay(5)),这也无法发现并报告任何中断。 内核探测是在模块代码中调用pci_enable_device(dev)之后完成的。
请让我知道是否需要其他信息。 提前致谢。