パラレルポートピン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

単にピンを接続するだけでは割り込みは発生しません。引用した文書によると、割り込みを生成するには、ピン10で短絡されたピン9にいくつかのデータを書き込む必要があります。参照した文書を引用するには、次のようにします。

ピン9はパラレルデータバイトの最上位ビットです。バイナリデータが/dev/short0に書き込まれると、複数の割り込みが発生します。ただし、ASCII文字セットには最も高いビットセットを持つエントリがないため、ASCIIテキストをポートに書き込むと中断は発生しません。

答え2

人々はなぜカーネルコードを読むのが難しいと思いますか? :血。

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

真剣に、デバイスは通常、必要なとき、つまりユーザ空間がデバイスを開くときにのみアクティブになります。例:

ppdev.cを見ると、parportが「宣言」されたAPIを提供していることがわかります(必ずしも一意ではありませんが?!)。それだけが呼び出されますpp_enable_irq()。 (私は最初にopen()を見て、そこにあるコメントを見ました)。

これが正しい理由であるかどうかはわかりませんが、家庭に欠陥があることを示しています。 :).

関連情報