0

Linux プラットフォームで USB HID に取り組んでいます。キーボード、マウスなどは、ヒューマン インターフェイス デバイスの例です。HID がシステムに挿入されるたびに、最初にデバイスの列挙が行われます。次に、hidraw 形式のエントリが /dev ディレクトリに表示されます。

Linux では、「usbhid と hid」は、HID デバイスが挿入されたときに呼び出されるモジュールです。これらのモジュールを (rmmod とシステムの再起動を使用して) 無効にすると、デバイスが列挙されず、hidraw エントリが /dev に (予想どおり) 表示されませんでした。

ここで私の質問は、上記の 2 つのモジュールが無効になっているシステムに USB HID デバイスが接続されているかどうか、つまり、ハードウェアの挿入時に割り込みまたは信号が生成されるかどうかを知る方法があるかどうかです。

そのようなシグナルまたは割り込みが発生したときに、いくつかのコードを実行することを計画しています(Cで)。どんな種類の助けも大歓迎です。

ありがとう、

4

2 に答える 2

0

デバイスの挿入は、D+およびD-ラインで発生する電圧レベルの変化によって検出されます。USBデバイスを挿入しても割り込みは発生しないと思います。電圧レベルの変化は、ハブ(ルートまたはラインのさらに下のハブ)によって読み取られ、それに応じてコアに報告されます。USBコアドライバーにも同じことが通知されます。したがって、特定のデバイスをターゲットとするユーザースペースドライバーを(ベンダーと製品IDを使用して)作成し、これを介して機能を実行できる可能性があります。

于 2012-05-21T06:09:27.407 に答える
0

ユーザーモードでこれを行っている場合は、 (内部udevで使用する) を使用して通知を受け取ります。netlink

ルールファイルの vendorId および productId フィールドを使用して、デバイスを照合できます。

SUBSYSTEMS=="usb", ATTRS{idVendor}=="abcd", ATTRS{idProduct}=="1234"
于 2012-05-21T06:46:32.487 に答える