USB経由で他のデバイスと通信するためのガジェットシリアルドライバ

USB経由で他のデバイスと通信するためのガジェットシリアルドライバ

スレーブデバイスとして機能するRaspberry Pi ZeroのUSBホストとして機能するAndroidデバイスがあります。 USBスレーブデバイスと対話するためにAndroid APIを使用することはまったく問題ありません。

明らかにドライバーが必要です。ガジェットシリアルドライバRaspberry Piで、次のコマンドを使用して起動時にロードします。

sudo modprobe g_serial

システムは明らかに/dev/ttyGS0ドライバ用のデバイスノードを作成する必要がありますが、これは発生しません。その理由は何ですか?

ドライバが正常にロードされたら、ドライバとそのノードを使用してプログラムをどのように書くことができますか?可能ですか、または直接ドライバを作成する必要がありますか?この問題を解決する他の方法はありますか?私はLinuxに初めて触れたので、ターミナルコマンドの答えはとても役に立ちます。よろしくお願いします。

ベストアンサー1

Raspberry Piに問題があるかどうかはわかりませんが(私はRaspberry Piがないため)、シリアルガジェットドライバをテストして使用する方法を教えてください。まず、プライマリコンピュータで次のことを試してください。

USBガジェットの仮想(エミュレートされた)ホストコントローラドライバをロードします。

sudo modprobe dummy_hcd

これはガジェットドライバのフレームワークとして機能し、lsusbコンピュータに表示される新しい「一般」USBバス(確認)とこれらのバス間のループバックを提供します。

これでシリアルガジェットドライバをロードします。

sudo modprobe g_serial

バスと/dev/ttyGS0ガジェットドライバに新しいデバイスを表示する必要があります。また、新しいデバイスによってシリアルクライアントのカーネルドライバがロードされるため、返品デバイスを購入してください/dev/ttyACM0

これらのデバイスに書き込んで読み取ることができ、通信が可能かどうかを確認できます。たとえば、cat /dev/ttyACM0あるウィンドウで実行し、echo foo > /dev/ttyGS0別のウィンドウで実行します。

疑うRaspberry PiをUSBクライアントモードに設定し、ガジェットドライバが接続できるように正しいHCDドライバをロードする必要があります。そうしないと、ガジェットドライバは観察したように何もしません。しかし、Raspberry Piに適したものが何であるかわかりません。

おすすめ記事