利用可能なUSBエンドポイントの数を学ぶ

利用可能なUSBエンドポイントの数を学ぶ

私は組み込みシステムでLinuxを実行しています。これシステムオンチップシステムにはUSB 2.0ポートがあり、データシート8つのエンドポイントが使用できると主張します。

ソフトウェアでこれを確認する方法はありますか?たぶん/procどこかにアイテムがありますか/sys? USBデバイスが占めるエンドポイントの数を確認することでこれを行うことができますが、/sys/bus/usb/devices/**/bNumEndpointsソフトウェアがシステムで利用可能なエンドポイントの総数を決定できるかどうかを知りたいです。

ベストアンサー1

{リンクされたデータシート]の46ページ(https://linux-sunxi.org/images/2/23/Allwinner_V3s_Datasheet_V1.0.pdf)説明する:

デバイスモードでユーザーが設定できる最大8つのエンドポイント

「デバイスモードで」これは、SoCがUSBホストではなくUSBデバイスとして機能することを意味します。 Linuxではこれをこう呼ぶ。USBガジェットモード

実行時にUSBガジェットモードを設定するには、CONFIGFS_FSが必要なカーネルビルドオプションCONFIG_USB_CONFIGFSが必要です。 SoCが接続されているUSBホストに提供する機能に応じて、USB_LIBCOMPOSITEおよび1つ以上のUSB_G_ *オプションも必要です。

USBガジェット機能の設定については、次を参照してください。ドキュメント/usb/gadget_configfs.rst(利用可能なガジェット機能のいくつかは、Linuxカーネルソースドキュメントと同じディレクトリにある別のwidget_ * .rstファイルに文書化されています。各機能は1つ以上のエンドポイントを使用し、このSoCでは8つのエンドポイントを使用できます。だけです。

たとえば、シングルスタイルのttyACMシリアルチャネルを提供するようにSoCを設定する場合は、3つのエンドポイントが必要です。 1つは制御インターフェース用で、2つはデータインターフェース用です(送信用エンドポイント1つ、受信用エンドポイント1つ)。

debugfsがインストールされている場合、各エンドポイントは行に一覧表示されE: ...ます。/sys/kernel/debug/usb/devices

grep ^E: /sys/kernel/debug/usb/devices | wc -l

現在のUSBガジェット設定で使用されているエンドポイントの数を示します。

データシートを信頼しない場合は、データシートで指定されたエンドポイントの数を使用してガジェット機能の組み合わせを選択し、報告されたエラーを確認しながら設定を試み、設定された各機能のすべてのエンドポイントを確認できます。 USBホスト側からすべてアクセス可能です。

USBデバイス/ OTGコントローラチップがガジェットモードでサポートしていると主張するエンドポイントの数がわからない場合は、エラーが発生するまでUSBガジェット機能を生成するループを実行し、生成された機能とUSBの数を確認できます。ホストシステムがアクセスできるエンドポイント。

おすすめ記事