1

組み込みプラットフォームを使用しています。このデバイスの典型的なソフトウェアは Linux 2.6 + Busybox であるため、リソースは限られています。

USB デバイスが接続されるたびに、ユーザー空間アプリケーションを実行する必要があります。このユーザー空間アプリにパラメーターとして DeviceID と ProductID を渡す必要があります。

これを達成するためにどの戦略に従うべきか本当にわかりません:

  • Linux カーネル モジュールの作成。
  • カーネル (USB ドライバー) の内部から実行しています。現在これを実行していますが、これが最善の方法だとは思いません。
  • USB 接続デバイスを「ポーリング」するユーザー空間アプリ。

どちらが最善の方法ですか?

ご回答有難うございます!

4

3 に答える 3

2

ユーザースペースに留まりたい場合は、を使用できますlibudev

ここに例があります。これから製品IDとデバイスIDを抽出できます。

于 2012-07-17T17:44:40.770 に答える
0

私の知る限り、カーネルには USB ホットプラグのメカニズムがあります。ホットプラグ イベントが発生すると、ユーザーに通知できます。残念ながら、私は詳細にあまり精通していません。

多分linux-3.3.5/samples/kobject/kset-example.cあなたにいくつかのアイデアを与えるでしょう。

于 2012-07-17T09:20:18.357 に答える
0

@aisbaa のような他のオプションが言及されていても、カーネルの変更は興味深く、やりがいのあるものです。USB ドライバを変更することをお勧めします。理由は、引数をユーザー空間アプリケーション (製品 ID、デバイス ID) に送信する必要があるためです。

これらの ID はドライバーで取得されます。したがって、これらの ID を使用してユーザー空間アプリを呼び出すことが私の選択です。

ユーザー空間アプリの呼び出しについては、ここで利用できる便利な説明があります

于 2012-07-17T07:25:50.277 に答える