• 締切済み

USB のバルク転送における、データパケットのデータ長

USBのデータパケットで送信されるデータ長に関してお伺いします。 USBの仕様書には最大データサイズに関しては規定があるのですが(64Byte=FS, Bulk など)、データ転送(PID=IN, OUT)の「個々のパケット」のデータ長を、データ受け側はどのようにして知るのでしょうか? パケットのデータ長をあらわすフィールドがデータパケットの中には存在しないので、どのようにしてホスト/デバイスがパケットの長さを知るのか疑問に思っています。 SETUPステージでは、SET_CONFIGURATIONのwLengthで引き続くデータサイズが分かりそうなのですが。。 USBは間なぎ始めたばかりで不慣れですが、宜しくお願い致します。

みんなの回答

  • OKwebb
  • ベストアンサー率44% (92/208)
回答No.1

トークンパケットにてエンドポイントが指定されているからじゃないかなぁ。 参考URL参照のこと

参考URL:
http://www.kumikomi.net/article/explanation/2007/22usb1/09.html
tk_1980024
質問者

補足

確かに、各エンドポイントのバッファサイズの情報は、ホストとデバイスで交換されるのですが、常に最大サイズのデータ長を持ったパケットが来る、とは限りませんよね? 上のページでも「エンドポイントのバッファ・サイズより大きなサイズのデータが転送されることはありません」とあり、最大サイズ以下でさまざまなデータ長をもつパケットがくることが示唆されているように思えます。 デバイスはデータ長を知らずにデータを処理できるのでしょうか?

関連するQ&A