(57)【要約】【課題】ＵＳＢ２．０コントローラ又はＵＳＢ１．１コントローラを選択的に使用してデータ転送を行う場合において、従来のＵＳＢＤ等の上位モジュールを転用可能な新たな枠組みを提供する。【解決手段】ＵＳＢデバイスがＵＳＢ２．０に対応するか否かを判断する工程と、ＵＳＢ２．０に対応する場合、関数参照テーブルに共通データ転送要求に対応づけてＵＳＢ２．０コントローラドライバ関数を登録し、そうでないと判断した場合、関数参照テーブルに共通データ転送要求に対応づけてＵＳＢ１．１コントローラドライバ関数を登録する工程と、共通データ転送要求を受け付ける工程と、関数参照テーブルを参照して前記受け付けた共通データ転送要求に対応するコントローラドライバ関数を呼び出し、ＵＳＢ２．０トコントローラ又はＵＳＢ１．１コントローラを選択的に使用してデータ転送を実行させる工程と、を備える。【選択図】  図１
2006252335.tif 000002
【特許請求の範囲】
【請求項１】
ＵＳＢ２．０規格ホストコントローラ又はＵＳＢ１．１規格ホストコントローラを選択的に使用してデータ転送を行う場合のデータ転送制御方法であって、
ＵＳＢポートに接続されているＵＳＢデバイス装置がＵＳＢ２．０規格に対応するＵＳＢデバイス装置であるか否かを判断する工程と、
ＵＳＢ２．０規格に対応するＵＳＢデバイス装置であると判断した場合、関数参照テーブルに、ホストコントローラの種別を区別しない形式で規定されるデータ転送に関わる要求（以下、「共通データ転送要求」という）に対応づけて、ＵＳＢ２．０規格ホストコントローラドライバの対応する関数を登録し、一方、そうでないと判断した場合、前記関数参照テーブルに、共通データ転送要求に対応づけて、ＵＳＢ１．１規格ホストコントローラドライバの対応する関数を登録する工程と、
共通データ転送要求を受け付ける工程と、
前記関数参照テーブルを参照して前記受け付けた共通データ転送要求に対応するホストコントローラドライバの関数を呼び出し、ＵＳＢ２．０規格ホストコントローラ又はＵＳＢ１．１規格ホストコントローラを選択的に使用してデータ転送を実行させる工程と、
を備えることを特徴とするデータ転送制御方法。
【請求項２】
前記共通データ転送要求は、ＵＳＢ１．１規格データ転送システムにおいて用いられるデータ転送要求の形式と同一であることを特徴とする請求項１記載のデータ転送制御方法。
【請求項３】
前記登録する工程は、パイプオープン要求を受け付けた場合に実行されることを特徴とする請求項１又は２記載のデータ転送制御方法。
【請求項４】
前記ＵＳＢ２．０規格ホストコントローラが、ＥＨＣＩ規格のＵＳＢホストコントローラであることを特徴とする請求項１乃至３のいずれか１項に記載のデータ転送制御方法。
【請求項５】
ＵＳＢ２．０規格ホストコントローラ又はＵＳＢ１．１規格ホストコントローラを選択的に使用してデータ転送を行うためのデータ転送制御装置であって、
ＵＳＢポートに接続されているＵＳＢデバイス装置がＵＳＢ２．０規格に対応するＵＳＢデバイス装置であるか否かを判断する機能と、
ＵＳＢ２．０規格に対応するＵＳＢデバイス装置であると判断した場合、関数参照テーブルに、ホストコントローラの種別を区別しない形式で規定されるデータ転送に関わる要求（以下、「共通データ転送要求」という）に対応づけて、ＵＳＢ２．０規格ホストコントローラドライバの対応する関数を登録し、一方、そうでないと判断した場合、前記関数参照テーブルに、共通データ転送要求に対応づけて、ＵＳＢ１．１規格ホストコントローラドライバの対応する関数を登録する機能と、
共通データ転送要求を受け付ける機能と、
前記関数参照テーブルを参照して前記受け付けた共通データ転送要求に対応するホストコントローラドライバの関数を呼び出し、ＵＳＢ２．０規格ホストコントローラ又はＵＳＢ１．１規格ホストコントローラを選択的に使用してデータ転送を実行させる機能と、
を備えることを特徴とするデータ転送制御装置。
【請求項６】
請求項１乃至４のいずれか１項に記載のデータ転送制御方法をコンピュータで実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送制御方法、及びデータ転送制御装置に関する。
【背景技術】
【０００２】
ＵＳＢ（Universal Serial Bus）２．０規格は、ＵＳＢ１．１規格に対する互換性を持ちながら、ＵＳＢ １．１よりも高速な４８０Ｍｂｐｓ（ＨＳモード）のデータ転送速度を実現できる規格である。かかるＵＳＢ２．０規格に対応したＵＳＢコントローラの仕様を定義したものとして、ＥＨＣＩ（Enhanced Host Controller Interface）が知られている。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ＥＨＣＩを採用するデータ転送システムでは、通常、図８に示すように、ＵＳＢ２．０規格ホストコントローラ（ＥＨＣＩ）又はＵＳＢ１．１規格ホストコントローラ（ＣＨＣＩ（Companion Host Controller Interface））を選択的に使用してデータ転送を行う枠組みを採る。
【０００４】
このような枠組みでは、接続されるＵＳＢデバイス装置がＵＳＢ１．１規格に基づくものかＵＳＢ２．０規格に基づくものかの判断結果に基づいて、使用するホストコントローラに対応する適切なドライバ、すなわちＣＨＣＤ（Companion Host Controller Driver）又はＥＨＣＤ（Enhanced Host Controller Driver）の関数を呼び出す処理が必要となる。
【０００５】
ここで、従来のＵＳＢ１．１規格のデータ転送システムでは、図９に示すように、ＵＳＢ１．１ホストコントローラ（ＣＨＣＩ）のみを有する構成となるため、ＵＳＢＤ等の上位モジュールにおいて、上記のようなホストコントローラに対応するドライバ関数を呼び出すといった処理の必要はなく、実際に実装されていない。
【０００６】
そのため、図８に示すような枠組みに、従来のＵＳＢ１．１規格のデータ転送システムにおけるＵＳＢＤ等の上位モジュールをそのまま組み込んだとしても、ホストコントローラを選択的に使用してデータ転送を行うことはできない。
【０００７】
結局、図８に示すような枠組みでデータ転送システムを開発しようとする場合、ホストコントローラに対応するドライバ関数を呼び出すといった処理を実装したＵＳＢＤ等の上位モジュールを新たに開発せざるを得ず、開発コストや開発期間などの点で非常に大きな負担が生じていた。
【０００８】
そこで、本発明は、ＵＳＢ２．０規格ホストコントローラ又はＵＳＢ１．１規格ホストコントローラを選択的に使用してデータ転送を行う場合において、ＵＳＢ１．１規格のデータ転送システムにおけるＵＳＢＤ等の上位モジュールを転用可能な、新たな枠組みを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明のデータ転送制御方法は、  ＵＳＢ２．０規格ホストコントローラ又はＵＳＢ１．１規格ホストコントローラを選択的に使用してデータ転送を行う場合のデータ転送制御方法であって、ＵＳＢポートに接続されているＵＳＢデバイス装置がＵＳＢ２．０規格に対応するＵＳＢデバイス装置であるか否かを判断する工程と、ＵＳＢ２．０規格に対応するＵＳＢデバイス装置であると判断した場合、関数参照テーブルに、ホストコントローラの種別を区別しない形式で規定されるデータ転送に関わる要求（以下、「共通データ転送要求」という）に対応づけて、ＵＳＢ２．０規格ホストコントローラドライバの対応する関数を登録し、一方、そうでないと判断した場合、前記関数参照テーブルに、共通データ転送要求に対応づけて、ＵＳＢ１．１規格ホストコントローラドライバの対応する関数を登録する工程と、共通データ転送要求を受け付ける工程と、前記関数参照テーブルを参照して前記受け付けた共通データ転送要求に対応するホストコントローラドライバの関数を呼び出し、ＵＳＢ２．０規格ホストコントローラ又はＵＳＢ１．１規格ホストコントローラを選択的に使用してデータ転送を実行させる工程と、を備えることを特徴とする。前記ＵＳＢ２．０規格ホストコントローラは、例えばＥＨＣＩ規格のＵＳＢホストコントローラとすることができる。
【００１０】
好適には、前記共通データ転送要求は、ＵＳＢ１．１規格データ転送システムにおいて用いられるデータ転送要求の形式と同一であることが望ましい。
【００１１】
また好適には、前記登録する工程は、パイプオープン要求を受け付けた場合に実行されることが望ましい。
【００１２】
かかる構成によれば、上位モジュールにおいて、データ転送に使用するＵＳＢホストコントローラの種別（ＵＳＢホストコントローラドライバの種別）を区別しない形式でデータ転送を要求した場合でも、ＵＳＢ２．０規格ホストコントローラ又はＵＳＢ１．１規格ホストコントローラを選択的に使用してデータ転送を実行することができる。その結果、ＵＳＢ１．１規格データ転送システムにおいて採用される従来の上位モジュール（ホストコントローラに対応するドライバ関数を呼び出すといった機能を備えていない上位モジュール）を用いることが可能となり、ＵＳＢ２．０規格に基づくデータ転送システムを構築する際の開発負担を大きく軽減することができる。
【００１３】
本発明のデータ転送制御方法は、ＵＳＢホスト装置においてＣＰＵにより実行することができるが、そのためのコンピュータプログラムは、ＣＤ−ＲＯＭ、磁気ディスク、半導体メモリ及び通信ネットワークなどの各種の媒体を通じてコンピュータにインストールまたはロードすることができる。
【００１４】
本発明のデータ転送制御装置は、ＵＳＢ２．０規格ホストコントローラ又はＵＳＢ１．１規格ホストコントローラを選択的に使用してデータ転送を行うためのデータ転送制御装置であって、ＵＳＢポートに接続されているＵＳＢデバイス装置がＵＳＢ２．０規格に対応するＵＳＢデバイス装置であるか否かを判断する機能と、ＵＳＢ２．０規格に対応するＵＳＢデバイス装置であると判断した場合、関数参照テーブルに、ホストコントローラの種別を区別しない形式で規定されるデータ転送に関わる要求（以下、「共通データ転送要求」という）に対応づけて、ＵＳＢ２．０規格ホストコントローラドライバの対応する関数を登録し、一方、そうでないと判断した場合、前記関数参照テーブルに、共通データ転送要求に対応づけて、ＵＳＢ１．１規格ホストコントローラドライバの対応する関数を登録する機能と、共通データ転送要求を受け付ける機能と、前記関数参照テーブルを参照して前記受け付けた共通データ転送要求に対応するホストコントローラドライバの関数を呼び出し、ＵＳＢ２．０規格ホストコントローラ又はＵＳＢ１．１規格ホストコントローラを選択的に使用してデータ転送を実行させる機能と、を備えることを特徴とする。
【発明の効果】
【００１５】
以上、本発明によれば、ＵＳＢ２．０規格ホストコントローラ又はＵＳＢ１．１規格ホストコントローラを選択的に使用してデータ転送を行う場合において、ＵＳＢ１．１規格のデータ転送システムにおけるＵＳＢＤ等の上位モジュールを転用可能な、新たな枠組みを提供することができる。
【発明を実施するための最良の形態】
【００１６】
図１は、本実施形態におけるデータ転送システムの機能構成の概略図である。図１に示すように、ＵＳＢホスト装置１は、クライアントドライバ１０、ＵＳＢＤ（Universal Bus Driver）１１、ＨＣＤＭ（Host Controller Driver Multi）１７、ＣＨＣＤ（Companion Host Controller Driver）１２、ＣＨＣＩ（Companion Host Controller Interface）１３、ＥＨＣＤ（Enhanced Host Controller Driver）１４、ＥＨＣＩ１５、共有メモリ１６等を含み、ＵＳＢによりＵＳＢデバイス装置２と接続されている。
【００１７】
クライアントドライバ１０は、ＵＳＢホスト装置１で動作するアプリケーションに対してＵＳＢデバイス装置２へのアクセス関数などを提供するドライバであり、例えばＯＳの一部として実装することができる。
【００１８】
ＵＳＢＤ１１は、ハードウェアに依存しない処理（例えば、ＵＳＢコントローラの種別に依存しない処理）を行うＵＳＢ汎用ドライバである。ＵＳＢＤ１１は、ＵＳＢ１．１規格のデータ転送システム（ＵＳＢ１．１規格のＵＳＢホストコントローラのみを使用してデータ転送を行うシステム）において採用される従来のＵＳＢＤを用いることができる。
【００１９】
ＨＣＤＭ１７は、データ転送に使用するＵＳＢホストコントローラ（ＣＨＣＩ１３又はＥＨＣＩ１５）に対応するＵＳＢホストコントローラドライバ（ＣＨＣＤ１２又はＥＨＣＤ１４）を選択し、前記選択したドライバの関数を呼び出す機能を備えたモジュールである。
【００２０】
ＣＨＣＤ１２は、ＣＨＣＩ１３に依存した処理を行うデバイスドライバであり、従来のＵＳＢ１．１デバイスドライバと同様の機能を備える。
【００２１】
ＣＨＣＩ１３は、ＵＳＢ１．１規格に準拠したＵＳＢホストコントローラであり、トランザクションの管理、パケットの生成／分解、サスペンド／レジューム／リセット状態生成の指示など、従来のＵＳＢ１．１ホストコントローラと同様の機能を備える。ＣＨＣＩ１３は、ＯＨＣＩ（Open Host Controller Interface）、ＵＨＣＩ（Universal Host Controller Interface）のいずれの方式に基づくものであってもよい。
【００２２】
ＥＨＣＤ１４は、ＥＨＣＩ１５に依存した処理を行うデバイスドライバであり、原則として従来のＵＳＢ２．０デバイスドライバと同様の機能を備える。
【００２３】
ただし、本実施形態のＥＨＣＤ１４は、パイプに共有メモリ１７上の固定サイズのバッファ領域を割り当て、かかるパイプに割り当てた前記固定サイズのバッファ領域を介してＵＳＢホスト装置とＵＳＢデバイス装置との間でデータ転送を行うように、ＥＨＣＩ１５６を制御する点で、従来と異なっている。
【００２４】
ＥＨＣＩ１５は、ＥＨＣＩ規格に準拠したＵＳＢコントローラであり、トランザクションの管理、パケットの生成／分解、サスペンド／レジューム／リセット状態生成の指示など、従来のＵＳＢ２．０ホストコントローラと同様の機能を備える。
【００２５】
なお、各ドライバは、ＵＳＢホスト装置１内のＲＯＭやＲＡＭ、外部の記憶媒体等に格納されるプログラムをＣＰＵが実行することにより機能手段として実現できる。またデータ転送システムは、図示していないが、差動データ信号Ｄ＋、Ｄ−を用いてデータを送受信するトランシーバ、ＣＨＣＩ１３やＥＨＣＩ１５とＵＳＢポートとの間のコネクションを提供するルートハブなど、ＵＳＢに基づくデータ転送システムが通常備える機能構成を同様に備えている。
【００２６】
図２は、ＵＳＢにおけるデータ転送のスキームを説明するための図である。ＵＳＢにおけるデータ転送スキームは、エンドポイント及びパイプという概念を用いて説明することができる。すなわち、ＵＳＢホスト装置、ＵＳＢデバイス装置には、エンドポイントと呼ばれるＦＩＦＯバッファが設けられ、このバッファどうしがパイプという論理的な通信路で接続される。ＵＳＢホスト装置は、デバイスアドレス、パイプ番号、エンドポイント番号等を指定して、所望のパイプによるデータ送受信（所望のエンドポイントへのデータ送信や、所望のエンドポイントからのデータ受信）を行うことができる。
【００２７】
エンドポイントには、エンドポイント０と呼ばれるコントロール転送に用いられるものがあり、このコントロール転送を使って、セットアップや設定パラメータの転送などのコンフィギュレーションが実行される。そして、コンフィギュレーションによってＵＳＢデバイス装置の使い方が設定されると、新たなエンドポイントが追加され、対応するパイプが構成される。
【００２８】
ＵＳＢの転送モードには、上記のコントロール転送以外に、バルク転送、インタラプト転送、アイソクロナス転送があり、このうちどの転送モードを使用するかは、ＵＳＢデバイス装置がコンフィギュレーション用のデータとして保持している。そして、ＵＳＢによる接続がなされた後、ＵＳＢデバイス装置からＵＳＢホスト装置へコントロール転送を使って前記データが送信され、ＵＳＢホスト装置は、このデータに基づき転送モードを確定するとともに、ＵＳＢデバイス装置のアドレス付け、パイプ番号、エンドポイント番号の割り付けを行う。
【００２９】
以下、図３〜図６のフローチャート等を参照して、本実施形態のデータ転送システムにおけるデータ転送の流れを説明する。なお、各工程（符号が付与されていない部分的な工程を含む）は処理内容に矛盾を生じない範囲で任意に順番を変更して又は並列に実行することができる。
【００３０】
（ＵＳＢデバイス装置２の接続からパイプオープンまでの処理：図３、図４）
ＵＳＢデバイス装置２がＵＳＢポートに接続されると、ＥＨＣＩ１５がその接続を検出する（Ｓ１００）。接続されたことを検出する方法としては、例えば、ＵＳＢケーブル中の信号線（Ｄ＋、Ｄ−）のいずれかが所定電圧（３．３Ｖ）になることを検出すればよい。
【００３１】
ＥＨＣＤ１４は、ＥＨＣＩ１５による接続検出を監視しており、ＥＨＣＩ１５が接続を検出すると、ＨＣＤＭ１７にＵＳＢデバイス装置２が接続されたことを通知する（Ｓ１０１）。
【００３２】
ＨＣＤＭ１７は、ＥＨＣＤ１４より接続通知を受け付けた場合、該接続通知をＵＳＢＤ１１に転送する（Ｓ１０２）。
【００３３】
ＵＳＢＤ１１は、ＨＣＤＭ１７より接続通知を受け付けた場合、ＨＣＤＭ１７にリセットを要求する（Ｓ１０３）。
【００３４】
なお、ＵＳＢＤ１１は、ＵＳＢコントローラの種別に依存しない処理を行うＵＳＢ汎用ドライバであるから、ＵＳＢＤ１１からのデータ転送に関わる要求（リセット要求を含む）もまた、ＵＳＢコントローラの種別に依存しない形式、すなわちＥＨＣＤ１４及びＣＨＣＤ１２に共通の形式で規定されている。以下、かかるＵＳＢＤ１１からのデータ転送に関わる要求を総称して共通データ転送要求と呼ぶ。
【００３５】
ＨＣＤＭ１７は、ＵＳＢＤ１１よりリセット要求を受け付けた場合、ＥＨＣＤ１４のリセット関数を呼び出す（Ｓ１０４）。
【００３６】
ＥＨＣＤ１４は、ＨＣＤＭ１７よりリセット関数を呼び出された場合、ＥＨＣＩ１５にリセットを指示する（Ｓ１０５）。
【００３７】
ＥＨＣＩ１５は、ＥＨＣＤ１４からリセットの指示を受け付けた場合、ＵＳＢポートの設定をリセットするともに、ＵＳＢデバイス装置２に対してリセット信号を出力する（例えば、Ｄ＋、Ｄ−の両方をＬＯＷにする）（Ｓ１０６）。ＵＳＢデバイス装置２は、リセット信号を検出すると内部リセットを実行し、デフォルト状態に移行する。このデフォルト状態ではエンドポイント０（パイプ０）を使ったコントロール転送のみ可能となる。
【００３８】
次に、ＥＨＣＩ１５は、ＵＳＢポートのステータスを取得し、ステータスが正常の場合にはコントロール転送を使用してＵＳＢデバイス装置２との間でＵＳＢ２．０コンフィギュレーションを実行して、その結果をＥＨＣＤ１４に通知する（Ｓ１０７）。
【００３９】
ＥＨＣＤ１４は、ＵＳＢ２．０コンフィギュレーションが成功した場合、データ転送のためにＵＳＢホスト装置１側に設けられている共有メモリ１６上に、ＥＨＣＩ１５が管理するＵＳＢポートごとに、固定サイズ（例えば、２０Kバイト）のメモリ領域を確保する（Ｓ１０８）。
【００４０】
ここで、前記メモリ領域は、それぞれをデータ転送のためのＩ／Ｏバッファ領域として使用することができる、少なくとも２つのバッファ領域Ａ、Ｂを設定できるように確保される。また、固定サイズのメモリ領域を確保する際、ＵＳＢポート１にはアドレスＸ、ＵＳＢポート２にはアドレスＹのように、メモリ領域のアドレスをＵＳＢポートに固定的に対応づけて確保するように構成してもよい。
【００４１】
次に、ＥＨＣＤ１４は、ＵＳＢ２．０コンフィギュレーションの結果をＨＣＤＭ１７に通知する（Ｓ１０９）。
【００４２】
ＨＣＤＭ１７は、ＵＳＢ２．０コンフィギュレーション結果が失敗であった場合、ＣＨＣＩ１３を使用したデータ転送のための処理に移行すべく、ＣＨＣＤ１２のリセット関数を呼び出す（Ｓ１１０）。一方、ＵＳＢ２．０コンフィギュレーション結果が成功であった場合、Ｓ１１５の工程に進む。
【００４３】
ＣＨＣＤ１２は、ＨＣＤＭ１７よりリセット関数を呼び出された場合、ＣＨＣＩ１３にリセットを指示する（Ｓ１１１）。
【００４４】
ＣＨＣＩ１３は、ＣＨＣＤ１２からリセットの指示を受け付けた場合、ＵＳＢポートの設定をリセットするともに、ＵＳＢデバイス装置２に対してリセット信号を出力する（Ｓ１１２）。
【００４５】
次に、ＣＨＣＩ１３は、ＵＳＢポートのステータスを取得し、ステータスが正常の場合にはコントロール転送を使用してＵＳＢデバイス装置２との間でＵＳＢ１．１コンフィギュレーションを実行して、その結果をＣＨＣＤ１２に通知する（Ｓ１１３）。
【００４６】
ＣＨＣＤ１２は、ＵＳＢ１．１コンフィギュレーションが成功した場合、データ転送のためにＵＳＢホスト装置１側に設けられている共有メモリ１６上に、ＣＨＣＩ１５が管理するＵＳＢポートごとに、固定サイズ（例えば、２０Kバイト）のメモリ領域を確保する（Ｓ１１４）。ここで、前記メモリ領域は、Ｓ１０８同様、それぞれをデータ転送のためのＩ／Ｏバッファ領域として使用することができる、少なくとも２つのバッファ領域Ａ、Ｂを設定できるように確保される。
【００４７】
次に、ＣＨＣＤ１２は、ＵＳＢ１．１コンフィギュレーションの結果をＨＣＤＭ１７に通知する（Ｓ１１５）。
【００４８】
ＨＣＤＭ１７は、ＵＳＢ２．０コンフィギュレーションの結果が成功であった場合、又はＵＳＢ１．１コンフィギュレーションの結果が成功であった場合、ＵＳＢＤ１１にコンフィギュレーション成功を通知する。一方、ＵＳＢ１．１コンフィギュレーションの結果が失敗であった場合、ＵＳＢＤ１１にコンフィギュレーション失敗を通知する。（Ｓ１１６）。
【００４９】
ＵＳＢＤ１１は、ＨＣＤＭ１７よりコンフィギュレーション成否の通知を受け付けた場合、該通知をクライアントドライバ１０に転送する（Ｓ１１７）。
【００５０】
クライアントドライバ１０は、ＨＣＤＭ１７よりコンフィギュレーション失敗との通知を受け付けた場合、ＵＳＢホスト装置１上で動作するＯＳ等に、その情報を通知する（Ｓ１８）。これを受けて、ＵＳＢホスト装置１上で動作するＯＳ等は、ユーザに対して、ＵＳＢポートに接続されているＵＳＢデバイス装置２との間でコンフィギュレーションが失敗したこと等を提示する。
【００５１】
一方、ＵＳＢＤ１１よりコンフィギュレーション成功との通知を受け付けた場合、クライアントドライバ１０は、ＵＳＢＤ１１に、ＵＳＢデバイス装置２のオープン指示に続けて、パイプオープンを指示する（Ｓ１１９）。
【００５２】
ＵＳＢＤ１１は、クライアントドライバ１０よりパイプオープンの指示を受け付けた場合、ＨＣＤＭ１７にパイプオープンを要求する（Ｓ１２０）。
【００５３】
ＨＣＤＭ１７は、ＵＳＢＤ１１よりパイプオープン要求を受け付けた場合、コンフィギュレーション結果に基づき、オープン対象のパイプに関して、ＵＳＢホスト装置１内に記憶する関数参照テーブルを設定する（Ｓ１２１）。すなわち、ＨＣＤＭ１７は、ＵＳＢ２．０コンフィギュレーション結果が成功であった場合、ＵＳＢポートにＵＳＢ２．０規格に対応するＵＳＢデバイス装置が接続されたと判断する。そして、オープン対象のパイプに関して、前記関数参照テーブルに、ＵＳＢＤ１１からのデータ転送に関わる要求に対応づけて、ＥＨＣＤ１４の対応する関数を登録する（図７（ａ）参照）。一方、ＵＳＢ１．１コンフィギュレーション結果が成功であった場合、ＵＳＢポートにＵＳＢ１．１規格に対応するＵＳＢデバイス装置が接続されたと判断する。そして、オープン対象のパイプに関して、前記関数参照テーブルに、ＵＳＢＤ１１からのデータ転送に関わる要求に対応づけて、ＣＨＣＤ１２の対応する関数を登録する（図７（ｂ）参照）。
【００５４】
次に、ＨＣＤＭ１７は、前記設定した関数参照テーブルを参照し、オープン対象のパイプに関して、ＵＳＢデバイス装置２に対応するホストコントローラドライバのパイプオープン関数を呼び出す（Ｓ１２２）。Ｓ１２１において関数参照テーブルには適切なドライバの対応する関数が登録されているため、ＵＳＢデバイス装置２がＵＳＢ２．０規格に対応している場合は、ＥＨＣＤ１４のパイプオープン関数が呼び出される。また、ＵＳＢデバイス装置２がＵＳＢ１．１規格に対応している場合は、ＣＨＣＤ１２のパイプオープン関数が呼び出される。
【００５５】
ＥＨＣＤ１４は、ＨＣＤＭ１７によりパイプオープン関数を呼び出された場合、コンフィギュレーション結果に基づいてパイプを選択し、ＥＨＣＩ１５に前記選択したパイプのオープンを指示する（Ｓ１２３）。
【００５６】
ＥＨＣＩ１５は、ＥＨＣＤ１４により指示されたパイプをオープンする（Ｓ１２４）。これにより、データ転送システムは、ＥＨＣＩ１５を使用してデータ転送を行うことができる状態に移行する。
【００５７】
一方、ＣＨＣＤ１２は、ＨＣＤＭ１７によりパイプオープン関数を呼び出された場合、コンフィギュレーション結果に基づいてパイプを選択し、ＣＨＣＩ１３に前記選択したパイプのオープンを指示する（Ｓ１２５）。
【００５８】
ＣＨＣＩ１３は、ＣＨＣＤ１２により指示されたパイプをオープンする（Ｓ１２６）。これにより、データ転送システムは、ＣＨＣＩ１３を使用してデータ転送を行うことができる状態に移行する。
【００５９】
（データ転送処理：図４、図５）
以下では、説明を簡単にすべく、データ転送システムがＥＨＣＩ１５を使用してデータ転送を行うことができる状態にある場合を例に説明を行う。なお、データ転送システムがＣＨＣＩ１３を使用してデータ転送を行うことができる状態にある場合、ＣＨＣＤ１２、ＣＨＣＩ１３を使用して同様の工程によりデータ転送を行うことができる。
【００６０】
クライアントドライバ１０は、ＵＳＢホスト装置１で動作するアプリケーションからのＵＳＢデバイス装置２へのアクセス関数の呼び出しを待機する（Ｓ２００）。
【００６１】
前記アプリケーションからアクセス関数の呼び出しがあった場合、クライアントドライバ１０は、アクセス関数の引数等に基づいてパイプ等を指定して、ＵＳＢＤ１１にデータ転送を指示する（Ｓ２０１）。
【００６２】
ＵＳＢＤ１１は、クライアントドライバ１０からデータ転送の指示を受け付けた場合、共通データ転送要求の形式でパイプ等を指定して、ＨＣＤＭ１７にデータ転送を要求する。（Ｓ２０２）。
【００６３】
ＨＣＤＭ１７は、ＵＳＢＤ１１より共通データ転送要求の形式の前記要求を受け付けた場合、指定されたパイプに関する前記関数参照テーブルを参照して、ＵＳＢデバイス装置２に対応するホストコントローラドライバ（ここではＥＨＣＤ１４）の、該要求に対応するデータ転送関数を選択し、パイプ等を指定して前記選択したデータ転送関数を呼び出す（Ｓ２０３）。
【００６４】
ＥＨＣＤ１４は、ＨＣＤＭ１７によりデータ転送関数を呼び出された場合、指定されたパイプ（エンドポイント）を選択し、Ｓ１０８において確保した固定サイズのメモリ領域を前記選択したパイプに割り当てる（前記固定サイズのメモリ領域に前記選択したパイプのバッファ領域を設定する）（Ｓ２０４）。なお、ＵＳＢポートごとに確保した固定サイズのメモリ領域は、当該ＵＳＢポートに対応する複数のパイプ間で共有して排他的に使用されることになるが、この排他制御は例えばクライアントドライバ１０によって実行される。
【００６５】
次に、ＥＨＣＤ１４は、バッファ領域Ａ、Ｂのいずれか一方を処理面に、他方を待機面に設定する（Ｓ２０５）。なお、処理面は、ＥＨＣＩ１５がデータ転送を行う際に使用するバッファ領域（いわゆるダブルバッファの表バッファ）に相当し、待機面は、ＥＨＣＩ１５がデータ転送している間に、次のデータ転送のための準備に用いるバッファ領域（いわゆるダブルバッファの裏バッファ）に相当する。
【００６６】
次に、ＥＨＣＤ１４は、処理面を対象として、データ転送のためのディスクリプタ情報（ｑＴＤ（Queue Element Transfer Descriptor）など）を設定し、前記パイプに割り当てたメモリ領域に記憶する（Ｓ２０６）。
【００６７】
次に、ＥＨＣＤ１４は、当該データ転送要求がＯＵＴである場合（Ｓ２０７：ＹＥＳ）、ＵＳＢホスト装置１のＲＡＭ等に記憶される転送対象データを処理面にコピーする（Ｓ０８）。
【００６８】
次に、ＥＨＣＤ１４は、処理面を指定して、ＥＨＣＩ１５に転送要求を通知する（Ｓ２０９）。これを受けてＥＨＣＩ１５は、前記設定したディスクリプタ情報に基づき、処理面を介してデータ転送を実行する。すなわち、当該データ転送要求がＯＵＴである場合は、処理面に格納される転送対象データをＵＳＢデバイス装置２へ転送し、ＩＮである場合は、ＵＳＢデバイス装置２から転送対象データを読み出して処理面に格納する。ＥＨＣＩ１５は、データ転送が完了すると、その情報をＥＨＣＤ１４に通知する。
【００６９】
次に、ＥＨＣＤ１４は、転送要求のあったデータ全てについて転送が完了したか否かを判断し（Ｓ２１０）、完了している場合はＳ２１４の工程に処理を進める。
【００７０】
一方、完了していない場合、ＥＨＣＤ１４は、待機面を対象として、データ転送のためのディスクリプタ情報を設定し、前記パイプに割り当てたメモリ領域に記憶する（Ｓ２１１）。
【００７１】
次に、当該データ転送要求がＯＵＴである場合（Ｓ２１２：ＹＥＳ）、ＵＳＢホスト装置１のＲＡＭ等に記憶される転送対象データのうち未転送のデータを待機面にコピーする（Ｓ２１３）。
【００７２】
次に、ＥＨＣＤ１４は、ＥＨＣＩ１５からのデータ転送完了の通知を待機する（Ｓ２１４）。
【００７３】
データ転送完了の通知を受け付けた場合、ＥＨＣＤ１４は、待機面に関してデータ転送のためのディスクリプタ情報が設定・記憶されているか否かを判断する（Ｓ２１５）。
【００７４】
待機面に関してディスクリプタ情報が設定・記憶されていない場合、ＥＨＣＤ１４は、データ転送完了が通知されたデータ転送がＩＮであるか否かを判断する（Ｓ２１６）。
【００７５】
ＩＮである場合、ＥＨＣＤ１４は、処理面に格納される転送対象データをＵＳＢホスト装置１のＲＡＭ等にコピーする（Ｓ２１７）。
【００７６】
次に、ＥＨＣＤ１４は、ＨＣＤＭ１７に、要求のあったデータ転送が全て終了したことを通知する（Ｓ２１８）。
【００７７】
ＨＣＤＭ１７は、ＥＨＣＤ１４からデータ転送が全て終了したとの通知を受け付けた場合、該通知をＵＳＢＤ１１に転送する（Ｓ２１９）。
【００７８】
ＵＳＢＤ１１は、ＨＣＤＭ１７からデータ転送が全て終了したとの通知を受け付けた場合、該通知をクライアントドライバ１０に転送する（Ｓ２２０）。
【００７９】
クライアントドライバ１０は、ＵＳＢＤ１１からデータ転送が全て終了したとの通知を受け付けた場合、Ｓ２００の工程に再帰する（Ｓ２２１）。
【００８０】
一方、待機面に関してディスクリプタ情報が設定・記憶されている場合、ＥＨＣＤ１４は、処理面及び待機面の設定を入れ替える（Ｓ２２２）。例えば、バッファ領域Ａを処理面、バッファ領域Ｂを待機面として設定している場合であれば、バッファ領域Ｂを処理面、バッファ領域Ａを待機面に設定する。
【００８１】
次に、ＥＨＣＤ１４は、処理面を指定して、ＥＨＣＩ１５に転送要求を通知する（Ｓ２２３）。これを受けてＥＨＣＩ１５は、上述したように、前記設定したディスクリプタ情報に基づき、処理面を介してデータ転送を実行する。
【００８２】
次に、ＥＨＣＤ１４は、データ転送完了が通知されたデータ転送がＩＮであるか否かを判断する（Ｓ２２４）。
【００８３】
ＩＮである場合、ＥＨＣＤ１４は、待機面に格納される転送対象データをＵＳＢホスト装置１のＲＡＭ等にコピーする（Ｓ２２５）。
【００８４】
次に、ＥＨＣＤ１４は、転送要求のあったデータ全てについて転送が完了したか否かを判断し（Ｓ２２６）、完了している場合はＳ２１４の工程に再帰する。
【００８５】
一方、完了していない場合、ＥＨＣＤ１４は、待機面を対象として、データ転送のためのディスクリプタ情報を設定し、前記パイプに割り当てたメモリ領域に記憶する（Ｓ２２７）。
【００８６】
次に、ＥＨＣＤ１４は、当該データ転送要求がＯＵＴである場合（Ｓ２２８：ＹＥＳ）は、ＵＳＢホスト装置１のＲＡＭ等に記憶される転送対象データを待機面にコピーしてから（Ｓ２２９）、Ｓ２１４の工程に再帰し、ＩＮである場合（Ｓ２２８：ＮＯ）は、そのままＳ２１４の工程に再帰する。
【００８７】
このように本実施形態では、ＵＳＢＤ１１とＨＣＤ（ＣＨＣＤ１２、ＥＨＣＤ１４）との間に、データ転送に使用するＵＳＢホストコントローラに応じて適切なドライバ関数を呼び出す機能を備えたＨＣＤＭ１７を設けているため、上位モジュールであるＵＳＢＤ等において、データ転送に使用するＵＳＢホストコントローラの種別（ＵＳＢホストコントローラドライバの種別）を区別しない形式（例えば、ＵＳＢ１．１規格データ転送システムにおいて用いられるデータ転送要求と同一の形式）でデータ転送を要求した場合でも、ＣＨＣＤ１２又はＥＨＣＤ１４を選択的に使用してデータ転送を実行することができる。その結果、ＵＳＢＤ１１として、ＵＳＢ１．１規格データ転送システムにおいて採用される従来のＵＳＢＤ（ホストコントローラに対応するドライバ関数を呼び出すといった機能を備えていないＵＳＢＤ）を用いることが可能となり、ＵＳＢ２．０規格に基づくデータ転送システムを構築する際の開発負担を大きく軽減することができる。
【００８８】
また、ＥＨＣＩ１５を使用してデータ転送を行う場合に、ＵＳＢポートごとに共有メモリ１６上に固定サイズのメモリ領域を確保し、前記確保した固定サイズのメモリ領域をＵＳＢポートの各パイプに割り当ててバッファ領域とすることから、共有メモリ１６の使用可能領域を監視して、バッファ領域が確保できたかどうかを確認する必要はなく、メモリ管理処理の負担を軽減することができる。
【００８９】
また、共有メモリ１６上に必要となるバッファ領域のサイズは、ＵＳＢポート数と前記固定サイズによって固定的に定まるため、パイプ数や転送データサイズなどが変動しても、共有メモリ１６上にバッファ領域を確保できない情況が発生することはない。また、静的（固定的）にメモリ領域を確保していることから、ＵＳＢデバイス装置の抜き差しを頻繁に行う等しても、メモリリークが発生するおそれもない。その結果、データ転送に用いる共有メモリサイズを抑制しつつ、効率よく安定してデータ転送を行うことができる。
【００９０】
また、ＥＨＣＤ１４において、転送要求のあったデータが前記固定サイズより大きい場合に固定サイズ単位で複数回に分けてデータ転送のためのディスクリプタ情報を設定するように構成しているため、上位のクライアントドライバ１０等では、前記固定サイズを意識することなく、データ転送を指示することが可能となる。
【００９１】
また、前記固定サイズのメモリ領域に２つのバッファ領域Ａ、Ｂを設けておき、２つのバッファ領域Ａ、Ｂをそれぞれ交互に処理面、待機面に設定し、処理面に関してＥＨＣＩ１５にデータ転送要求を通知した上で、待機面に関してＵＳＢホスト装置１のＲＡＭ等との間でコピーを行うように構成しているため、ＥＨＣＩ１５によるデータ転送処理とＵＳＢホスト装置１のＲＡＭ等との間のコピー処理とを並行に実行させる（すなわち、一方のバッファ領域を用いてＵＳＢデバイス装置側とのデータ転送を行いつつ、他方のバッファ領域を用いてＵＳＢホスト装置側とのデータ転送を実行させる）ことができ、高速にデータ転送を実行することが可能となる。
【００９２】
（その他）
本発明は、上記実施形態に限定されることなく種々に変形して適用することが可能である。例えば、本発明は、ＵＳＢ １．１規格、ＵＳＢ ２．０規格、或いはこれらの規格と同様の思想に基づく規格や、これらの規格を発展させた規格におけるデータ転送制御手法にも適用できる。
【図面の簡単な説明】
【００９３】
【図１】本実施形態におけるデータ転送システムの機能構成を示すブロック図である。
【図２】ＵＳＢにおけるデータ転送のスキームを説明するための図である。
【図３】本実施形態におけるＵＳＢデバイス装置２の接続からパイプオープンまでの処理内容を示すフローチャートである。
【図４】本実施形態におけるＵＳＢデバイス装置２の接続からパイプオープンまでの処理内容を示すフローチャートである。
【図５】本実施形態におけるデータ転送処理の内容を示すフローチャートである。
【図６】本実施形態におけるデータ転送処理の内容を示すフローチャートである。
【図７】関数参照テーブルを説明するための図である。
【図８】一般的なＵＳＢ２．０規格データ転送システムの機能構成を示すブロック図である。
【図９】一般的なＵＳＢ１．１規格データ転送システムの機能構成を示すブロック図である。
【符号の説明】
【００９４】
１  ＵＳＢホスト装置；１０  クライアントドライバ；１１  ＵＳＢＤ；１２  ＣＨＣＤ；１３  ＣＨＣＩ；１４  ＥＨＣＤ；１５  ＥＨＣＩ；１６  共有メモリ；１７  ＨＣＤＭ；２  ＵＳＢデバイス装置
【図１】
2006252335.tif 000003
【図２】
2006252335.tif 000004
【図３】
2006252335.tif 000005
【図４】
2006252335.tif 000006
【図５】
2006252335.tif 000007
【図６】
2006252335.tif 000008
【図７】
2006252335.tif 000009
【図８】
2006252335.tif 000010
【図９】
2006252335.tif 000011