2

Freescale KinetisマイクロコントローラのUSB周辺機器について学ぶためのコードを書いています。私はLinuxホスト上で列挙することができました。&は、EP0のベンダーカスタムコードを使ってパケットを受信し、libusbテストプログラムとやりとりすることができます。非ゼロエンドポイント(libusb)でUSB制御トランザクションを送信する方法は?

マイクロコントローラで追加のコントロールエンドポイント(ゼロ以外のエンドポイント番号)を設定できるようですが、libusbがこれらのエンドポイントに制御を送信/受信させる方法はありません。 (libusb_control_transferはエンドポイント番号を必要としませんが、libusb_bulk_transferlibusb_interrupt_transferがあります)

ゼロ以外のコントロールエンドポイントは珍しくないか、不要で不要であることは迷惑ですか? libusbに制御トランザクションを非ゼロエンドポイントに実行させる何らかの方法はありますか?

答えて

2

libusbに制御トランザクションを非ゼロのエンドポイントに実行させる方法はありますか?

あなたは、非同期I/OのAPIのlibusb_transfer構造でendpointフィールドを変更しようとすることができます。

しかし、あなたのマイクロコントローラが実際に非ゼロ制御エンドポイントをサポートできるのであれば、それは私には驚きです。

実際には、割り込みまたはバルクエンドポイントのどちらかを使用します。どちらもオーバーヘッドが少なく、バルク転送で高いスループットを実現します(たとえば、USB 2.0 SPEC表5-2と表5-9を参照)。

+0

ありがとう...私はlibusbの同期部分を使用していたので、send_control関数をコピーして、別のエンドポイントをビルドする非同期構造にプラグインするように変更しました。喜びはありませんが、パケットが出ているかどうかを知るプロトコルアナライザはありません。 (マイクロコントローラのドキュメントが間違っていることは驚くことではないでしょう)とにかく、他のタイプのエンドポイントを試し、何が起こるかを見ていきます。 –

関連する問題