我想通过用电线连接引脚9和10来触发硬件中断,如书“Linux设备驱动程序”中所述。我试过了,但显然没有中断触发:
cat /proc/interrupts:
7: 0 XT-PIC parport0现在我想知道为什么?加载了内核模块:
parport_pc 26004 0
parport 35239 2 ppdev,parport_pc书中说必须启用中断,但在加载模块时是这样的,对吗?
知道我能做什么吗?
发布于 2015-05-27 13:40:53
仅仅连接引脚不会产生中断。根据您引用的文档,您需要编写一些数据到pin 9,其中有一个短到pin 10来生成中断。引用您所引用的文件:
Pin 9是并行数据字节中最重要的位。如果将二进制数据写入/dev/短路0,则会生成多个中断。但是,将ASCII文本写入端口不会产生任何中断,因为ASCII字符集没有顶部位集的条目。
发布于 2015-05-27 13:38:18
为什么人们很难阅读内核代码?: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(),并在那里看到了评论)。
我不知道这是不是确切的原因,但它显示了你的假设中的缺陷:)。
https://unix.stackexchange.com/questions/205866
复制相似问题