9

私はLinuxでUSBデバイスと通信する方法を研究しており、Linuxカーネルドライバーを作成したくないと考えています。libusbが存在し、機能するユーザーランドライブラリであることは理解していますが、組み込みデバイスはusbfsをサポートしていません(サポートを追加するためにカーネルを変更するのは本当に面倒です)。

だから私の質問は基本的にこれです:/ dev / USBまたはUSBデバイスに対応するudevファイルを直接読み書きすることでUSBデバイスと通信することは可能/推奨されますか?カスタムLinuxドライバーとusbfsの必要性をバイパスしますか?

/ dev / USBまたはudevデバイスファイルが開いたら、ファイルタイプの読み取り/書き込みコマンドを介してプロトコルパケットを直接読み取り/書き込みするだけで、USBデバイスプロトコルを使用して通信できることを望んでいます。

考えや提案をお願いします。

ファローアップ:

通話する必要のあるUSBデバイスはUSBHIDクラスのデバイスであるため、/ dev / hidraw0(または適切な/ dev / hidrawデバイス)に直接読み取り/書き込みを行うことで、libudevと標準のLinux USBHIDRAWドライバーを使用できました。 。単純なUSBHIDデバイス用のカスタムドライバーを作成する必要はありませんでした。

4

1 に答える 1

7

ジム、私はあなたがドライバーを書く必要性から逃れることができないと思います、そしてただUSBファイルを読むことをなんとかすることができます/devread()USBデバイスファイルで何をするかについて誰が定義するのでしょうか?そして、あなたが呼び出すときにどのアクションを開始する必要があるかを誰が定義しますsysioctl()か?あなたの運転手!つまり、デバイスファイル自体は、基盤となるドライバーによってサポートされるまで、何もできません。実際、デバイスファイルを基盤となるドライバーの抽象化として扱うことができます。したがって、ドライバはなく、デバイスファイルは使用されません:(

ドライバーの書き方とUSB内部の理解について、以下の記事を読むことをお勧めします-

  1. http://www.linux-usb.org/USB-guide/c15.html

  2. http://www.linuxjournal.com/article/4786(少し古くなっています)

于 2012-03-04T04:24:01.270 に答える