5

USBポートにプラグインされたデバイスの検出を担当するシステムの部分を知りたいです

プラグインされたデバイスが USB クライアントと見なされるように (ポートの所有者がホスト)、USB ホスト ポートである場合もあれば、プラグインされたデバイスが USB と見なされる
ように USB クライアント ポートである場合もあります。ホスト (つまり、ポート所有者はクライアントです)

私が興味を持っているのは、システムが実際に (おそらく抵抗の変化によって) 何かが差し込まれていることを検出し、信号がどのポート (ホスト ポートまたはクライアント ポート) から来ているかに基づいて、ホスト ポート ドライバーまたはクライアント ポート ドライバーが展開
されていることを知りたいのですが、その「プラグイン」イベントに基づいて、システムがこのドライバーまたはそのドライバーを取得する方法を知りたいです

どこでそれを探すべきですか?USBコアで多分?

4

3 に答える 3

1

usb サブシステムは、新しく追加された/ホットプラグされた USB デバイスの検出と調査を担当します。カーネル ログで次のようなメッセージを確認します。

usb usb4: New USB device found, idVendor=1d6b, idProduct=0001
usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb4: Product: OHCI Host Controller
usb usb4: Manufacturer: Linux 2.6.32 ohci_hcd
usb usb4: SerialNumber: 0000:00:12.1
usb usb4: configuration #1 chosen from 1 choice

これらすべてを処理するコードは、drivers/usb/core にあります。

usb サブシステムは scsi サブシステムの下にあるため、新しく割り当てられたデバイスには/dev/sdX. でこの USB デバイスに対応する新しいデバイス ノードを作成するのが udev の仕事です/dev。このイベントをキャプチャし、通知を行うスクリプトを実行することに興味がある場合は、udevd ルールの編集方法を参照してください: http://www.reactivated.net/writing_udev_rules.html#external-run

于 2012-10-19T18:32:01.753 に答える
1

私はあなたが求めていることを理解しています.USBデバイスが接続されていると、(抵抗器全体の)電流変動が通知につながります。次に、ホスト (OTG モードで誰がホストになるかについてのネゴシエーションがありますが、これは列挙プロセスの後にも発生します)。

列挙は、最も重要なメインプロセスです。USB はスター ティア トポロジーに従い、システム全体はスター ティア トポロジーに基づいています。

注:パケットのすべてのトランザクションがホストによって開始されることに注意することは非常に重要です。クライアントはホストに翻弄されます。これは、USB システムを理解する上で非常に重要です。

Pls は参照: http://www.beyondlogic.org/usbnutshell/usb1.shtml

于 2012-10-22T08:20:18.813 に答える
1

こんにちは、Android デバイスが接続されている場合はクライアント モードであり(少なくとも samsung デバイスではそうです)、デバイスが接続されている場合は、最初にデバイスのアドレスが 0x0 に設定され、デフォルト アドレスがホストに認識されます。次に、すべてのセットアップ (構成、インターフェース、エンドポイント) が行われるエンドポイント 0 があります。

ここに画像の説明を入力

上の画像がわかりやすいでしょう。これは、USB 2.0 マニュアルから取得されます。初期化中のすべての設定は、すべてのデバイスに存在するエンドポイント 0 を介して行われることに注意してください。

そして、クライアントモードからホストモードに変更する方法がわかりません。(私の知る限り、OTG モードでのセットアップ後にネゴシエーションが行われるということだけです)。お役に立てば幸いです。

于 2012-10-25T07:32:21.247 に答える