通过连接并口引脚9和10来触发硬件中断不起作用

通过连接并口引脚9和10来触发硬件中断不起作用

我想按照书中描述的那样触发硬件中断Linux 设备驱动程序用电线连接针脚 9 和 10。我尝试过,但显然没有触发中断:

cat /proc/interrupts:

 7:          0    XT-PIC  parport0

现在我想知道这是为什么?加载内核模块:

parport_pc             26004  0
parport                35239  2 ppdev,parport_pc

书中说必须启用中断,但加载模块时就是这样,对吗?

有什么想法我可以做什么吗?

答案1

仅连接引脚不会产生中断。根据您引用的文档,您需要向引脚 9 写入一些数据,该引脚与引脚 10 短路以生成中断。引用您参考的文档:

引脚 9 是并行数据字节的最高有效位。如果将二进制数据写入 /dev/short0,则会生成多个中断。不过,将 ASCII 文本写入端口不会产生任何中断,因为 ASCII 字符集没有具有最高位集的条目。

答案2

为什么人们觉得阅读内核代码如此困难? :P。

http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/char/ppdev.c

说真的,设备通常只在需要时才被激活 - 当用户空间打开它们时。例子:

如果您查看 ppdev.c,您会发现它提供了一个 API,其中 parport 被“声明”(尽管不一定是唯一的?!)。只有这样它才会调用pp_enable_irq()。 (我首先查看了 open() 并看到了那里的评论)。

我不知道这是否是这里的确切原因,但它显示了您的假设的缺陷:)。

相关内容