(57)【要約】【課題】コストアップの原因となるシステム再設計や高速ＣＰＵの搭載などを必要とせずに、ＵＳＢデータ通信の高速化を実現する。【解決手段】通常はＵＳＢ規格準拠のＰａｃｋｅｔＳｉｚｅを用いてＵＳＢデータ通信を行うＵＳＢ機器間において、ＵＳＢ規格で定められたＭａｘＰａｃｋｅｔＳｉｚｅよりも大きなＰａｃｋｅｔを用いてＵＳＢ規格外通信を行う方法を用いる。そのために、ＵＳＢホスト４００、ＵＳＢデバイス４０７接続時またはエニュメレーション処理時に、お互いが前記通信方法対応機器であるかどうかを判定できるようにソフトウェアの変更もしくは最低限のハードウェアの変更を行う。また、ＵＳＢホスト４００、ＵＳＢデバイス４０７それぞれに前記ＵＳＢ規格外通信に必要なバッファサイズを備えておく。【選択図】図５
2006209181.tif 000002
【特許請求の範囲】
【請求項１】
通常はＵＳＢ規格で定められたＰａｃｋｅｔＳｉｚｅで通信を行うＵＳＢ機器間において、ＵＳＢ規格で定められたＭａｘＰａｃｋｅｔＳｉｚｅよりも大きなＰａｃｋｅｔＳｉｚｅを用いてＵＳＢ規格外通信を行うことを特徴とするＵＳＢデータ通信方法。
【請求項２】
ＵＳＢホストにおいて、接続先のＵＳＢデバイスが前記ＵＳＢ規格外通信に対応している機器かどうか判定するステップと、前記接続先のＵＳＢデバイスから受信するＵＳＢデータ通信に用いるＭａｘＰａｃｋｅｔＳｉｚｅに基づいてＵＳＢデータ通信に必要なバッファサイズを確保するステップを有する請求項１に記載のＵＳＢデータ通信方法。
【請求項３】
ＵＳＢホスト自身が前記ＵＳＢ規格外通信に対応している機器であるということを前記接続先のＵＳＢデバイスに対して通知するステップを有する請求項２に記載のＵＳＢデータ通信方法。
【請求項４】
ＵＳＢデバイスにおいて、接続先のＵＳＢホストが前記ＵＳＢ規格外通信に対応している機器であるかどうかを判定するステップと、その結果に基づいて前記ＵＳＢ規格外通信に用いるＭａｘＰａｃｋｅｔＳｉｚｅを前記ＵＳＢデバイスのディスクリプタに設定するステップを有する請求項１に記載のＵＳＢデータ通信方法。
【請求項５】
前記接続先のＵＳＢホストの対応可能なＭａｘＰａｃｋｅｔＳｉｚｅと前記ＵＳＢデバイスの対応可能なＭａｘＰａｃｋｅｔＳｉｚｅとを比較し、その結果に基づいて前記ＵＳＢ規格外通信に用いるＭａｘＰａｃｋｅｔＳｉｚｅを前記ＵＳＢデバイスのディスクリプタに設定することを特徴とする請求項４に記載のＵＳＢデータ通信方法。
【請求項６】
接続先のＵＳＢデバイスがＵＳＢ規格で定められたＭａｘＰａｃｋｅｔＳｉｚｅよりも大きなＰａｃｋｅｔＳｉｚｅを用いるＵＳＢ規格外通信に対応している機器であるかどうかを判定する手段と、前記ＵＳＢ規格外通信に必要なバッファサイズを有するＵＳＢホスト。
【請求項７】
前記接続先のＵＳＢデバイスに、前記ＵＳＢ規格外通信に対応している機器であることを通知する手段を有することを特徴とする請求項６に記載のＵＳＢホスト。
【請求項８】
前記接続先のＵＳＢデバイスが前記ＵＳＢ規格外通信に対応している機器である場合は前記ＵＳＢ規格外通信を行い、前記ＵＳＢ規格外通信に対応していない機器である場合はＵＳＢ規格で定められたＰａｃｋｅｔＳｉｚｅを用いてＵＳＢデータ通信を行うことを特徴とする請求項７に記載のＵＳＢホスト。
【請求項９】
前記通知する手段として、前記接続先のＵＳＢデバイスに対するリクエストを用いることを特徴とする請求項７に記載のＵＳＢホスト。
【請求項１０】
前記通知する手段は、ＵＳＢ端子にかける電圧をＵＳＢ規格で定められた値よりも低い電圧を用いて前記接続先のＵＳＢデバイスに対してＵＳＢ規格外の接続認識処理を行うことを特徴とする請求項７に記載のＵＳＢホスト。
【請求項１１】
前記判定する手段として、前記接続先のＵＳＢデバイスに対するリクエストに対する前記接続先のＵＳＢデバイスからの応答を用いることを特徴とする請求項９に記載のＵＳＢホスト。
【請求項１２】
前記判定する手段として、前記ＵＳＢ規格外の接続認識処理に対する前記接続先のＵＳＢデバイスからの応答を用いることを特徴とする請求項１０に記載のＵＳＢホスト。
【請求項１３】
前記判定する手段として、前記ＵＳＢ規格外通信に対応しているＵＳＢデバイスに関する情報を保有し、前記接続先ＵＳＢデバイスから受信する機器情報と前記情報とを比較することを特徴とする請求項６に記載のＵＳＢホスト。
【請求項１４】
前記接続先のＵＳＢデバイスから受信するＭａｘＰａｃｋｅｔＳｉｚｅ情報に基づいて、ＵＳＢデータ通信に必要な送受信バッファサイズを確保することを特徴とする請求項６〜１３のいずれかに記載のＵＳＢホスト。
【請求項１５】
接続先のＵＳＢホストがＵＳＢ規格で定められたＭａｘＰａｃｋｅｔＳｉｚｅよりも大きなＰａｃｋｅｔＳｉｚｅを用いるＵＳＢ規格外通信に対応しているかどうかを判定する手段と、前記ＵＳＢ規格外通信に必要な送受信バッファサイズを有するＵＳＢデバイス。
【請求項１６】
前記接続先のＵＳＢホストが前記ＵＳＢ規格外通信に対応している機器である場合は前記ＵＳＢ規格外通信を行い、前記ＵＳＢ規格外通信に対応していない場合はＵＳＢ規格で定められたＰａｃｋｅｔＳｉｚｅを用いてＵＳＢデータ通信を行うことを特徴とする請求項１５に記載のＵＳＢデバイス。
【請求項１７】
前記接続先のＵＳＢホストの対応可能なＭａｘＰａｃｋｅｔＳｉｚｅと自身の対応可能なＭａｘＰａｃｋｅｔＳｉｚｅとを比較し、その結果に基づいて自身のディスクリプタにＵＳＢデータ通信に用いるＭａｘＰａｃｋｅｔＳｉｚｅを設定することを特徴とする請求項１５に記載のＵＳＢデバイス。
【請求項１８】
前記判定する手段として、前記接続先のＵＳＢホストから送信されるリクエストを調査することを特徴とする請求項１５に記載のＵＳＢデバイス。
【請求項１９】
前記接続先のＵＳＢホストがＵＳＢ端子にかける電圧をＵＳＢ規格で定められた値よりも低い電圧を用いてＵＳＢ規格外の接続認識処理を行っているかどうかということを調査することによって、前記接続先のＵＳＢホストが前記ＵＳＢ規格外通信に対応している機器であるかどうかを判定することを特徴とする請求項１５に記載のＵＳＢデバイス。
【請求項２０】
前記接続先のＵＳＢホストから前記接続先のＵＳＢホスト自身の対応可能なＭａｘＰａｃｋｅｔＳｉｚｅが送られてくるかどうかということを調査することによって、前記接続先のＵＳＢホストが前記ＵＳＢ規格外通信に対応している機器であるかどうかを判定することを特徴とする請求項１５に記載のＵＳＢデバイス。
【請求項２１】
自身のディスクリプタに設定したＭａｘＰａｃｋｅｔＳｉｚｅに基づいて、ＵＳＢデータ通信に必要な送受信バッファサイズを確保することを特徴とする請求項１５から２０のいずれかに記載のＵＳＢデバイス。
【請求項２２】
コンピュータが使用しているデータ通信コマンドが前記ＵＳＢ規格外通信に対応しているかどうかを判定し、前記データ通信コマンドが前記ＵＳＢ規格外通信に対応している場合に前記ＵＳＢ規格外通信を行うことを特徴とする請求項１５から２１のいずれかに記載のＵＳＢデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はユニバーサル・シリアル・バス（以下、ＵＳＢ）を利用したシステムにおいて、高速なデータ通信が要求されるＵＳＢホスト機器（以下、ＵＳＢホスト）、ＵＳＢデバイス機器（以下、ＵＳＢデバイス）及び前記ＵＳＢ機器間で用いられるＵＳＢデータ通信方法に関する。
【背景技術】
【０００２】
ＵＳＢは既に本格的に普及しており、ＵＳＢインターフェイスは様々なＰＣ周辺機器やＡＶ機器等に採用されている。そして、ＰＣ周辺記憶装置の大容量化やＡＶ機器の高画質化などといった性能向上に伴い、ＵＳＢを用いたデータ通信にも高速化が要求されるようになった。そこで、従来のＵＳＢ１．１  ＦｕｌｌＳｐｅｅｄ規格の４０倍の通信速度を実現する、ＵＳＢ２．０  ＨｉｇｈＳｐｅｅｄ規格が発表され、ＰＣ周辺の記憶装置などを中心に普及が進んでいる。
【０００３】
ここでＵＳＢデータ通信は、送信先のアドレスなどの制御情報を付加したデータの小さなまとまりであるＰａｃｋｅｔを使用する。そして、ＵＳＢホストとＵＳＢデバイスは、ＵＳＢデータ通信を開始する前に、エニュメレーション処理の中で、ＵＳＢデータ通信において使用可能なＰａｃｋｅｔの最大サイズ（以下、ＭａｘＰａｃｋｅｔＳｉｚｅ）を決定する。例えば、ＵＳＢのデータ転送規格の１つであるＢｕｌｋ転送においては、Ｆｕｌｌ  Ｓｐｅｅｄ規格でのＭａｘＰａｃｋｅｔＳｉｚｅは６４バイト、Ｈｉｇｈ  Ｓｐｅｅｄ規格でのＭａｘＰａｃｋｅｔＳｉｚｅは５１２バイトとなる。ここで、エニュメレーション処理とは、ＵＳＢホストが接続先のＵＳＢデバイスの初期化及び設定を行う処理である。図１において小さなＰａｃｋｅｔ（例えばＵＳＢ１．１  ＦｕｌｌＳｐｅｅｄ規格）を用いた通信方法と、大きなＰａｃｋｅｔ（例えばＵＳＢ２．０  ＨｉｇｈＳｐｅｅｄ規格）を用いた通信方法のＵＳＢデータ通信にかかる時間を比較する。１０１は小さなＰａｃｋｅｔを用いた通信方法、１０２は大きなＰａｃｋｅｔを用いた場合を表している。１０２は１０１に比べてＵＳＢデータ通信中のトランザクションのトークン（ＩＮ）、ハンドシェイク（ＡＣＫ）の回数が減少しており、その分ＵＳＢデータ通信にかかる時間が短縮される。また図２において、ＵＳＢデータ通信を行う際のＵＳＢデバイス内部での一連の処理の例を示す。２０２は小さなＰａｃｋｅｔ（例えばＵＳＢ１．１  ＦｕｌｌＳｐｅｅｄ規格）を用いた通信方法、２０１は大きなＰａｃｋｅｔ（例えばＵＳＢ２．０  ＨｉｇｈＳｐｅｅｄ規格）を用いた通信方法における内部処理を表している。ＵＳＢデバイスにおいては、コマンド解析、データ転送起動、データ転送完了処理、さらに転送が完了する度に発生する転送割り込みに対する処理を全て演算装置が行う。２０１は２０２に比べて一回のデータ転送起動で大量にデータ送信を行うことが可能になり、ＵＳＢデバイス内部の処理のオーバーヘッドを減らすことができる。
【０００４】
通常ＵＳＢホスト及びＵＳＢデバイスは規格で定められたＭａｘＰａｃｋｅｔＳｉｚｅ以下のＰａｃｋｅｔを用いてＵＳＢデータ通信を行うが、１つのＰａｃｋｅｔの送受信を行うためには図１、２で示したようにＵＳＢホストやＵＳＢデバイスの内部で様々な処理が必要となるため、期待値どおりの速度を出すことができない。そこで高速なＵＳＢデータ通信が必要な機器は、通信速度の低下を補う手段の一つとして大きなＭａｘＰａｃｋｅｔＳｉｚｅをサポートすることで、ＵＳＢデータ通信の高速化を実現している。
【０００５】
現在、外部記憶装置を中心としたＰＣ周辺機器では、すでにＨｉｇｈＳｐｅｅｄ対応機器が主流となっているが、家電や組み込みの世界においては、まだＦｕｌｌＳｐｅｅｄ対応機器が多く、ＨｉｇｈＳｐｅｅｄへの移行は進んでいない。特にＡＶ家電などの世界では、取り扱うマルチメディアコンテンツのデータが大きくなるにつれ、ＦｕｌｌＳｐｅｅｄでは十分なデータ通信速度が得られなくなっている。また、ＨｉｇｈＳｐｅｅｄ対応機器であっても実際のシステムでは内部処理のために規格値どおりの通信速度を出すことはできず、通信速度が不足する場合もある。しかし、既存の機器を機能拡張しようとすると、システムの再設計が必要となり、多大なコストがかかる。
【０００６】
従来は、特にＵＳＢ２．０を採用した場合のコストアップを抑えるために、データ送受信バッファを性能の低下がないよう複数のエンドポイントで共用することで可能な限り減らし、回路規模を小さくしている（例えば、特許文献１参照。）。
【特許文献１】特開２００２−９８４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、この特許文献１の対策では、ＵＳＢのデータ転送を制御しながらリアルタイムにＵＳＢの転送状況を解析してデータ通信バッファの再割り当てを行うための高性能なＣＰＵと、ＵＳＢ２．０コントローラやバッファ制御機構を搭載するためにシステム再設計が必要となる。
【０００８】
そこで、コストアップの原因となるシステム再設計や高速ＣＰＵの搭載などを必要とせずに、ＵＳＢデータ通信を高速化する方法が望まれている。
【０００９】
本発明は、システムの再設計や高速ＣＰＵの搭載などコストアップ要因となる手段を用いずに、ＵＳＢホストおよびＵＳＢデバイスそれぞれの制御ソフトウェアの変更のみ、もしくはさらに最低限のハードウェアの変更を行うことで、ＵＳＢデータ通信の高速化を実現することを目的としている。
【課題を解決するための手段】
【００１０】
前記の課題を解決するために、本発明では、通常はＵＳＢ規格に基づいた通信（以下、ＵＳＢ規格準拠の通信）を行う機器間において、ＵＳＢ規格で定められたＭａｘＰａｃｋｅｔＳｉｚｅよりも大きなサイズのデータＰａｃｋｅｔを用いてＵＳＢ規格外通信を行う方法を用いる。
【００１１】
そのために、ＵＳＢホストとＵＳＢデバイスに対して、ＵＳＢホスト、ＵＳＢデバイス接続時もしくはエニュメレーション処理時において次のような処理を行う手段を付加する。
【００１２】
ＵＳＢホストには、自身がＵＳＢ規格外通信を行うことができる機器（以下、ＵＳＢ規格外通信対応機器）であるということを接続先のＵＳＢデバイスに通知し、接続先のＵＳＢデバイスがＵＳＢ規格外通信対応機器であるかどうか判定する手段を付加する。またＵＳＢデバイスには、接続先のＵＳＢホストがＵＳＢ規格外通信対応機器であるかどうか判定する手段と、前記接続先のＵＳＢホストの対応可能なＭａｘＰａｃｋｅｔＳｉｚｅと自身の対応可能なＭａｘＰａｃｋｅｔＳｉｚｅとを比較してＵＳＢ規格外通信に用いることの可能なＭａｘＰａｃｋｅｔＳｉｚｅを設定し、自身のディスクリプタに登録する手段を付加する。また、ＵＳＢホスト、ＵＳＢデバイスそれぞれにＵＳＢ規格外通信に必要な送受信バッファサイズを備えておく。
【００１３】
なお、前記接続先のＵＳＢホストまたはＵＳＢデバイスがＵＳＢ規格外通信に対応していない場合には、ＵＳＢ規格準拠の通信を行う。
【発明の効果】
【００１４】
本発明によれば、ＵＳＢホストには自身がＵＳＢ規格外通信に対応していることを通知する手段と接続先のＵＳＢデバイスがＵＳＢ規格外通信に対応しているかどうかの判定手段を付加し、ＵＳＢデバイスには接続先のＵＳＢホストがＵＳＢ規格外通信に対応しているかどうかの判定手段と接続先のＵＳＢホストの対応可能なＭａｘＰａｃｋｅｔＳｉｚｅと自身の対応可能なＭａｘＰａｃｋｅｔＳｉｚｅとを比較してＵＳＢ規格外通信に用いることの可能なＭａｘＰａｃｋｅｔＳｉｚｅを設定する手段を付加することで、システム再設計や高速ＣＰＵの搭載を行うことなく、通常はＵＳＢ規格に基づいた通信を行うＵＳＢホスト及びＵＳＢデバイス機器間において、ＵＳＢデータ通信の高速化を実現することができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明のＵＳＢデータ通信方法の好適実施形態の構成、およびその処理について添付図面を用いて説明する。
【００１６】
図４は本発明におけるＵＳＢシステムの概略構成図であり、ＵＳＢホスト４００、及びＵＳＢデバイス４０７により構成されている。ＵＳＢホスト４００及び、ＵＳＢデバイス４０７はそれぞれのＵＳＢ端子をＵＳＢバス４０６に接続することにより、お互いに接続または取り外しが可能である。ＵＳＢホスト４００はＵＳＢホスト制御装置４０１、データ送受信バッファ４０２、機器制御装置４０３、記憶装置４０４、演算装置４０５を含む構成であり、ＵＳＢデバイス４０７は、ＵＳＢデバイス制御装置４０８、データ送受信バッファ４０９、演算装置４１０、記憶装置４１１、機器制御装置４１２を含む構成である。
【００１７】
図４に示すＵＳＢシステムの各構成要素の主機能を説明する。ＵＳＢホスト４００のＵＳＢホスト制御装置４０１は、ＵＳＢデバイス４０７との接続処理、ＵＳＢバス４０６上のデータ送受信処理、機器制御装置４０３へのデータ送受信処理を行う。記憶装置４０４はＵＳＢホスト制御装置４０１の制御を行う制御プログラムを格納しており、演算装置４０５はＵＳＢホスト制御装置４０１を制御する際、前記制御プログラムを使用する。ＵＳＢバス４０６上のデータ送受信処理は、データ送受信バッファ４０２を使用して行い、データ送受信に使用するバッファの大きさはＵＳＢホスト制御装置４０１が制御する。ＵＳＢデバイス４０７のＵＳＢデバイス制御装置４０８は、ＵＳＢホスト４００との接続処理、ＵＳＢバス４０６上のデータ送受信処理、機器制御装置４１２へのデータ送受信処理を行う。記憶装置４１１はＵＳＢデバイス制御装置４０８の制御を行う制御プログラムを格納しており、演算装置４１０がＵＳＢデバイス制御装置４０８を制御する際、記憶装置４１１に格納された制御プログラムを使用する。ＵＳＢバス４０６上のデータ送受信処理は、データ送受信バッファ４０９を使用して行い、データ送受信に使用するバッファの大きさはＵＳＢデバイス制御装置４０８が制御する。
【００１８】
（実施形態１）
本実施形態においては、ＵＳＢホストが接続先のＵＳＢデバイスに対して、エニュメレーション処理の中でユニークなＳＥＴ系のＵＳＢベンダリクエストを用いて、自身がＵＳＢ規格外通信対応機器であることを通知する。またＵＳＢデバイスは接続先のＵＳＢホストがＵＳＢ規格外通信対応機器であるかどうかをユニークなＳＥＴ系のＵＳＢベンダリクエストを用いて判定する。ここでＳＥＴ系のリクエストとは、ＵＳＢホストが接続先のＵＳＢデバイスに対して各種設定を行うためのコマンドである。なお、ＵＳＢホストが接続先のＵＳＢデバイスの情報を得る際には、ＧＥＴ系のリクエストを用いる。
【００１９】
図３はＵＳＢデバイスリクエストのデータ構造を示した図である。本発明では、リクエストの種類を表すｂＲｅｑｕｅｓｔ３０１に、ＵＳＢ規格で定められた範囲で独自の値を設定し、これをユニークなＳＥＴ系のＵＳＢベンダリクエストとする。
【００２０】
図５は本実施形態におけるＵＳＢホストの処理フローを表す図である。ＵＳＢホスト４００とＵＳＢデバイス４０７がＵＳＢバス４０６を介して接続されると、エニュメレーション処理が行われ、ステップＡ５１〜Ａ５９の一連の処理が実行される。
【００２１】
まず、ＵＳＢホスト４００とＵＳＢデバイス４０７がＵＳＢバス４０６を介して接続される（ステップＡ５１）。次にＵＳＢホスト４００がＵＳＢデバイス４０７を検出し、ＵＳＢデバイス４０７が通信可能な状態となる（ステップＡ５２）。そしてＵＳＢホスト４００、ＵＳＢデバイス４０７間でエニュメレーション処理が開始される（ステップＡ５３）。エニュメレーション処理中に、ＵＳＢホスト４００はユニークなＳＥＴ系のＵＳＢベンダリクエストを用いて、自身がＵＳＢ規格外通信対応機器であるという情報と、それに伴って自身の対応可能なＭａｘＰａｃｋｅｔＳｉｚｅをＵＳＢデバイス４０７へ送信する（ステップＡ５４）。
【００２２】
ユニークなＳＥＴ系のＵＳＢベンダリクエストに対してＵＳＢデバイス４０７は、リクエストを正常に受信したか、受信に失敗したか自身のステートをＵＳＢホスト４００に対して送信する。従って、ＵＳＢホスト４００は接続先のＵＳＢデバイス４０７からエラーのないリクエスト受信応答があるかどうか判定を行う（ステップＡ５５）。
【００２３】
判定の結果、ＵＳＢデバイス４０７が正常にユニークなＳＥＴ系のＵＳＢベンダリクエストを処理できた場合には、ＵＳＢホスト４００は接続先のＵＳＢデバイス４０７はＵＳＢ規格外通信対応機器であると判断し、後続の処理においてＵＳＢデバイス４０７から送られてくるＭａｘＰａｃｋｅｔＳｉｚｅを受信し、その値をＵＳＢデータ通信で用いるＭａｘＰａｃｋｅｔＳｉｚｅとして設定する（ステップＡ５６）。
【００２４】
また判定の結果、ユニークなＳＥＴ系のＵＳＢベンダリクエストに対してＵＳＢデバイス４０７が正常に応答しない場合は、ＵＳＢホスト４００は接続先のＵＳＢデバイス４０７はＵＳＢ規格外通信に対応していない機器であると判断し、後続のエニュメレーション処理においてＵＳＢデバイス４０７から送信されるＵＳＢ規格準拠のＭａｘＰａｃｋｅｔＳｉｚｅをＵＳＢデータ通信で使用するＭａｘＰａｃｋｅｔＳｉｚｅとして設定する（ステップＡ５７）。
【００２５】
ＵＳＢデバイス４０７がＵＳＢ規格外通信に対応している場合においても、対応していない場合においても後続の処理は以下のように行う。
【００２６】
ＵＳＢホストはＵＳＢデータ通信に用いるＭａｘＰａｃｋｅｔＳｉｚｅデータを格納できる大きさの送受信バッファの領域を設定する（ステップＡ５８）。以上で、エニュメレーション処理が完了となる（ステップＡ５９）。
【００２７】
図６は本実施形態におけるＵＳＢデバイスの処理フローを表す図である。ＵＳＢホスト４００とＵＳＢデバイス４０７がＵＳＢバス４０６を介して接続されると、ステップＢ６１〜Ｂ７１の一連の処理が実行される。
【００２８】
まず、ＵＳＢホスト４００とＵＳＢデバイス４０７がＵＳＢバス４０６を介して接続される（ステップＢ６１）。次にＵＳＢホスト４００がＵＳＢデバイス４０７を検出し、ＵＳＢデバイス４０７が通信可能な状態となり（ステップＢ６２）、ＵＳＢホスト、ＵＳＢデバイス間においてエニュメレーション処理が開始される（ステップＢ６３）。
【００２９】
エニュメレーション処理中に、ＵＳＢデバイス４０７は、ＵＳＢホスト４００から送信されてくるＳＥＴ系のリクエスト中のｂＲｅｑｕｅｓｔの値としてベンダ独自の値が設定されているかどうか、即ちＳＥＴ系のリクエストがＵＳＢ規格外通信に対応していることを示すユニークなＳＥＴ系のＵＳＢベンダリクエストかどうか判定する（ステップＢ６４）。
【００３０】
判定の結果、ユニークなＳＥＴ系のＵＳＢベンダリクエストを受信した場合には、ＵＳＢデバイス４０７は接続先のＵＳＢホスト４００はＵＳＢ規格外通信対応機器であると判断し、ユニークなＳＥＴ系のＵＳＢベンダリクエストに伴って送られてくる接続先のＵＳＢホスト４００の対応可能なＭａｘＰａｃｋｅｔＳｉｚｅを受信する（ステップＢ６５）。そして、前記ユニークなＳＥＴ系のＵＳＢベンダリクエストを正常に処理した旨をＵＳＢホスト４００に対して応答する（ステップＢ６６）。
【００３１】
続いて、ＵＳＢデバイス４０７はＵＳＢホスト４００の対応可能なＭａｘＰａｃｋｅｔＳｉｚｅと自身が対応可能なＭａｘＰａｃｋｅｔＳｉｚｅとを比較して、ＵＳＢホスト４００、ＵＳＢデバイス４０７間でのＵＳＢデータ通信に用いるＭａｘＰａｃｋｅｔＳｉｚｅを決定し、記憶装置４１１内の自身のディスクリプタに設定する（ステップＢ６７）。
【００３２】
また、判定の結果、ＵＳＢホスト４００からユニークなＳＥＴ系のＵＳＢベンダリクエストが送られてこない場合は、ＵＳＢデバイス４０７はＵＳＢ規格に定められた（以下、ＵＳＢ規格準拠）ＭａｘＰａｃｋｅｔＳｉｚｅを自身のディスクリプタに設定する（ステップＢ６８）。
【００３３】
後続の処理は、ＵＳＢホスト４００がＵＳＢ規格外通信に対応している場合においても、対応していない場合においても以下のように行う。
【００３４】
ＵＳＢデバイス４０７は、ＧＥＴ系のＵＳＢ標準リクエストに対して、ディスクリプタ内のＭａｘＰａｃｋｅｔＳｉｚｅを、ＵＳＢホスト４００に送信する（ステップＢ６９）。
【００３５】
その後、ＵＳＢデバイス４０７は、ＵＳＢデータ通信で使用するＭａｘＰａｃｋｅｔＳｉｚｅデータを格納できる大きさの送受信バッファの領域を設定する（ステップＢ７０）。以上で、エニュメレーション処理が完了となる（ステップＢ７１）。
【００３６】
本実施形態で示した一連の処理を行うことにより、通常はＵＳＢ規格準拠のＵＳＢデータ通信を行う機器間においてＵＳＢホスト、ＵＳＢデバイス両者がＵＳＢ規格外通信に対応している場合は高速なＵＳＢデータ通信が可能となる。
【００３７】
（実施形態２）
本実施形態においては、ＵＳＢホストは接続先のＵＳＢデバイスとの接続認識処理時に自身がＵＳＢ規格外通信対応機器であるということを通知する。また、ＵＳＢデバイスは接続先のＵＳＢホストがＵＳＢ規格外通信対応機器であるかどうかということを、接続認識処理時に判定する。なお、接続認識処理後に、エニュメレーション処理は実行される。
【００３８】
図７は本実施形態におけるＵＳＢホストの処理フローを表している。図４に示すように、ＵＳＢホスト４００とＵＳＢデバイス４０７がバス４０６を介して接続されると、ステップＣ８１〜Ｃ９０の一連の処理が実行される。
【００３９】
まず、ＵＳＢホスト４００とＵＳＢデバイス４０７がＵＳＢバス４０６を介して接続される（ステップＣ８１）。するとＵＳＢホスト４００は、ＵＳＢ端子にＵＳＢ規格準拠の値よりも低い電圧をかけることによって、接続先のＵＳＢデバイスに対してＵＳＢ規格外の接続認識処理を開始する（ステップＣ８２）。そしてＵＳＢホスト４００はＵＳＢ規格外の接続認識処理に対して、接続先のＵＳＢデバイス４０７から応答があるかどうか判定する（ステップＣ８３）。なお、このＵＳＢ規格準拠の値よりも低い電圧とは、一般のＵＳＢデバイスではＵＳＢホストに接続されたと認識することのできないほどの低電圧を意味する。
【００４０】
判定の結果、接続先のＵＳＢデバイス４０７から応答があった場合には、ＵＳＢホスト４００は接続先のＵＳＢデバイスがＵＳＢ規格外通信対応機器であると判断し、エニュメレーション処理を開始する（ステップＣ８４）。エニュメレーション処理の中で、ＵＳＢホストは自身の対応可能なＭａｘＰａｃｋｅｔＳｉｚｅを接続先のＵＳＢデバイスに対してユニークなＳＥＴ系のベンダリクエストを用いて送信し（ステップＣ８５）、そしてＧＥＴ系の標準リクエスト時にＵＳＢデータ通信に用いるＭａｘＰａｃｋｅｔＳｉｚｅを接続先のＵＳＢデバイスから受信し、ＵＳＢデータ通信に用いるＭａｘＰａｃｋｅｔＳｉｚｅとして設定する（ステップＣ８６）。更に、ＵＳＢホスト４００は、ＵＳＢデータ通信で使用するＭａｘＰａｃｋｅｔＳｉｚｅデータを格納できる大きさの送受信バッファの領域を設定する（ステップＣ８９）。以上で、エニュメレーション処理が完了となる（ステップＣ９０）。
【００４１】
判定の結果、接続先のＵＳＢデバイス４０７から応答が無かった場合には、ＵＳＢホスト４００は接続先のＵＳＢデバイス４０７がＵＳＢ規格外通信に対応していない機器であると判断し、ＵＳＢ規格で定められた電圧をＵＳＢ端子にかけることによって、再度接続認識処理を行う（ステップＣ８７）。そして、エニュメレーション処理を開始し（ステップＣ８８）、ＧＥＴ系の標準リクエスト時にＵＳＢデータ通信に用いるＭａｘＰａｃｋｅｔＳｉｚｅ情報を接続先のＵＳＢデバイスから受信し、ＵＳＢデータ通信に用いるＭａｘＰａｃｋｅｔＳｉｚｅとして設定する（ステップＣ８６）。更に、ＵＳＢホスト４００は、ＵＳＢデータ通信で使用するＭａｘＰａｃｋｅｔＳｉｚｅデータを格納できる大きさの送受信バッファの領域を設定する（ステップＣ８９）。以上で、エニュメレーション処理が完了となる（ステップＣ９０）。
【００４２】
図８は本実施形態におけるＵＳＢデバイス４０７の処理フローである。この場合ステップＤ９１〜Ｄ１０２の一連の処理が実行される。
【００４３】
まず、ＵＳＢホスト４００とＵＳＢデバイス４０７がＵＳＢバス４０６を介して接続される（ステップＤ９１）。次にＵＳＢデバイス４０７は、ＵＳＢホスト４００がＵＳＢ端子に対してＵＳＢ規格準拠の値よりも低い電圧で接続認識処理を行っているかどうか、即ちＵＳＢ規格外の接続認識処理を行っているかどうか判定を行う（ステップＤ９２）。
【００４４】
判定の結果、ＵＳＢホスト４００がＵＳＢ規格外の接続認識処理を行っている、即ち接続先のＵＳＢホストがＵＳＢ規格外通信対応機器であると判断すると、ＵＳＢホスト４００に対して処理を正常に認識している旨を応答する（ステップＤ９３）。そして、エニュメレーション処理を開始する（ステップＤ９４）。エニュメレーション処理の中でＵＳＢデバイス４０７は、接続先のＵＳＢホスト４００の対応可能なＭａｘＰａｃｋｅｔＳｉｚｅを受信し（ステップＤ９５）、自身の対応可能なＭａｘＰａｃｋｅｔＳｉｚｅと比較することによって、ＵＳＢデータ通信に用いるＭａｘＰａｃｋｅｔＳｉｚｅを決定し、自身のディスクリプタに設定する（ステップＤ９６）。
【００４５】
また判定の結果、ＵＳＢホスト４００がＵＳＢ規格準拠の電圧によって接続認識処理を行っている場合は、接続先のＵＳＢホスト側の接続認識処理を正常に認識している旨を接続先のＵＳＢホストに対して応答する（ステップＤ９７）。また、接続先のＵＳＢホストはＵＳＢ規格外通信に対応していない機器であると判断する。そして、エニュメレーション処理を開始する（ステップＤ９８）。ＵＳＢデバイス４０７は、ＵＳＢデータ通信に用いるＭａｘＰａｃｋｅｔＳｉｚｅとして、ＵＳＢ規格準拠の値を自身のディスクリプタに設定する（ステップＤ９９）。
【００４６】
後続の処理は、ＵＳＢホスト４００がＵＳＢ規格外通信に対応している場合においても、対応していない場合においても以下のように行う。
【００４７】
ＵＳＢデバイス４０７はＵＳＢデータ通信に用いるＭａｘＰａｃｋｅｔＳｉｚｅを、ＧＥＴ系のＵＳＢ標準リクエストに対して送信し（ステップＤ１００）、更にＵＳＢデータ通信で使用するＭａｘＰａｃｋｅｔＳｉｚｅデータを格納できる大きさの送受信バッファの領域を設定する（ステップＤ１０１）。以上で、エニュメレーション処理が完了する（ステップＤ１０２）。
【００４８】
本実施形態に示した処理を行うことで、エニュメレーション処理を行う前にＵＳＢホスト及びＵＳＢデバイスがＵＳＢ規格外通信対応機器であるかどうかということを判定することができる。この方法は、実施形態１で示したユニークなＳＥＴ系のＵＳＢベンダリクエストを、ＵＳＢホスト及びＵＳＢデバイスがＵＳＢ規格外通信に対応しているかどうかの判定手段として使用することが不可能な場合に有効である。
【００４９】
なお、本実施形態においてユニークなＳＥＴ系のＵＳＢベンダリクエストはＵＳＢホスト及びＵＳＢデバイスがＵＳＢ規格外通信に対応しているかどうかの判定手段としては使用されないものとする。
【００５０】
（実施形態３）
本実施形態においては、予めＵＳＢホストにＵＳＢ規格外通信に対応したＵＳＢデバイスの機器情報などを識別情報として保持させておく。このことによって、接続先のＵＳＢデバイスから受信する機器情報と予め保持している識別情報とを比較することによって、接続先のＵＳＢデバイスがＵＳＢ規格外通信に対応しているかどうかということを判定する。
【００５１】
なお、ＵＳＢデバイスはエニュメレーション処理において接続先のＵＳＢホストが自身の対応可能なＭａｘＰａｃｋｅｔＳｉｚｅを送ってくるかどうかによって、接続先のＵＳＢホストがＵＳＢ規格外通信対応機器であるかどうかを判定することになる。
【００５２】
図９は本実施形態におけるＵＳＢホスト４００の処理フローである。この場合ステップＥ１１１〜Ｅ１１８の一連の処理が実行される。
【００５３】
まず、ＵＳＢホスト４００とＵＳＢデバイス４０７がＵＳＢバス４０６を介して接続される（ステップＥ１１１）。そしてエニュメレーション処理が開始される（ステップＥ１１２）。エニュメレーション処理の中で、ＵＳＢホスト４００はＵＳＢデバイス４０７から機器情報を受信する（ステップＥ１１３）。次にＵＳＢホスト４００は受信した機器情報と既に保持している識別情報とが一致するか、即ちＵＳＢデバイス４０７がＵＳＢ規格外通信対応機器であるかどうかを判定する（ステップＥ１１４）。
【００５４】
判定の結果、ＵＳＢホスト４００の保持する識別情報とＵＳＢデバイス４０７の持つ識別情報が一致した場合、ＵＳＢホストは接続先のＵＳＢデバイス４０７がＵＳＢ規格外通信対応機器であると判断し、ＵＳＢホスト４００の対応可能なＭａｘＰａｃｋｅｔＳｉｚｅを接続先のＵＳＢデバイス４０７にユニークなＳＥＴ系のベンダリクエストを用いて送信する（ステップＥ１１５）。
【００５５】
後続の処理は、ＵＳＢホスト４００がＵＳＢ規格外通信に対応している場合においても、対応していない場合においても以下のように行う。
【００５６】
まずＵＳＢホスト４００はＧＥＴ系の標準リクエスト時に接続先のＵＳＢデバイス４０７からＵＳＢデータ通信に用いるＭａｘＰａｃｋｅｔＳｉｚｅを受信し、ＵＳＢデータ通信に用いるＭａｘＰａｃｋｅｔＳｉｚｅとして設定し（ステップＥ１１６）、ＵＳＢデータ通信で使用するＭａｘＰａｃｋｅｔＳｉｚｅデータを格納できる大きさの送受信バッファの領域を設定する。（ステップＥ１１７）。以上でエニュメレーション処理が完了する（ステップＥ１１８）。
【００５７】
図１０は本実施形態におけるＵＳＢデバイス４０７の処理フローである。この場合ステップＦ１２１〜Ｆ１２９の一連の処理が実行される。
【００５８】
まず、ＵＳＢホスト４００とＵＳＢデバイス４０７がＵＳＢバス４０６を介して接続される（ステップＦ１２１）。するとエニュメレーション処理が開始される（ステップＦ１２２）。エニュメレーション処理の中で、ＵＳＢデバイス４０７は接続先のＵＳＢホスト４００に対して機器情報を送信する（ステップＦ１２３）。次に、接続先のＵＳＢホスト４００からＵＳＢホストの対応可能なＭａｘＰａｃｋｅｔＳｉｚｅ情報が送信されてくるかどうかということによって、接続先のＵＳＢホストがＵＳＢ規格外通信対応機器であるかどうかを判定する（ステップＦ１２４）。
【００５９】
判定の結果、接続先のＵＳＢホストから対応可能なＭａｘＰａｃｋｅｔＳｉｚｅ情報が送られてきた場合、即ち接続先のＵＳＢホストがＵＳＢ規格外通信対応機器である場合は、ＵＳＢデータ通信に用いるＭａｘＰａｃｋｅｔＳｉｚｅを決定し、自身のディスクリプタに設定する（ステップＦ１２５）。
【００６０】
また判定の結果、接続先のＵＳＢホストから対応可能なＭａｘＰａｃｋｅｔＳｉｚｅが送られてこない場合は、即ち接続先のＵＳＢホストはＵＳＢ規格外通信に対応していない機器であると判断した場合は、ＵＳＢデータ通信に用いるＭａｘＰａｃｋｅｔＳｉｚｅとして、ＵＳＢ規格準拠の値をディスクリプタに設定する（ステップＦ１２６）。
【００６１】
後続の処理は、ＵＳＢホスト４００がＵＳＢ規格外通信に対応している場合においても、対応していない場合においても以下のように行う。
【００６２】
ＵＳＢデバイス４０７は接続先のＵＳＢホストに対して、ＵＳＢデータ通信に用いるＭａｘＰａｃｋｅｔＳｉｚｅをＧＥＴ系のＵＳＢ標準リクエストに対して送信し（ステップＦ１２７）、ＵＳＢデータ通信で使用するＭａｘＰａｃｋｅｔＳｉｚｅデータを格納できる大きさの送受信バッファの領域を設定する（ステップＦ１２８）。以上でエニュメレーション処理が完了する（ステップＦ１２９）。
【００６３】
本実施形態に示した処理は、実施形態１で示したユニークなＳＥＴ系のＵＳＢベンダリクエストを、ＵＳＢホスト及びＵＳＢデバイスがＵＳＢ規格外通信に対応しているかどうかの判定手段として使用することが不可能な場合に有効である。
【００６４】
なお、本実施形態においてユニークなＳＥＴ系のＵＳＢベンダリクエストはＵＳＢホスト及びＵＳＢデバイスがＵＳＢ規格外通信に対応しているかどうかの判定手段としては使用されないものとする。
【００６５】
（実施形態４）
本実施形態では、ＵＳＢホスト４００としてＷｉｎｄｏｗｓ（登録商標）などの汎用ＯＳを搭載したコンピュータを使用する場合を考える。本実施形態は実施形態１〜３までに示したようなエニュメレーション処理が完了し、ＵＳＢホスト４００、ＵＳＢデバイス４０７間においてＵＳＢデータ通信が可能になった状態を想定している。仮にエニュメレーション処理が完了し、ＵＳＢ規格外通信に対応可能であると判断されたとしても、汎用ＯＳに搭載された汎用デバイスドライバが対応できなければ、ＵＳＢ規格外通信方法を使用することはできない。そこで、ＵＳＢデバイスはコンピュータの使用しているデータ通信コマンドがＵＳＢ規格外通信に対応しているかどうかということを更に判定する必要がある。
【００６６】
図１１は、汎用ＯＳを搭載したコンピュータとＵＳＢデバイス４０７がＵＳＢバス４０６を介して接続され、エニュメレーション処理終了後にコンピュータ、ＵＳＢデバイス４０７間においてデータ通信を行っているときのＵＳＢデバイス４０７における処理フローを示している。なお、本実施形態ではコンピュータ、ＵＳＢデバイス４０７間で既にエニュメレーション処理が完了し、両者ともにＵＳＢ規格外通信対応機器であると判断された場合を想定している。
【００６７】
ＵＳＢデバイス４０７とコンピュータ間においてデータ通信が開始されると、ＵＳＢデバイス４０７はコンピュータが使用しているデータ通信コマンドが、ＵＳＢ規格外通信に対応しているかどうかを判定する（ステップＧ１３１）。ＵＳＢデバイス４０７はこの判定を行うために、事前にＵＳＢ規格外通信に対応しているデータ通信コマンドに関する情報を保持しておく。そして保持している情報と、コンピュータの使用しているデータ通信コマンドとが一致するかどうか比較し、判定を行う。
【００６８】
判定の結果、コンピュータの使用しているコマンドがＵＳＢ規格外通信に対応している場合にはＵＳＢ規格よりも大きなＰａｃｋｅｔを用いてデータ通信を行う（ステップＧ１３２）。
【００６９】
また判定の結果、コンピュータの使用しているデータ通信コマンドがＵＳＢ規格外通信に対応していない場合には、ＵＳＢ規格に準拠したＰａｃｋｅｔを用いてデータ通信を行う（ステップＧ１３３）。
【００７０】
本実施形態における処理を行うことで、ＵＳＢホスト４００として汎用ＯＳを搭載したコンピュータを使用した場合でも、ＵＳＢ規格外通信方法を使用することが可能となる。
【００７１】
上記の実施形態１〜４までのいずれの場合においても、詳述した一連の処理を行うことにより通常はＵＳＢ規格準拠のＵＳＢデータ通信を行う機器間において、ＵＳＢホスト、ＵＳＢデバイス両者がＵＳＢ規格外通信対応機器である場合はＵＳＢ規格で定められたＰａｃｋｅｔＳｉｚｅ以上のＰａｃｋｅｔを用いてＵＳＢ規格外通信を行うことができる。このことはＵＳＢ１．１規格対応の機器における機能拡張という点に限らず、ＵＳＢ２．０規格対応の機器、さらには将来的により高速なＵＳＢデータ通信規格に対応した機器において通信速度が不足した場合においても、有効な手段であることを意味している。
【産業上の利用可能性】
【００７２】
本発明におけるＵＳＢデータ通信方法は、ＵＳＢ機器においてデータ通信の高速化が必要な場合や、内部処理のために通信速度が不足した場合の対策として有用である。
【図面の簡単な説明】
【００７３】
【図１】小さなＰａｃｋｅｔと、大きなＰａｃｋｅｔを用いた場合のＵＳＢデータ通信の内容の比較を示す図
【図２】小さなＰａｃｋｅｔと、大きなＰａｃｋｅｔを用いた場合のＵＳＢデバイス内部処理の一例を比較する図
【図３】ＵＳＢデバイスリクエストのデータ構造を示す図
【図４】本発明の実施形態におけるシステムの概略構成図
【図５】実施形態１におけるＵＳＢホストの処理フローチャート
【図６】実施形態１におけるＵＳＢデバイスの処理フローチャート
【図７】実施形態２におけるＵＳＢホストの処理フローチャート
【図８】実施形態２におけるＵＳＢデバイスの処理フローチャート
【図９】実施形態３におけるＵＳＢホストの処理フローチャート
【図１０】実施形態３におけるＵＳＢデバイスの処理フローチャート
【図１１】実施形態４の処理フローチャート
【符号の説明】
【００７４】
１０１  小さなＰａｃｋｅｔを使用した場合のＵＳＢデータ通信の内容
１０２  大きなＰａｃｋｅｔを使用した場合のＵＳＢデータ通信の内容
２０１  大きなＰａｃｋｅｔを使用した場合のＵＳＢデバイス内部処理
２０２  小さなＰａｃｋｅｔを使用した場合のＵＳＢデバイス内部処理
３０１  ｂＲｅｑｕｅｓｔ
４００  ＵＳＢホスト
４０１  ＵＳＢホスト制御装置
４０２  ＵＳＢホストデータ送受信バッファ
４０３  ＵＳＢホスト機器制御装置
４０４  ＵＳＢホスト記憶装置
４０５  ＵＳＢホスト演算装置
４０６  ＵＳＢバス
４０７  ＵＳＢデバイス
４０８  ＵＳＢデバイス制御装置
４０９  ＵＳＢデバイスデータ送受信バッファ
４１０  ＵＳＢデバイス演算装置
４１１  ＵＳＢデバイス記憶装置
４１２  ＵＳＢデバイス機器制御装置
【図４】
2006209181.tif 000003
【図６】
2006209181.tif 000004
【図７】
2006209181.tif 000005
【図８】
2006209181.tif 000006
【図９】
2006209181.tif 000007
【図１０】
2006209181.tif 000008
【図１１】
2006209181.tif 000009
【図１】
2006209181.tif 000010
【図２】
2006209181.tif 000011
【図３】
2006209181.tif 000012
【図５】
2006209181.tif 000013