(57)【要約】      （修正有）【課題】ハードウェア・ドングルの形をとるバス・ステーションが、適切なソフトウェアを実行するＵＳＢデバイスと連携して動作する。【解決手段】バス・ステーションが、バス・ステーションの第１のバス通信ポートにバス・ホストが接続されていると判定した場合、バス・ステーションは、前記バス・ホストとバス・ステーションの第２のバス通信ポートに接続されたバス・デバイスの間で従来のバス通信を可能にするトランシーバとして動作する。バス・ステーションが、バス・ステーションの第１のバス通信ポートに適切なソフトウェアを実行するバス・デバイスが接続されていると判定した場合、バス・ステーションは、第１のバス通信ポートに接続された前記バス・デバイスと第２のバス通信ポートに接続されたバス・デバイスの間でバス通信を可能にする代替ホストとして動作する。【選択図】図１
2010061670.tif 000002
【特許請求の範囲】
【請求項１】
バス通信システムで使用されるバス・ステーションであって、
第１の通信ポートと第２の通信ポートを備え、
当該バス・ステーションは、前記第２の通信ポートに結合されたホスト・ステーションの存在を検出したときは第１の動作モードで動作し、前記第２の通信ポートに結合されたホスト・ステーションの非存在を検出したときは第２の動作モードで動作するように構成され、
当該バス・ステーションは、前記第１の動作モードにおいて、前記第２の通信ポートに結合された前記ホスト・ステーションと前記第１の通信ポートに結合されたデバイス・ステーションの間の通信の受け渡しを行うように構成され、
当該バス・ステーションはさらに、前記第２の動作モードにおいて、通信プロトコルに従って、前記第１の通信ポートに結合された前記デバイス・ステーションと通信することによって、代替ホストとして動作することにより、当該バス・ステーションが通信を開始するように構成される、
ことを特徴とするバス・ステーション。
【請求項２】
前記バス・ステーションが、前記第１の動作モードにおいて、ＵＳＢトランシーバとして動作し、前記第２の動作モードにおいて、ＵＳＢホストとして動作するように構成される、請求項１に記載のバス・ステーション。
【請求項３】
前記第１の動作モードにおいて、前記第２の通信ポートに結合された前記ホスト・ステーションと前記デバイス・ステーションの間で通信を行うための前記第１および第２の通信ポートに結合されたトランシーバ回路をさらに備える、請求項１に記載のバス・ステーション。
【請求項４】
バス・システムで使用されるバス・ステーションであって、
通信ポートに結合されたデバイス・コントローラを備え、
前記通信ポートは、デバイス・ステーションとして動作するように構成され、
前記バス・ステーションはさらに、オペレーティング・システムとホスト・ステーション・ドライバ・ソフトウェアとを備えるシステム・ソフトウェアの制御下で、動作するように構成され、前記ホスト・ステーション・ドライバ・ソフトウェアは、ホスト・コントローラと通信し、前記オペレーティング・システムとの間で情報の受け渡しを行うように構成されており、
前記システム・ソフトウェアはさらに、前記ホスト・ステーション・ドライバ・ソフトウェアに対してホスト・コントローラの存在を、また前記デバイス・コントローラに対してデバイス・ステーション・ドライバ・ソフトウェアの存在をエミュレートするように構成され、さらに前記ホスト・ステーション・ドライバ・ソフトウェアから前記デバイス・コントローラへの通信およびその反対方向の通信を変換するように構成される、ホスト・エミュレーション・ソフトウェアを備える、バス・ステーション。
【請求項５】
第１のバス通信ポートを備える第１のバス・ステーションと、第２のバス・ステーションとを、備えるバス通信システムであって、
前記第２のバス・ステーションはさらに、第２のバス通信ポートを備え、
前記第２のバス・ステーションは、前記第２のバス通信ポートに結合されたホスト・ステーションの存在を検出したときは第１のモードで動作し、前記第２のバス通信ポートに結合されたホスト・ステーションの非存在を検出したときは第２のモードで動作するように構成される、
前記第１のバス・ステーションが、前記第２のバス通信ポートに結合されたデバイス・コントローラを備え、前記デバイス・コントローラは、オペレーティング・システムとホスト・ステーション・ドライバ・ソフトウェアとを含むシステム・ソフトウェアの制御下で、動作するように構成され、前記ホスト・ステーション・ドライバ・ソフトウェアは、ホスト・コントローラと通信し、前記オペレーティング・システムとの間で情報の受け渡しを行うように構成されており、
前記システム・ソフトウェアはさらに、前記ホスト・ステーション・ドライバ・ソフトウェアに対してホスト・コントローラの存在を、また前記デバイス・コントローラに対してデバイス・ステーション・ドライバ・ソフトウェアの存在をエミュレートするように構成され、さらに前記ホスト・ステーション・ドライバ・ソフトウェアから前記デバイス・コントローラへの通信およびその反対方向の通信を変換するように構成される、ホスト・エミュレーション・ソフトウェアを備える、
ことを特徴とするバス通信システム。
【請求項６】
第１の通信ポートと第２の通信ポートとを備える、ＵＳＢドングルであって、
当該ＵＳＢドングルは、前記第１の通信ポートと前記第２の通信ポートのうちの一方に結合されたホスト・ステーションの存在を検出したとき、及び、前記第１の通信ポートと前記第２の通信ポートのうちの他方に結合されたデバイス・ステーションの存在を検出したときは、第１の動作モードで動作するように構成されており、
当該ＵＳＢドングルはさらに、前記第１の動作モードにおいて、前記ホスト・ステーションと前記デバイス・ステーションとの間の通信の受け渡しを行うように構成され、
当該ＵＳＢドングルは、前記第１の通信ポートに結合された第１のデバイス・ステーションと前記第２の通信ポートに結合された第２のデバイス・ステーションを検出したときは、第２の動作モードで動作するように構成され、
当該ＵＳＢドングルはさらに、前記第２の動作モードにおいて、前記第１のデバイス・ステーションと前記第２のデバイス・ステーションとの間の通信の受け渡しを行うように構成され、
当該ＵＳＢドングルはさらに、前記第２の動作モードにおいて、通信プロトコルに従って、前記第１のデバイス・ステーションと通信することにより、代替ホストとして動作し、当該ＵＳＢドングルが通信を開始するように構成される、
ことを特徴とするＵＳＢドングル。
【請求項７】
当該ＵＳＢドングルが、前記第１の動作モードにおいて、ＵＳＢトランシーバとして動作し、前記第２の動作モードにおいて、ＵＳＢホストとして動作するように構成される、ことを特徴とする請求項６に記載のＵＳＢドングル。
【請求項８】
前記第１の動作モードにおいて、前記ホスト・ステーションと前記デバイス・ステーションの間で通信を行うための前記第１および第２の通信ポートに結合されたトランシーバ回路をさらに備える、ことを特徴とする請求項６に記載のＵＳＢドングル。
【請求項９】
バス・システムで使用されるＵＳＢドングルであって、
通信ポートに結合されたデバイス・コントローラを備え、
前記通信ポートは、デバイス・ステーションとして動作するように構成され、
前記ＵＳＢドングルはさらに、オペレーティング・システムとホスト・ステーション・ドライバ・ソフトウェアとを備えるシステム・ソフトウェアの制御下で、動作するように構成され、前記ホスト・ステーション・ドライバ・ソフトウェアは、ホスト・コントローラと通信し、前記オペレーティング・システムとの間で情報の受け渡しを行うように構成されており、
前記システム・ソフトウェアはさらに、前記ホスト・ステーション・ドライバ・ソフトウェアに対してホスト・コントローラの存在を、また前記デバイス・コントローラに対してデバイス・ステーション・ドライバ・ソフトウェアの存在をエミュレートするように構成され、さらに前記ホスト・ステーション・ドライバ・ソフトウェアから前記デバイス・コントローラへの通信およびその反対方向の通信を変換するように構成される、ホスト・エミュレーション・ソフトウェアを備える、ことを特徴とするＵＳＢドングル。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バス接続システムに関し、詳細には、電子機器がバス通信システム内でホストとして動作できるように、バス通信システムにおいて電子機器と共に使用することができるデバイスに関する。
【背景技術】
【０００２】
ユニバーサル・シリアル・バス（ＵＳＢ）通信システムが、広く普及している。
【０００３】
ＵＳＢシステムにおいては、パーソナル・コンピュータ、スキャナ、モバイル電話、プリンタなど、数多くの電子機器を相互接続することができる。どのようなシステムにおいても、必ず１つの電子機器が、その他のすべての機器、すなわちＵＳＢデバイスとの接続を制御するＵＳＢホストに指定される。一般にパーソナル・コンピュータは、ＵＳＢホストとして動作するのに必要なハードウェアとソフトウェアを備えているが、その他の機器は通常、必要なハードウェアとソフトウェアを備えていないため、ＵＳＢデバイスとしてしか動作することができない。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、大掛かりな変更を必要とせずに、機器がＵＳＢホストとして動作できれば有益であろう状況が存在する。
【課題を解決するための手段】
【０００５】
本発明の一態様によれば、好ましくはハードウェア・ドングルの形をとるバス・ステーションが提供され、バス・ステーションは、バス通信デバイスのバス通信ポートに接続されて、バス・ホストとして動作することができる。本発明の好ましい実施形態においては、バス・ステーションはＵＳＢシステム内で動作するが、本発明はその他のバス通信システムにも適用することができる。
【０００６】
より具体的には、本発明の一態様は、バス・ステーションを提供し、このバス・ステーションは、バス・ステーションの第１のバス通信ポートにバス・ホストが接続されていると判断した場合、前記バス・ホストとバス・ステーションの第２のバス通信ポートに接続されたバス・デバイスとの間で従来のバス通信を可能にするトランシーバとして動作し、バス・ステーションの第１のバス通信ポートに適切なソフトウェアを実行中のバス・デバイスが接続されていると判断した場合、第１のバス通信ポートに接続された前記バス・デバイスと第２のバス通信ポートに接続されたバス・デバイスとの間でバス通信を可能にする代替ホストとして動作する。
【発明を実施するための最良の形態】
【０００７】
図１は、本発明によるバス通信システムの概略ブロック図である。
【０００８】
システム２は、ＵＳＢポート６を有する第１のＵＳＢデバイス４と、第２のＵＳＢデバイス８と、ドングル１０とを備える。
【０００９】
図１に示す実施形態においては、第１のＵＳＢデバイス４は、携帯情報端末（ＰＤＡ）であるが、本発明が、移動通信デバイス、デジタル・カメラ、または電子手帳など、どのようなＵＳＢデバイスにも適用可能なことを理解されたい。
【００１０】
第２のＵＳＢデバイス８は、プリンタ、マウス、ハード・ディスク、またはモデムをはじめとする、どのようなＵＳＢデバイスでもよい。
【００１１】
ドングル１０は、第１のホスト・ポートＨ１と第２のホスト・ポートＨ２を備えた組み込みＵＳＢホスト／デバイス・コントローラ１２と、低消費電力マイクロ・コントローラ・ユニット（ＭＣＵ）１４とを備える。
【００１２】
ドングル１０の第１のホスト・ポートＨ１は、図１に示すように、ＰＤＡ４のＵＳＢポート６に接続することができる。ドングル１０の第１のホスト・ポートＨ１が、ＰＤＡ４のＵＳＢポート６に接続される場合、ＰＤＡは事実上、ＵＳＢホストとして動作することができ、ドングル１０の第２のホスト・ポートＨ２は事実上、ＰＤＡ４のホスト・ポートとして機能する。したがって、ＰＤＡ４は、ＵＳＢバス１５によってドングル１０の第２のホスト・ポートＨ２に接続された任意のＵＳＢデバイスとの通信を制御することができる。
【００１３】
図１においては、第１のホスト・ポートＨ１および第２のホスト・ポートＨ２は、同じＵＳＢホスト／デバイス・コントローラ１２に接続されているが、ＭＣＵ１４は、２つの独立したＵＳＢホスト／デバイス・コントローラを介して、すなわち、ＰＤＡ専用に通信する第１のコントローラ、および１つまたは複数の接続ＵＳＢデバイス８専用に通信する第２のコントローラを介して、第１のホスト・ポートＨ１および第２のホスト・ポートＨ２と通信することもできることに留意されたい。
【００１４】
ドングル１０と接続されたとき、ＰＤＡ４がＵＳＢホストとして動作できるためには、ＰＤＡ４はドライバ更新を必要とする。
【００１５】
ドライバ更新は、使用中の特定のＵＳＢデバイスに特化されており、ＰＤＡ４の既存のＵＳＢデバイス・ハードウェアの上で動作する仮想ハードウェア・アブストラクション・レイヤ（仮想ＨＡＬ）ソフトウェア・ドライバの組み込みを行う。
【００１６】
図２は、図１のシステム内のハードウェアおよびソフトウェアを示したブロック図である。
【００１７】
従来のように、ＵＳＢデバイス４は、オペレーティング・システム１８と、ホスト・スタック２０と、デバイス・スタック／デバイス・ハードウェア２２とを有する。ＵＳＢホストとして動作できるように、ＰＤＡ４はまた、仮想ＨＡＬドライバ・ソフトウェア１６も実行する。ＵＳＢデバイス４が仮想ＨＡＬドライバ・ソフトウェア１６を実行しているとき、本明細書では、ＵＳＢデバイスのことをホストオンデバイス（ＨｏｓｔＯｎＤｅｖｉｃｅ）と呼ぶことがある。
【００１８】
ドングル１０は、ホスト・ハードウェア１２（すなわち、ＵＳＢホスト・コントローラ）と、ＭＣＵ１４と、ソフトホスト（ＳｏｆｔＨｏｓｔ）ファームウェア２４とを含む。
【００１９】
以下でより詳しく説明するソフトホスト・プロトコル・レイヤは、ドングル・コネクタ２８を介したデバイス４とドングル１０の間の通信を制御する。
【００２０】
図３は、ＭＣＵ１４の制御下にある、ドングル１０の動作を示したフローチャートである。図３のステップ３２において、電源が投入されると、ステップ３４において、ＭＣＵは、第１のホスト・ポートに対する接続の有無を判定するため、第１のホスト・ポートＨ１をポーリングする。何も接続されていない場合、プロセスはステップ３６で終了する。
【００２１】
何かが接続されている場合、ステップ３８において、ＭＣＵは、第１のホスト・ポートＨ１に接続されているのがＵＳＢホストであるかどうかを判定する。第１のホスト・ポートＨ１に接続されているのがＵＳＢホストである場合、プロセスはステップ４０に進み、ステップ４０において、ドングル１０は、ＵＳＢトランシーバとして動作する。すなわち、ドングルは、接続ＵＳＢホストが、第２のホスト・ポートＨ２に接続された任意のＵＳＢデバイス（複数のデバイス）との通信を従来通り制御できるように、第１のホスト・ポートＨ１と第２のホスト・ポートＨ２の間で通信データを直接受け渡しする。
【００２２】
ステップ３８において、ＭＣＵが、第１のホスト・ポートＨ１に接続されているのはＵＳＢホストではなく、ＵＳＢデバイスであると判定した場合、プロセスはステップ４１に進み、ステップ４１において、ＭＣＵは、第２のホスト・ポートＨ２にＵＳＢホストが接続されているかどうかを判定する。ＵＳＢホストが接続されている場合、ステップ４２において、ＵＳＢホスト／デバイス・コントローラ１２内のＵＳＢデバイス・コアは、第１のホスト・ポートＨ１に接続されたＵＳＢデバイスと第２のホスト・ポートＨ２に接続されたＵＳＢホストの間で従来通りのＵＳＢ通信が可能になるように動作する。
【００２３】
第２のホスト・ポートＨ２に接続されているのもＵＳＢデバイスである場合、ステップ４３において、ＭＣＵ１４は、第１のホスト・ポートＨ１に接続されたＵＳＢデバイスを列挙して、それが仮想ＨＡＬを実行中のＵＳＢデバイスであるかどうかをチェックする。ステップ４３において、ＭＣＵが、接続デバイス４は仮想ＨＡＬを実行中ではないと判定した場合、ステップ４４において、ＭＣＵは、デバイス４を使用不可にし、例えば、接続デバイス４が仮想ＨＡＬをサポートしていないことを通知するＬＥＤを点滅させるなどする。
【００２４】
ステップ４２において、ＭＣＵが、接続デバイス４は仮想ＨＡＬを実行中である（すなわち、接続デバイスは仮想ＨＡＬドライバ１６を有する）と判定した場合、ステップ４６において、ＭＣＵ１４は、ドングル１０が（デバイス４と共に）代替ＵＳＢホストとして動作可能な動作モードに入る。以下でより詳しく説明するこのモードにおいて、ドングル１０は、第２のホスト・ポートＨ２に接続された任意のＵＳＢデバイス（複数のデバイス）との通信を制御することができる。
【００２５】
パーソナル・コンピュータがＵＳＢホストになる従来のシステムにおいては、ホスト・スタックは、ホストＨＡＬ（ＨｏｓｔＨＡＬ）を介して下位のＵＳＢハードウェアにアクセスする。同様に、従来のＰＤＡ  ＵＳＢデバイスにおいては、デバイス・スタックは、デバイスＨＡＬ（Ｄｅｖｉｃｅ  ＨＡＬ）を介して下位のＵＳＢハードウェアにアクセスする。
【００２６】
しかし、本発明によれば、ソフトホスト・システムにおいては、ホスト・スタック（またはホスト・ステーション・ドライバ・ソフトウェア）２０が、ホスト・ハードウェア１２をアクセスする必要がある場合、ホスト・スタックは、アクセス動作詳細を仮想ＨＡＬドライバ１６に伝える。仮想ＨＡＬドライバ１６は、そのアクセス動作詳細を所定のソフトホスト・プロトコルでラップする。ソフトホスト・プロトコル・パケットは、ソフトホスト・ドングル１０が、未処理ソフトホスト・プロトコル・パケットの有無を調べるため、ＵＳＢデバイス・ハードウェアをポーリングしたときに、既存のＵＳＢデバイス・ハードウェア２２を介して送出される。
【００２７】
したがって、仮想ＨＡＬドライバ１６は、ホスト・ステーション・ドライバ・ソフトウェアに対して、ホスト・コントローラの存在をエミュレートする。すなわち、ホスト・スタック２０の観点からは、仮想ＨＡＬドライバ１６との通信は、従来のシステムにおけるホストＨＡＬとの通信と異なるところがない。ホスト・スタック２０は、仮想ＨＡＬドライバ１６を介して、実際のホスト・ハードウェアを見ることになる。
【００２８】
反対に、仮想ＨＡＬドライバ１６は、デバイス・コントローラ（またはデバイス・スタック）２２に対して、デバイス・コントローラの存在をエミュレートする。したがって、仮想ＨＡＬドライバ１６は、ホスト・ステーション・ドライバ・ソフトウェア２０とデバイス・コントローラの間で通信を変換する。
【００２９】
ソフトホスト・プロトコルは、以下のアクセス機能を提供する。
−ドングルのホスト・ハードウェア１２内のレジスタを読み取る。
−ドングルのホスト・ハードウェア１２内のレジスタに書き込む。
−ドングルのホスト・ハードウェア１２内のバッファ・メモリを読み取る。
−ドングルのホスト・ハードウェア１２内のバッファ・メモリに書き込む。
【００３０】
システム性能を向上させるため、例えば、レジスタを読み取り、その内容とある値とでＡＮＤ／ＯＲ演算を行い、変更値をレジスタに書き戻す機能のような、より高度な機能を追加することもできる。
【００３１】
ソフトホスト・プロトコルは、仮想ＨＡＬ上で動作するホスト・スタック２０が、デバイス・コントローラ・ハードウェアを使用してホスト・コントローラ１２のハードウェアをアクセスする方法を定義する。ソフトホスト・プロトコルについては、以下で詳しく説明する。その説明において、ドングル１０を指して、「ホストドングル（ＨｏｓｔＤｏｎｇｌｅ）」という用語が使用され、仮想ＨＡＬ１６上でホスト・スタック２０を実行するデバイス４、すなわちＵＳＢデバイス・ハードウェア２２を備える組み込みシステムを指して、「ホストオンデバイス」という用語が使用される。
【００３２】
ソフトホスト・プロトコルは、ホストドングル１０が接続デバイス４を列挙し、接続デバイス４がホストオンデバイスであることを確認した時点である図３の終りにおいて開始する。
【００３３】
動作モードにおいて、ＭＣＵ１４は、割り込みパイプを設定し、データの有無を調べるため仮想ＨＡＬドライバ１６をミリ秒間隔でポーリングする。デバイス４とドングル１０の間で送信されるデータは、ソフトホスト・プロトコルによって、ソフトホスト・パケットの形で送信される。ＰＤＡ４上のホスト・スタック２０が、仮想ＨＡＬドライバ１６を介してハードウェア・アクセス要求を送信した場合、仮想ＨＡＬドライバ１６は、ドングル１０の第１のホスト・ポートＨ１が割り込みパイプを介して仮想ＨＡＬドライバをポーリングしたとき、その要求をソフトホストパケット（ＳｏｆｔＨｏｓｔＰａｃｋｅｔ）として送信する。
【００３４】
ＭＣＵ１４は、このソフトホスト・パケットを組み込みＵＳＢホスト・コントローラ１２のバッファ・メモリから取り出し、ハードウェア・アクセスをしかるべく実行する。何らかの返送データが存在する場合（読み取り動作）、ＭＣＵ１４は、対応するデータをホスト１を介して送出する。
【００３５】
トラフィック
ホストドングル１０とホストオンデバイス４とは、専用の双方向バルク・パイプを使用して通信する。４つのタイプのペイロードが存在する。
ＨＲＵ  （ホストドングル要求ユニット）
ホストドングル１０によって送信
８バイト・ペイロードのバルク・パケット
ホストオンデバイス４をポーリングするために使用
割り込み情報（ＨＲＵ＿ＩＲＱ）を含む場合あり
ホストドングル１０はＨＲＵ送信後、必ず６４バイトのバルク・インを送信
ホストオンデバイス４はこのバルク・インを介してＮＯＢまたはＣＲＰで応答
ＮＯＢ  （未処理作業なし）
ホストオンデバイス４によって送信
８バイト・ペイロードのバルク・パケット
未処理トランザクションがない場合に送信
ＣＲＰ  （共通要求パケット）
ホストオンデバイス４によって送信
１６〜６４バイトのバルク・パケット
先の受信ＣＰＲコマンドの結果、および最適データ・セットを含む
ＡＰＲ  （要求に従う）
ホストドングル１０によって送信
１６〜６４バイトのバルク・パケット
【００３６】
フロー
すべてのＵＳＢシステムと同様に、転送はホストによるアクションで開始する。ソフトホスト・プロトコルの場合、ソフトホスト・ドングル１０が常にホストとなる。すべてのソフトホスト転送サイクルは、上で定義したように、ＨＲＵで開始する。現在の転送サイクルは、ソフトホスト・ドングル１０が次の転送サイクルを開始する前に完了しなければならない。
【００３７】
ポーリング−未処理なしサイクル：ＨＲＵ−ＮＯＢ
ホストドングル１０は、未処理コマンド・セットの有無を調べるため、ホストオンデバイス４をポーリングする。未処理コマンド・セットがない場合、ホストオンデバイス４は、ＮＯＢで応答する。
【００３８】
トランザクション：
ホストドングル１０がＢＵＬＫ−ＯＵＴを送信
ホストドングル１０がＤＡＴＡ（ＨＲＵ）を送信
ホストオンデバイス４がＡＣＫを送信
ホストドングル１０がＢＵＬＫ−ＩＮを送信
ホストオンデバイス４がＤＡＴＡ（ＮＯＢ）を送信
ホストドングル１０がＡＣＫを送信
【００３９】
ポーリング−未処理ありサイクル：ＨＲＵ−ＣＲＰ−ＡＰＲ
ホストドングル１０は、未処理コマンド・セットの有無を調べるため、ホストオンデバイス４をポーリングする。ホストオンデバイス４は、ＣＲＰによって未処理コマンド・セットを送信する。ホストドングル１０は、コマンドを実行し、ＡＰＲによって結果を返送する。
【００４０】
トランザクション：
ホストドングル１０がＢＵＬＫ−ＯＵＴを送信
ホストドングル１０がＤＡＴＡ（ＨＲＵ）を送信
ホストオンデバイス４がＡＣＫを送信
ホストドングル１０がＢＵＬＫ−ＩＮを送信
ホストオンデバイス４がＤＡＴＡ（ＣＲＰ）を送信
ホストドングル１０がＡＣＫを送信
ホストドングル１０がＢＵＬＫ−ＯＵＴを送信
ホストドングル１０がＤＡＴＡ（ＡＰＲ）を送信
ホストオンデバイス４がＡＣＫを送信
【００４１】
割り込みサイクル：ＨＲＵ＿ＩＲＱ−ＣＲＰ−ＡＰＲ
ホストドングル１０は、未処理ハードウェア割り込みをかけてホストオンデバイス４に送信を促す。ホストオンデバイス４は、適切なコマンド・セットを決定し、ＣＲＰによってそれを送信する。ホストドングル１０は、コマンドを実行し、ＡＰＲによって結果を返送する。ホストオンデバイス４は、未処理割り込みをクリアするか、またはＨＲＵ＿ＩＲＱの発生を無効化しなければならず、さもないと、ホストドングル１０は、ＨＲＵ＿ＩＲＱを継続して送信することになる。
【００４２】
トランザクション：
ホストドングル１０がＢＵＬＫ−ＯＵＴを送信
ホストドングル１０がＤＡＴＡ（ＨＲＵ＿ＩＲＱ）を送信
ホストオンデバイス４がＡＣＫを送信
ホストドングル１０がＢＵＬＫ−ＩＮを送信
ホストオンデバイス４がＤＡＴＡ（ＣＲＰ）を送信
ホストドングル１０がＡＣＫを送信
ホストドングル１０がＢＵＬＫ−ＯＵＴを送信
ホストドングル１０がＤＡＴＡ（ＡＰＲ）を送信
ホストオンデバイス４がＡＣＫを送信
【００４３】
パケット・フォーマット
ＨＲＵフォーマット
ＨＲＵは以下の情報を含む。
現在のフレーム番号
ホストドングル１０内のホスト・コントローラ１２のＨｃＩｎｔｅｒｒｕｐｔＳｔａｔｕｓ
デバイス・コントローラ２２の割り込みステータス
【００４４】
ＮＯＢフォーマット
特別な情報は必要としない。
【００４５】
ＣＲＰフォーマット、ＡＰＲフォーマット
ヘッダ内のアクティブ・ビットは、ＣＲＰの場合は１であり、ＡＰＲの場合は０である。
【００４６】
ＣＲＰのサイズは、１６〜６４バイトとすることができる。全体のサイズは、
（各々８バイトの）コマンド・セットの数と、
最適データ・セットから決まる。
【００４７】
ＣＲＰ内のコマンド・セットの最大数は、８である。
【００４８】
データ・セットの最大サイズは、６４−（８×コマンド・セット数）である。
【００４９】
単一のコマンド要求パケット内に複数のコマンド・セットを収めることによって、一連のハードウェア・アクセスを単一のパケットで伝えることができるので、転送待ち時間が短縮される。
【００５０】
コマンド・セット・フォーマット
コマンド・セットは、８バイトのデータ構造である。コマンド・セットは、以下の情報を含む。
コマンド・セット・Ｈｅａｄｅｒ（１バイト）
コマンド・セット・Ｉｎｄｅｘ（２バイト）
コマンド・セット・Ｄａｔａ（４バイト）
コマンド・セット・Ａｕｘ（１バイト）
【表１】
2010061670.tif 000003
【表２】
2010061670.tif 000004
【００５１】
仮想ＨＡＬの使用は、ハードウェア・ドングルがＵＳＢソフトウェアを処理する必要がないので、ドングルを低コストとすることができ、ホスト・ソフトウェアはＵＳＢデバイス上の組み込みシステムによって処理できるという利点を提供する。
【００５２】
したがって、本発明の好ましい実施形態においては、既存のハードウェアに変更を加えることなく、ＵＳＢデバイスにＵＳＢホスト機能をもたせることができるハードウェア・ドングルを提供する。これを達成するため、ＵＳＢデバイスは、ＵＳＢデバイス上の組み込みシステムによって処理できるエミュレーション・ソフトウェアを実行する。これによって、ハードウェア・ドングルはＵＳＢソフトウェアを処理する必要がなく、ドングルを低コストとすることができるという利点が提供される。
【００５３】
今までの説明では、仮想ＨＡＬドライバ・ソフトウェアによって、ＵＳＢデバイスが、ドングル１０と連携してＵＳＢホストとして機能できるようになるシステムに関連させて、本発明を説明してきた。しかし、類似の構造をもつ仮想ＨＡＬドライバ・ソフトウェアを使用して、ＵＳＢデバイス機能をもつシステムに、複数のインタフェース／機能を組み込むことができる。例えば、ドライバ・ソフトウェアによって、ＵＳＢデバイスが、Ｂｌｕｅｔｏｏｔｈ、ＩｒＤＡ、ＵＳＢ−ＯＴＧ、またはその他の通信プロトコルを介して通信できるようにすることができる。
【図面の簡単な説明】
【００５４】
【図１】バス通信システムの概略ブロック図である。
【図２】図１のシステム内のハードウェアおよびソフトウェアを示したブロック図である。
【図３】本発明の一態様による方法を示したフローチャートである。
【図１】
2010061670.tif 000005
【図２】
2010061670.tif 000006
【図３】
2010061670.tif 000007