(57)【要約】【課題】ＵＳＢ２．０対応のＵＳＢハブを対象にして、通信方式をＵＳＢ１．１に切り替えても問題がない場合にのみ通信方式の切り替えを実行するＵＳＢホスト装置の提供。【解決手段】ＵＳＢホスト装置は、ＵＳＢ２．０に対応したＵＳＢハブが接続されている場合、当該ＵＳＢハブに接続されたＵＳＢデバイスが所定の切り替え条件を満たすか否かを判定する（Ｓ２１０〜Ｓ２５０）。切り替え条件を満たすと判定した場合、第一ホストコントローラ部による制御への切り替えをＵＳＢコントローラに対して指令し、当該切り替え後に、第一ホストコントローラ部を介してＵＳＢハブに対してバスリセットを発行する（Ｓ２７０）。これにより、ＵＳＢハブと第一ホストコントローラ部との間で、ＵＳＢ１．１に準拠した手順でネゴシエーションを実行させ、以降は、第一ホストコントローラを利用して、ＵＳＢ１．１に準拠した通信方式で、ＵＳＢハブ経由の通信を行う。【選択図】図４
2015049612.tif 000002
【特許請求の範囲】
【請求項１】
ＵＳＢ（Universal Serial Bus）規格に準拠した方式で、ＵＳＢデバイスと通信を行うＵＳＢホスト装置であって、
ＵＳＢ１．１に準拠した方式でＵＳＢデバイスとの通信を制御する第一ホストコントローラ部、及びＵＳＢ２．０に準拠した方式でＵＳＢデバイスとの通信を制御する第二ホストコントローラ部を有し、前記第二ホストコントローラ部による制御中に、前記第一ホストコントローラ部による制御への切り替えが指令されると、前記第二ホストコントローラ部による制御を中止するとともに前記第一ホストコントローラ部による制御を開始するＵＳＢコントローラと、
前記ＵＳＢコントローラを利用して、ＵＳＢデバイスとの通信を行う制御手段と
を備え、
前記制御手段は、
ＵＳＢ２．０に対応したＵＳＢハブが接続されている場合に、当該ＵＳＢハブに接続されたＵＳＢデバイスが所定の切り替え条件を満たすか否かを判定し、
前記所定の切り替え条件を満たすと判定した場合には、前記第一ホストコントローラ部による制御への切り替えを前記ＵＳＢコントローラに対して指令し、
当該指令を受けた前記ＵＳＢコントローラが前記第二ホストコントローラ部による制御を中止するとともに前記第一ホストコントローラ部による制御を開始したら、前記第一ホストコントローラ部を介して前記ＵＳＢハブに対してバスリセットを発行することを、前記ＵＳＢコントローラに対して指令して、前記バスリセットによって初期状態へと戻された前記ＵＳＢハブと前記第一ホストコントローラ部との間で、ＵＳＢ１．１に準拠した手順でネゴシエーションを実行させることにより、前記第一ホストコントローラ部には、前記ＵＳＢハブをＵＳＢ１．１に対応したＵＳＢハブと認識させ、
以降は、前記ＵＳＢコントローラが有する前記第一ホストコントローラを利用して、ＵＳＢ１．１に準拠した通信方式で、前記ＵＳＢハブ経由の通信を行う
ＵＳＢホスト装置。
【請求項２】
前記制御手段は、前記ＵＳＢハブに接続された一つ以上のＵＳＢデバイスのうち、少なくとも一つのＵＳＢデバイスが、あらかじめ取り決められた所定の第一ＵＳＢデバイスである場合に、前記所定の切り替え条件を満たすと判定する
請求項１に記載のＵＳＢホスト装置。
【請求項３】
前記制御手段は、
ＵＳＢルートハブからツリー状に接続された、前記ＵＳＢハブを含む全てのＵＳＢデバイスのリストを作成して、そのリスト中から前記ＵＳＢハブに接続されたＵＳＢデバイスを特定し、
特定されたＵＳＢデバイスの中に、所定のベンダーＩＤ及びプロダクトＩＤを有するＵＳＢデバイスが存在していたら、当該ＵＳＢデバイスの記憶領域に記憶されている製造者名及び製品名のうち、少なくとも一方のデータを読み出し、
当該読み出したデータがあらかじめ取り決められたデータと一致していたら、データの読み出し対象となったＵＳＢデバイスについて、前記第一ＵＳＢデバイスであると判定する
請求項２に記載のＵＳＢホスト装置。
【請求項４】
前記制御手段は、
ＵＳＢルートハブからツリー状に接続された、前記ＵＳＢハブを含む全てのＵＳＢデバイスのリストを作成して、そのリスト中においてＵＳＢポートのポート番号の大きさ順に列挙される前記ＵＳＢハブのデバイス番号を特定し、
前記ＵＳＢポートのポート番号毎の接続状態を示すリストを作成して、そのリストから
接続状態にあるＵＳＢポートのポート番号を特定し、
前記ポート番号の大きさ順に列挙されるＵＳＢハブのデバイス番号と、前記接続状態にあるＵＳＢポートのポート番号との関係に基づいて、前記ＵＳＢハブが接続されたＵＳＢポートのポート番号を特定し、
前記所定の切り替え条件を満たすと判定した場合には、前記特定されたポート番号を指定して、前記第一ホストコントローラ部による制御への切り替えを前記ＵＳＢコントローラに対して指令する
請求項１〜請求項３のいずれか一項に記載のＵＳＢホスト装置。
【請求項５】
前記制御手段は、前記ＵＳＢハブに接続された一つ以上のＵＳＢデバイスについて、全てのＵＳＢデバイスが、ＵＳＢ２．０に準拠した通信速度での通信が必要なＵＳＢデバイスではなかった場合に、前記所定の切り替え条件を満たすと判定する
請求項１〜請求項４のいずれか一項に記載のＵＳＢホスト装置。
【請求項６】
ＵＳＢ（Universal Serial Bus）規格に準拠した方式で、ＵＳＢデバイスと通信を行うＵＳＢホスト装置であって、ＵＳＢ１．１に準拠した方式でＵＳＢデバイスとの通信を制御する第一ホストコントローラ部、及びＵＳＢ２．０に準拠した方式でＵＳＢデバイスとの通信を制御する第二ホストコントローラ部を有し、前記第二ホストコントローラ部による制御中に、前記第一ホストコントローラ部による制御への切り替えが指令されると、前記第二ホストコントローラ部による制御を中止するとともに前記第一ホストコントローラ部による制御を開始するＵＳＢコントローラと、前記ＵＳＢコントローラを利用して、ＵＳＢデバイスとの通信を行う制御手段とを備えるＵＳＢホスト装置において、
前記制御手段に、
ＵＳＢ２．０に対応したＵＳＢハブが接続されている場合に、当該ＵＳＢハブに接続されたＵＳＢデバイスが所定の切り替え条件を満たすか否かを判定する手順と、
前記所定の切り替え条件を満たすと判定した場合には、前記第一ホストコントローラ部による制御への切り替えを前記ＵＳＢコントローラに対して指令する手順と、
当該指令を受けた前記ＵＳＢコントローラが前記第二ホストコントローラ部による制御を中止するとともに前記第一ホストコントローラ部による制御を開始したら、前記第一ホストコントローラ部を介して前記ＵＳＢハブに対してバスリセットを発行することを、前記ＵＳＢコントローラに対して指令して、前記バスリセットによって初期状態へと戻された前記ＵＳＢハブと前記第一ホストコントローラ部との間で、ＵＳＢ１．１に準拠した手順でネゴシエーションを実行させることにより、前記第一ホストコントローラ部には、前記ＵＳＢハブをＵＳＢ１．１に対応したＵＳＢハブと認識させる手順と
を実行させることにより、
以降は、前記ＵＳＢホスト装置を、前記ＵＳＢコントローラが有する前記第一ホストコントローラを利用して、ＵＳＢ１．１に準拠した通信方式で、前記ＵＳＢハブ経由の通信を行う状態にする
ＵＳＢホスト装置用のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＵＳＢ（Universal Serial Bus）規格に準拠した方式で、ＵＳＢデバイスと通信を行うＵＳＢホスト装置、及びＵＳＢホスト装置用のプログラムに関する。
【背景技術】
【０００２】
従来、ＵＳＢ２．０対応のホスト装置において、ＵＳＢ２．０対応のデバイスと通信する際、ホスト装置の負荷が増大しそうな場合に、ホスト−デバイス間の通信方式をＵＳＢ２．０からＵＳＢ１．１に切り替える技術を、既に提案している（特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−２０３７８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、一般に、ＵＳＢホスト装置には複数のＵＳＢポートが設けられているが、これらのＵＳＢポートの総数を上回る数のＵＳＢデバイスをＵＳＢホスト装置に接続したい場合に、ＵＳＢハブが利用されている。このＵＳＢハブは、ＵＳＢデバイスの一種であり、他のＵＳＢデバイス同様に、ＵＳＢホスト装置からはＵＳＢ１．１対応なのかＵＳＢ２．０対応なのかが認識され、それに応じた制御が行われることになる。
【０００５】
具体的には、ＵＳＢハブがＵＳＢ１．１対応の場合、ＵＳＢホスト装置に設けられたＵＳＢコントローラは、ＵＳＢ１．１に準拠した方式でＵＳＢデバイスとの通信を制御する第一ホストコントローラ部を利用してＵＳＢハブとの通信を行う。また、ＵＳＢハブがＵＳＢ２．０対応の場合、ＵＳＢホスト装置に設けられたＵＳＢコントローラは、ＵＳＢ２．０に準拠した方式でＵＳＢデバイスとの通信を制御する第二ホストコントローラ部を利用してＵＳＢハブとの通信を行う。
【０００６】
しかし、上記のようなシステムにおいて、ＵＳＢホスト装置に複数のＵＳＢハブが接続され、かつ、それら複数のＵＳＢハブがいずれもＵＳＢ２．０対応である場合には、上述の第二ホストコントローラ部に通信負荷が集中する。そのため、仮に第一ホストコントローラ部の処理能力には余力があったとしても、第二ホストコントローラ部だけで複数のＵＳＢハブに接続された各ＵＳＢデバイスに順に対処せざるを得ず、複数のＵＳＢデバイスに対するアクセス速度は全体的に低下してしまう、という問題がある。
【０００７】
このような問題に対し、上記特許文献１に記載の技術を利用すれば、いずれかのＵＳＢハブとの通信方式をＵＳＢ２．０からＵＳＢ１．１に切り替えることは可能なので、これにより、第二ホストコントローラ部にかかる通信負荷を軽減することはできる。
【０００８】
しかし、ＵＳＢハブの中には、ＵＳＢ１．１に切り替えてもかまわないものや、ＵＳＢ２．０のまま使用したいものなどが混在している場合がある。そのため、ＵＳＢ１．１に切り替えてもかまわないＵＳＢハブか否かを考慮しないまま通信方式を切り替えてしまうと、ＵＳＢ２．０のまま使用したいＵＳＢハブであったにもかかわらず、ＵＳＢ１．１に切り替えられてしまう、という問題が発生する。
【０００９】
例えば、低速通信でも十分なＵＳＢデバイス（例えば、マウスやキーボードなど。）が接続されたＵＳＢハブであれば、ＵＳＢ１．１に切り替えても大きな問題はない。これに
対し、高速通信が必要なＵＳＢデバイス（例えば、メモリーカードやハードディスク装置など。）が接続されたＵＳＢハブであれば、ＵＳＢ２．０のまま使用する方が好ましい。しかし、通信負荷の軽減だけを目的に、高速通信が必要なＵＳＢデバイスが接続されているＵＳＢハブに対して通信方式の切り替えを行うと、高速通信が必要なＵＳＢデバイスへのアクセス速度が低下してしまう、という問題が起きる。このような問題について、上記特許文献１には、何ら解決策は示されていない。
【００１０】
以下に説明する技術は、上述のような課題を解決しようとするものであり、その目的の一つは、ＵＳＢ２．０対応のＵＳＢハブを対象にして、通信方式をＵＳＢ１．１に切り替えても問題がない場合にのみ通信方式の切り替えを実行するＵＳＢホスト装置と、ＵＳＢホスト装置用のプログラムを提供することにある。
【課題を解決するための手段】
【００１１】
以下に説明するＵＳＢホスト装置は、ＵＳＢ規格に準拠した方式で、ＵＳＢデバイスと通信を行うＵＳＢホスト装置であって、ＵＳＢ１．１に準拠した方式でＵＳＢデバイスとの通信を制御する第一ホストコントローラ部、及びＵＳＢ２．０に準拠した方式でＵＳＢデバイスとの通信を制御する第二ホストコントローラ部を有し、前記第二ホストコントローラ部による制御中に、前記第一ホストコントローラ部による制御への切り替えが指令されると、前記第二ホストコントローラ部による制御を中止するとともに前記第一ホストコントローラ部による制御を開始するＵＳＢコントローラと、前記ＵＳＢコントローラを利用して、ＵＳＢデバイスとの通信を行う制御手段とを備え、前記制御手段は、ＵＳＢ２．０に対応したＵＳＢハブが接続されている場合に、当該ＵＳＢハブに接続されたＵＳＢデバイスが所定の切り替え条件を満たすか否かを判定し、前記所定の切り替え条件を満たすと判定した場合には、前記第一ホストコントローラ部による制御への切り替えを前記ＵＳＢコントローラに対して指令し、当該指令を受けた前記ＵＳＢコントローラが前記第二ホストコントローラ部による制御を中止するとともに前記第一ホストコントローラ部による制御を開始したら、前記第一ホストコントローラ部を介して前記ＵＳＢハブに対してバスリセットを発行することを、前記ＵＳＢコントローラに対して指令して、前記バスリセットによって初期状態へと戻された前記ＵＳＢハブと前記第一ホストコントローラ部との間で、ＵＳＢ１．１に準拠した手順でネゴシエーションを実行させることにより、前記第一ホストコントローラ部には、前記ＵＳＢハブをＵＳＢ１．１に対応したＵＳＢハブと認識させ、以降は、前記ＵＳＢコントローラが有する前記第一ホストコントローラを利用して、ＵＳＢ１．１に準拠した通信方式で、前記ＵＳＢハブ経由の通信を行う。
【００１２】
このように構成されたＵＳＢホスト装置によれば、ＵＳＢホスト装置が備える制御手段は、ＵＳＢ２．０に対応したＵＳＢハブが接続されている場合、当該ＵＳＢハブに接続されたＵＳＢデバイスが所定の切り替え条件を満たすか否かを判定する。
【００１３】
切り替え条件の具体例については後から詳述するが、例えば、通信方式をＵＳＢ１．１に切り替えてもよいＵＳＢハブに対しては、その旨を示すための専用ＵＳＢデバイスを事前に接続することにする。この場合は、そのような専用ＵＳＢデバイスが接続されているか否かが切り替え条件となる。あるいは、そのような専用ＵＳＢデバイスを利用しなくても、ＵＳＢハブに接続されているＵＳＢデバイスの中に、高速通信が必要なＵＳＢデバイスが存在しないことを切り替え条件にしてもよい。
【００１４】
このような所定の切り替え条件を満たすと判定した場合、制御手段は、第一ホストコントローラ部による制御への切り替えをＵＳＢコントローラに対して指令する。この指令を受けたＵＳＢコントローラは、第二ホストコントローラ部による制御を中止するとともに第一ホストコントローラ部による制御を開始する。
【００１５】
ただし、ＵＳＢコントローラが第一ホストコントローラ部による制御を開始したとき、ＵＳＢハブは、既にＵＳＢ２．０に対応したデバイスとして機能している状態にある。そのため、ＵＳＢコントローラが、単に第一ホストコントローラ部による制御を開始しても、それだけではＵＳＢハブをＵＳＢ１．１に対応したデバイスとして認識することができず、その場合、ＵＳＢコントローラは、第一ホストコントローラ部による制御を中止するとともに第二ホストコントローラ部による制御を行う状態に復帰してしまう。そこで、ＵＳＢコントローラが、第一ホストコントローラ部による制御を開始した後には、さらに、制御手段からの指令に基づき、第一ホストコントローラ部を介してＵＳＢハブに対してバスリセット信号（本明細書中では単に「バスリセット」とも称する。）を発行する。
【００１６】
バスリセットが発行されると、ＵＳＢハブは初期状態に戻り、第一ホストコントローラ部による制御を開始したＵＳＢコントローラとの間で、ネゴシエーションを開始する。その結果、第一ホストコントローラ部は、ＵＳＢハブをＵＳＢ１．１に対応したＵＳＢデバイスと認識し、以降は、ＵＳＢコントローラが有する第一ホストコントローラ部を利用して、ＵＳＢ１．１に準拠した通信方式でＵＳＢハブとの通信を行う状態に切り替わることになる。また、ＵＳＢハブ側においても、ＵＳＢホスト装置をＵＳＢ１．１に対応しているものと認識し、ＵＳＢ１．１に準拠した通信方式でＵＳＢホスト装置との通信を行う状態になる。
【００１７】
つまり、ＵＳＢコントローラが第一ホストコントローラ部による制御を開始することで、ＵＳＢホスト装置がＵＳＢ１．１対応の機器に切り替わるとともに、ＵＳＢホスト装置側がＵＳＢハブの認識に失敗する前にＵＳＢハブに対してバスリセットを発行することで、ＵＳＢ２．０対応の作動状態になっているＵＳＢハブを初期状態に戻すのである。これにより、ＵＳＢホスト装置及びＵＳＢハブは、双方がＵＳＢ１．１に準拠した手順でネゴシエーションを行うことになり、最終的にＵＳＢ１．１に準拠した通信方式での通信が可能となる。
【００１８】
以上説明した通り、上記ＵＳＢホスト装置によれば、ＵＳＢ２．０対応のＵＳＢハブが一つ以上接続されている場合に、そのＵＳＢハブに接続されているＵＳＢデバイスが所定の切り替え条件を満たせば、ＵＳＢハブとの通信方式がＵＳＢ１．１となる。一方、ＵＳＢハブに接続されているＵＳＢデバイスが所定の切り替え条件を満たさない場合は、ＵＳＢハブとの通信方式がＵＳＢ２．０のまま維持される。
【００１９】
したがって、通信方式をＵＳＢ１．１に切り替えてもかまわないＵＳＢハブについては、所定の切り替え条件を満たすように設定し、通信方式をＵＳＢ２．０のまま使用したいＵＳＢハブについては、所定の切り替え条件を満たさないように設定しておけば、ＵＳＢ２．０のまま使用したいＵＳＢハブであったにもかかわらず、ＵＳＢ１．１に切り替えられてしまう、という問題が発生するのを未然に防ぐことができる。
【００２０】
また、上記のように、通信方式をＵＳＢ１．１に切り替えてもかまわないＵＳＢハブについては、ＵＳＢ１．１に切り替えることにより、第二ホストコントローラ部に通信負荷が集中するのを抑制することができる。これにより、ＵＳＢ２．０のまま使用したいＵＳＢハブに接続されたＵＳＢデバイスに対するアクセスは、上述の切り替え前よりも容易になる。
【００２１】
以下、以上のようなＵＳＢホスト装置において採用すると好ましい構成について説明する。
まず、前記制御手段は、前記ＵＳＢハブに接続された一つ以上のＵＳＢデバイスのうち、少なくとも一つのＵＳＢデバイスが、あらかじめ取り決められた所定の第一ＵＳＢデバイスである場合に、前記所定の切り替え条件を満たすと判定すると好ましい。
【００２２】
このように構成されたＵＳＢホスト装置によれば、所定の第一ＵＳＢデバイスをＵＳＢハブに接続する、という簡単な手法で、そのＵＳＢハブの通信方式をＵＳＢ２．０からＵＳＢ１．１に切り替えてもよいことを、ＵＳＢホスト装置側へ伝達することができる。
【００２３】
また、前記制御手段は、ＵＳＢルートハブからツリー状に接続された、前記ＵＳＢハブを含む全てのＵＳＢデバイスのリストを作成して、そのリスト中から前記ＵＳＢハブに接続されたＵＳＢデバイスを特定し、特定されたＵＳＢデバイスの中に、所定のベンダーＩＤ及びプロダクトＩＤを有するＵＳＢデバイスが存在していたら、当該ＵＳＢデバイスの記憶領域に記憶されている製造者名及び製品名のうち、少なくとも一方のデータを読み出し、当該読み出したデータがあらかじめ取り決められたデータと一致していたら、データの読み出し対象となったＵＳＢデバイスについて、前記第一ＵＳＢデバイスであると判定すると好ましい。
【００２４】
このように構成されたＵＳＢホスト装置によれば、ＵＳＢデバイスのベンダーＩＤ及びプロダクトＩＤに基づいて、第一ＵＳＢデバイスの可能性があるＵＳＢデバイスを検出する。その上で、そのＵＳＢデバイスの記憶領域に記憶されている製造者名（ＵＳＢ規格で規定されている“iManufacturer”。）及び製品名（ＵＳＢ規格で規定されている“iProduct”。）のうち、少なくとも一方のデータを読み出し、読み出したデータがあらかじめ取り決められたデータと一致したら、そのＵＳＢデバイスが第一ＵＳＢデバイスであると判定する。
【００２５】
したがって、ＵＳＢデバイスの記憶領域に記憶されている製造者名及び製品名のうち、少なくとも一方を利用して第一ＵＳＢデバイスであるか否かを的確に判断することができる。また、ＵＳＢデバイスの記憶領域に記憶されている製造者名及び製品名を書き換え可能なＵＳＢデバイスを利用すれば、製造者名及び製品名を任意に書き換えておくことで、そのような書き換えがなされた特殊なＵＳＢデバイスだけを第一ＵＳＢデバイスと判断させることが可能なので、この場合は、書き換えがなされていないＵＳＢデバイスが第一ＵＳＢデバイスと誤認されてしまうのを防ぐこともできる。
【００２６】
また、前記制御手段は、ＵＳＢルートハブからツリー状に接続された、前記ＵＳＢハブを含む全てのＵＳＢデバイスのリストを作成して、そのリスト中においてＵＳＢポートのポート番号の大きさ順に列挙される前記ＵＳＢハブのデバイス番号を特定し、前記ＵＳＢポートのポート番号毎の接続状態を示すリストを作成して、そのリストから接続状態にあるＵＳＢポートのポート番号を特定し、前記ポート番号の大きさ順に列挙されるＵＳＢハブのデバイス番号と、前記接続状態にあるＵＳＢポートのポート番号との関係に基づいて、前記ＵＳＢハブが接続されたＵＳＢポートのポート番号を特定し、前記所定の切り替え条件を満たすと判定した場合には、前記特定されたポート番号を指定して、前記第一ホストコントローラ部による制御への切り替えを前記ＵＳＢコントローラに対して指令すると好ましい。
【００２７】
このように構成されたＵＳＢホスト装置によれば、ＵＳＢポートのポート番号の大きさ順に列挙されるＵＳＢハブのデバイス番号と、接続状態にあるＵＳＢポートのポート番号との関係に基づいて、ＵＳＢハブが接続されたＵＳＢポートのポート番号を特定することができる。したがって、所定の切り替え条件を満たすと判定した場合には、上述の手法で特定されたポート番号を指定して、第一ホストコントローラ部による制御への切り替えをＵＳＢコントローラに対して指令することができる。
【００２８】
また、前記制御手段は、前記ＵＳＢハブに接続された一つ以上のＵＳＢデバイスについて、全てのＵＳＢデバイスが、ＵＳＢ２．０に準拠した通信速度での通信が必要なＵＳＢ
デバイスではなかった場合に、前記所定の切り替え条件を満たすと判定すると好ましい。
【００２９】
このように構成されたＵＳＢホスト装置によれば、ＵＳＢ２．０に準拠した通信速度での通信が必要なＵＳＢデバイスが接続されていないＵＳＢハブについて、通信方式をＵＳＢ１．１に切り替えることができる。したがって、このような手法であれば、先に説明したような専用の第一ＵＳＢデバイスを利用することなく、ＵＳＢ１．１に切り替えてもかまわないＵＳＢハブを選び出すことができる。ただし、このような構成を採用している場合に、更に上述の第一ＵＳＢデバイスを併用することもできるので、これら二種類の切り替え条件は、所望の優先順位を付けて採用することができる。
【００３０】
例えば、ＵＳＢ２．０に準拠した通信速度での通信が必要なＵＳＢデバイスが存在する場合には、この切り替え条件を優先して、第一ＵＳＢデバイスが接続されているか否かにかかわらず、切り替えを実行しない、という構成にすることができる。
【００３１】
すなわち、前記制御手段は、前記ＵＳＢハブに接続された二つ以上のＵＳＢデバイスのうち、一つのＵＳＢデバイスが、前記第一ＵＳＢデバイスであったとしても、当該第一ＵＳＢデバイスとは別のＵＳＢデバイスのうち、少なくとも一つのＵＳＢデバイスが、ＵＳＢ２．０に準拠した通信速度での通信が必要なＵＳＢデバイスである場合に、前記所定の切り替え条件を満たさないと判定する、という構成を採用し得る。
【００３２】
あるいは、第一ＵＳＢデバイスが接続されている場合には、この切り替え条件を優先して、ＵＳＢ２．０に準拠した通信速度での通信が必要なＵＳＢデバイスが存在するか否かにかかわらず、切り替えを実行する、という構成にすることもできる。これらの切り替え条件の優先順位をどのように設定するかは任意である。
【００３３】
次に、以下に説明するＵＳＢホスト装置用のプログラムは、ＵＳＢ規格に準拠した方式で、ＵＳＢデバイスと通信を行うＵＳＢホスト装置であって、ＵＳＢ１．１に準拠した方式でＵＳＢデバイスとの通信を制御する第一ホストコントローラ部、及びＵＳＢ２．０に準拠した方式でＵＳＢデバイスとの通信を制御する第二ホストコントローラ部を有し、前記第二ホストコントローラ部による制御中に、前記第一ホストコントローラ部による制御への切り替えが指令されると、前記第二ホストコントローラ部による制御を中止するとともに前記第一ホストコントローラ部による制御を開始するＵＳＢコントローラと、前記ＵＳＢコントローラを利用して、ＵＳＢデバイスとの通信を行う制御手段とを備えるＵＳＢホスト装置において、前記制御手段に、ＵＳＢ２．０に対応したＵＳＢハブが接続されている場合に、当該ＵＳＢハブに接続されたＵＳＢデバイスが所定の切り替え条件を満たすか否かを判定する手順と、前記所定の切り替え条件を満たすと判定した場合には、前記第一ホストコントローラ部による制御への切り替えを前記ＵＳＢコントローラに対して指令する手順と、当該指令を受けた前記ＵＳＢコントローラが前記第二ホストコントローラ部による制御を中止するとともに前記第一ホストコントローラ部による制御を開始したら、前記第一ホストコントローラ部を介して前記ＵＳＢハブに対してバスリセットを発行することを、前記ＵＳＢコントローラに対して指令して、前記バスリセットによって初期状態へと戻された前記ＵＳＢハブと前記第一ホストコントローラ部との間で、ＵＳＢ１．１に準拠した手順でネゴシエーションを実行させることにより、前記第一ホストコントローラ部には、前記ＵＳＢハブをＵＳＢ１．１に対応したＵＳＢハブと認識させる手順とを実行させることにより、以降は、前記ＵＳＢホスト装置を、前記ＵＳＢコントローラが有する前記第一ホストコントローラを利用して、ＵＳＢ１．１に準拠した通信方式で、前記ＵＳＢハブ経由の通信を行う状態にする。
【００３４】
このように構成されたＵＳＢホスト装置用のプログラムが備える各手順を、ＵＳＢホスト装置の有する制御手段が実行すれば、ＵＳＢホスト装置は、先に説明した通りの制御を
実行することになり、これにより、先に説明した通りの作用、効果を奏することになる。なお、このようなＵＳＢホスト装置用のプログラムにおいても、先に説明した「ＵＳＢホスト装置において採用すると好ましい構成」を実現可能に構成されていると好ましい。
【図面の簡単な説明】
【００３５】
【図１】ＵＳＢホスト装置及びＵＳＢデバイスを含むシステム全体のブロック図。
【図２】ＵＳＢコントローラの詳細を示すブロック図。
【図３】ＵＳＢホスト装置において実行される処理を示すフローチャート。
【図４】Ｓ１２０の詳細を示すフローチャート。
【図５】Ｓ２７０の詳細を示すフローチャート。
【図６】ＵＳＢシステム全体のツリー情報を示す説明図。
【図７】バス番号１、デバイス番号１の詳細情報を示す説明図。
【図８】バス番号１、デバイス番号７の詳細情報を示す説明図。
【発明を実施するための形態】
【００３６】
次に、上述のＵＳＢホスト装置について、より具体的な例を挙げて説明する。
［ＵＳＢホスト装置を含むシステム全体の構成］
図１に示すように、ＰＣ（Personal Computer）１には、ＵＳＢハブ２を介してＵＳＢデバイス３，４が接続され、ＵＳＢハブ５を介してＵＳＢデバイス６，７が接続され、ＵＳＢハブ８を介してＵＳＢデバイス９，１０が接続されている。なお、これらのうち、ＰＣ１が、本明細書でいうＵＳＢホスト装置の一例に相当する。
【００３７】
ＰＣ１は、制御部１１、表示部１２、ハードディスク装置（ＨＤＤ）１３、及び入力部１４などを備える。この他にも、ＰＣ１は様々な構成（例えば、光学ドライブ、ネットワークインターフェースなど。）を備えるが、これら周知の構成に関する説明については省略する。
【００３８】
制御部１１は、ＣＰＵ１６、ＭＣＨ（Memory Controller Hub）１７、ＩＣＨ（I/O Controller Hub）１８、及びメモリ１９などを備える。ＭＣＨ１７及びＩＣＨ１８は、一般にチップセットと呼ばれているＣＰＵ１６の周辺回路で、ＭＣＨ１７はノースブリッジ、ＩＣＨ１８はサウスブリッジとも呼ばれている。
【００３９】
ＭＣＨ１７には、主に高速な入出力が必要とされる各部が接続されている。具体的には、上述のＩＣＨ１８の他、メモリ１９や表示部１２（グラフィックスコントローラなど。）との入出力インターフェースが設けられている。ＩＣＨ１８には、上述のＭＣＨ１７に比べて低速な入出力でも問題のない各部が接続されている。具体的には、ＨＤＤ１３や入力部１４（マウスやキーボードなど。）との入出力インターフェースが設けられている。
【００４０】
また、ＩＣＨ１８には、ＵＳＢインターフェースが設けられている。具体的には、本事例において、ＩＣＨ１８は、ＵＳＢコントローラ２１を内蔵している。ＵＳＢコントローラ２１は、図２に示すように、ＵＳＢ１．１対応のＵＨＣＩ（Universal Host Controller Interface）コントローラ２２，２３，２４と、ＵＳＢ２．０対応のＥＨＣＩ（Enhanced Host Controller Interface）コントローラ２５を備えている。
【００４１】
ＵＳＢコントローラ２１は、六つのＵＳＢポート（Ｐｏｒｔ１〜Ｐｏｒｔ６）をサポートしており、三つのＵＨＣＩコントローラ２２，２３，２４は、それぞれが二つのＵＳＢポートに対応し、ＥＨＣＩコントローラ２５は、六つのＵＳＢポートに対応している。各ＵＳＢポートにおいて、ＵＨＣＩコントローラ２２，２３，２４とＥＨＣＩコントローラ２５は、いずれか一方が排他的に有効となる。
【００４２】
なお、本事例において、ＰＣ１には、ＯＳとしてＬｉｎｕｘ（登録商標；以下同様。）が搭載されている。制御部１１では、ＣＰＵ１６によって各種処理が実行されて、ＯＳやその他のプログラムが機能する。
【００４３】
ＵＳＢハブ２，５，８は、周知の通り、一つのＵＳＢポートを複数に分岐させることにより、複数のＵＳＢデバイスを接続可能とするＵＳＢデバイスの一種で、本事例の場合、各ＵＳＢハブ２，５，８は、いずれもＵＳＢ２．０に対応したものが採用されている。
【００４４】
ＵＳＢデバイス３，４，６，７，９，１０は、例えば、マウス、キーボード、メモリーカードリーダー、ＨＤＤなど、それぞれが様々な機能を持つデバイスである。これらの機能のいずれを備えるデバイスであるのかは、本事例では任意である。ただし、これらＵＳＢデバイス３，４，６，７，９，１０は、以下のような関係にある。
【００４５】
まず、本事例において、ＵＳＢハブ５は、後述する処理の中で、ＰＣ１との通信方式がＵＳＢ１．１に切り替えられるものである。また、ＵＳＢハブ２，８は、後述する処理が実行されても、ＰＣ１との通信方式がＵＳＢ２．０のまま維持されるものである。このような通信方式の切り替えが行われるか否かは、ＵＳＢハブ２，５，８それぞれに接続されたＵＳＢデバイス３，４，６，７，９，１０が、どのようなＵＳＢデバイスであるかによって変わる。
【００４６】
具体的には、ＵＳＢデバイス７，１０は、これらが接続されたＵＳＢハブ５，８とＰＣ１との通信方式をＵＳＢ１．１に切り替えたい場合に、利用者がＵＳＢハブ５，８に対して接続する特殊なデバイスである。このような特殊なデバイスであることは、ＵＳＢデバイス７，１０が備える記憶領域中に記憶された情報（本事例の場合、ベンダーＩＤ、プロダクトＩＤ、製造者名、及び製品名。）に基づいて、ＰＣ１側で判断される。なお、これら二つのＵＳＢデバイス７，１０は、本明細書でいう第一ＵＳＢデバイスの一例に相当する。
【００４７】
一方、本事例において、ＵＳＢデバイス９は、ＵＳＢハブ８とＰＣ１との通信方式がＵＳＢ１．１に切り替わるのは好ましくないデバイスである。このようなＵＳＢデバイス９の例としては、通信速度を低下させたくないデバイス（例えば、メモリーカードリーダーやＨＤＤなど。）が想定される。このようなデバイスであることは、ＵＳＢデバイス９が備える記憶領域中に記憶された情報（本事例の場合、ベンダーＩＤ、及びプロダクトＩＤ。）に基づいて、ＰＣ１側で判断される。
【００４８】
後述する処理においては、ＵＳＢハブ５に対してＵＳＢデバイス７が接続されていることにより、切り替え条件が成立したと判断されて、ＰＣ１とＵＳＢハブ５との間の通信方式が、ＵＳＢ２．０からＵＳＢ１．１に切り替えられる。一方、ＵＳＢハブ８に対してＵＳＢデバイス１０が接続されている場合、他の条件に問題がなければ、切り替え条件が成立したと判断されるが、本事例の場合、ＵＳＢハブ８に対して上述のようなＵＳＢデバイス９が接続されているため、切り替え条件が成立しない。また、ＵＳＢハブ２に対しては、ＵＳＢデバイス７，１０のような特殊なデバイスが接続されていないため、切り替え条件が成立しない。そのため、ＵＳＢハブ２，８については、ＰＣ１との間の通信方式が、ＵＳＢ２．０のまま維持される。
【００４９】
このような通信方式の切り替えが行われるので、ＵＳＢデバイス６は、ＵＳＢハブ５とＰＣ１との通信方式がＵＳＢ１．１に切り替わってもかまわないデバイスとなっている。このようなＵＳＢデバイス６の例としては、通信速度が低下してもかまわないデバイス（例えば、キーボードやマウスなど。）が想定される。
【００５０】
なお、ＵＳＢデバイス３，４は、利用者がＰＣ１との通信方式をＵＳＢ１．１に切り替えたいとは考えていないＵＳＢハブ２に対して接続されたデバイスである。したがって、このようなＵＳＢデバイス３，４の例としては、通信速度を低下させたくないデバイス（例えば、メモリーカードリーダーやＨＤＤなど。）が想定されるが、通信速度が低下してもかまわないデバイス（例えば、キーボードやマウスなど。）でもよい。
【００５１】
本事例において、ＵＳＢデバイス７，１０としては、それぞれが内蔵する記憶領域中に記憶されている製造者名（iManufacturer）及び製品名（iProduct）を、所定の書き換えツールによって書き換え可能なデバイスが採用されている。そして、本事例において、ＵＳＢデバイス７，１０には、製造者名としては文字列“BRO”があらかじめ書き込まれ、製品名としては文字列“USBHUB-SW-FULL”があらかじめ書き込まれている。ＰＣ１は、これらの情報に基づいて、ＵＳＢデバイス７，１０が特殊なデバイスである旨を認識する。
【００５２】
ちなみに、本事例において、ＵＳＢデバイス７，１０は、ＵＳＢポートをシリアルポートに変換する機能を備えたＵＳＢデバイス（以下、ＵＳＢシリアルデバイスと称する。）である。そのため、ＵＳＢデバイス７，１０を利用することで、シリアルポート接続の各種機器をＵＳＢポートに接続することができる。ただし、本事例において、ＵＳＢデバイス７，１０を採用した理由は、製造者名及び製品名を書き換え可能であったからであり、ＵＳＢシリアルデバイスとしての機能を備えていたからではない。
【００５３】
［通信方式の切り替え処理］
次に、ＰＣ１において実行される処理のうち、上述のようなＵＳＢハブ２，５，８との間の通信方式を切り替える処理について、図３〜図５に基づいて説明する。なお、この処理は、ＰＣ１の電源をオンにしたことを契機として、ＣＰＵ１６において実行される処理の中の一つである。
【００５４】
この処理を開始すると、ＣＰＵ１６は、Ｌｉｎｕｘカーネル、及びＵＳＢシステムを起動する（Ｓ１１０）。これらの処理は、Ｌｉｎｕｘを搭載したＰＣにおいて一般的に実行される処理である。また、Ｓ１１０において、ＵＳＢシステムを起動すると、ＵＳＢ２．０に対応しているＵＳＢハブ２，５，８は、ＰＣ１とのネゴシエーションにより、いずれもＵＳＢ２．０対応のＵＳＢデバイスとして認識される。その結果、ＰＣ１とＵＳＢハブ２，５，８は、いずれもＵＳＢ２．０に準拠した通信方式で通信可能な状態となる。
【００５５】
続いて、ＣＰＵ１６は、特定のＵＳＢ２．０対応ＵＳＢハブ（本事例ではＵＳＢハブ５。）との通信方式をＵＳＢ１．１に切り替える（Ｓ１２０）。このＳ１２０の詳細は、図３に示すような処理となる。
【００５６】
すなわち、この処理を開始すると、ＣＰＵ１６は、まず、ＵＳＢシステム全体のツリー情報を取得する（Ｓ２１０）。具体的には、Ｌｉｎｕｘのコマンド“lsusb”を利用して、標準エラー出力に出力される情報を所定のファイルに格納する。例えば、ファイル“usbt.txt”に情報を格納する場合であれば、ＣＰＵ１６は、コマンド“lsusb -t 2> usbt.txt”を実行する。これにより、ファイル“usbt.txt”には、図６に例示するような情報が格納される。
【００５７】
続いて、ＣＰＵ１６は、ファイル“usbt.txt”の中から、ＥＨＣＩのバス番号（ｂ）とその下のデバイス番号（ｄ）を抽出する（Ｓ２２０）。本事例の場合は、“usbt.txt”中にある“Ｂｕｓ＃１”のみがＥＨＣＩで、“Ｂｕｓ＃２”〜“Ｂｕｓ＃４”がＵＨＣＩであるが、システムによってはＥＨＣＩは一つとは限らず、また、必ずしもＥＨＣＩが小さい番号とも限らない。ただし、ハードウェアが決まれば、ＥＨＣＩのバス番号は一定となるので、どのバス番号がＥＨＣＩなのかを特定することはできる。
【００５８】
続いて、ＣＰＵ１６は、抽出されたバス番号（ｂ）、デバイス番号（ｄ）の全てを対象に、詳細情報を取得する（Ｓ２３０）。具体的には、Ｌｉｎｕｘのコマンド“lsusb”を利用して、標準出力に出力される情報を所定のファイルに格納する。例えば、バス番号（ｂ）、デバイス番号（ｄ）の詳細情報を取得して、ファイル“s-b-d.txt”（ただし、ファイル名中のb,dはバス番号、デバイス番号を示す数値。）に情報を格納する場合であれば、ＣＰＵ１６は、コマンド“lsusb -v -s b:d > s-b-d.txt”を実行する。
【００５９】
より具体的には、例えば、バス番号１、デバイス番号１の場合、コマンド“lsusb -v -s 1:1 > s-1-1.txt”が実行され、その結果、ファイル“s-1-1.txt”には、図７に例示するような情報が格納される（ただし、図７には情報の一部を省略して図示。）。また、バス番号１、デバイス番号７の場合、コマンド“lsusb -v -s 1:7 > s-1-7.txt”が実行され、その結果、ファイル“s-1-7.txt”には、図８に例示するような情報が格納される（ただし、図８には情報の一部を省略して図示。）。
【００６０】
なお、例示したファイル“usbt.txt”では“Ｂｕｓ＃１”の下のデバイス番号は、“Ｄｅｖ＃１”〜“Ｄｅｖ＃１０”の連番になっているが、実際のシステムでは連番になっているとは限らず、欠番が存在する場合がある。ただし、“Ｄｅｖ＃１”は、どのシステム、どのバス番号でも、ルートハブと決まっている。
【００６１】
続いて、ＣＰＵ１６は、ファイル“usbt.txt”中において、ルートハブ（Ｄｅｖ＃１）から２段下の階層に記述された文字列“Vendor 0x0403 Product 0x6001”を探す（Ｓ２４０）。本事例の場合、図６に示すように、Ｄｅｖ＃７、及びＤｅｖ＃１０に対応する位置に、上記文字列が記述されており、これらがＣＰＵ１６によって検出される。なお、文字列“Vendor 0x0403 Product 0x6001”は、上述したＵＳＢデバイス７，１０として採用したＵＳＢシリアルデバイスのベンダーＩＤとプロダクトＩＤを示している。
【００６２】
続いて、ＣＰＵ１６は、これらの詳細情報（s-1-7.txt、s-1-10.txt）を確認し、その中にある“iManufacturer”欄に対応する文字列が“BRO”、かつ“iProduct”欄に対応する文字列が“USB-SW-FULL”の場合は、その上の階層にあるＵＳＢハブ（本事例では“Ｄｅｖ＃５”及び“Ｄｅｖ＃８”）を切り替え候補に登録する（Ｓ２５０）。すなわち、Ｓ２５０では、製造者名及び製品名を示す文字列が、本システムで特殊なデバイスとして用いられることを目的として、所定の文字列に書き換えられていることを確認する。これにより、本システムで特殊なデバイスとして用いるつもりがないまま、たまたま市販のＵＳＢシリアルデバイスが本システムに混入した場合でも、そのＵＳＢシリアルデバイスを特殊なデバイスとして誤認識しないようにしている。なお、本事例では、製造者名及び製品名のうち、いずれか一方でも上記文字列とは違っていたら、切り替え候補への登録をしない。
【００６３】
続いて、ＣＰＵ１６は、ファイル“usbt.txt”を見て切り替え候補に登録されたＵＳＢハブの下に、切り替え除外デバイスリスト中に登録されたベンダーＩＤ及びプロダクトＩＤのデバイスがあったら、その上の階層にあるＵＳＢハブについては切り替え候補から外す（Ｓ２６０）。例えば、本事例の場合、切り替え除外デバイスリスト中には、“Vendor
0x090c Product 0x6000”がリスト登録されている。この場合、Ｓ２６０では、“Ｄｅｖ＃９”が切り替え除外デバイスとわかる。したがって、その上の階層にあるＵＳＢハブ８（Ｄｅｖ＃８）は切り替え候補から外される。
【００６４】
こうして、切り替え候補の選出、及び切り替え除外デバイスの除外を終えたら、ＣＰＵ１６は、切り替え候補に残ったＵＳＢハブとの通信方式をＵＳＢ１．１に切り替える（Ｓ２７０）。この事例では、上述の通り、Ｓ２５０でＵＳＢハブ５，８（Ｄｅｖ＃５，＃８
）が選出された後、Ｓ２６０でＵＳＢハブ８（Ｄｅｖ＃８）が除外されるので、ここではＵＳＢハブ５（Ｄｅｖ＃５）が通信方式の切り替え対象になる。
【００６５】
Ｓ２７０の詳細は、図６に示すような処理となる。すなわち、この処理を開始すると、ＣＰＵ１６は、まず、切り替え候補のハブリストをポートリストに変換する（Ｓ３１０）。具体的には、ファイル“usbt.txt”（図６参照。）に列挙されたデバイスは、ポート順に表示されている。また、ファイル“usbt.txt”において、ルートハブに直結されているデバイスは、文字列“Ｄｅｖ＃”が行中の５文字目から始まっている。したがって、この規則を利用すれば、ＵＳＢポートのポート番号の大きさは“Ｄｅｖ＃５”，“Ｄｅｖ＃８”，“Ｄｅｖ＃２”の順となっていることまでは、判別することができる。
【００６６】
ただし、これだけではポート番号が連番となっているのか欠番があるのかまでは判別できないので、ルートハブの詳細情報が記録されたファイル“s-1-1.txt”（図７参照。）の中から、“Hub Port Status:”以降の情報を参照する。この情報を見ると、ＰＣ１が備える全てのＵＳＢポート（Ｐｏｒｔ１〜Ｐｏｒｔ６）について、そのステータスを示す文字列が記述されている。具体的には、接続状態にある場合、文字列“0000.0503 highspeed power enable connect”が記述され、未接続状態にある場合、文字列“0000.0100 power”が記述されている。したがって、図７に示された事例であれば、Ｐｏｒｔ１，Ｐｏｒｔ２，Ｐｏｒｔ３が接続状態にあると判別でき、先に示した“Ｄｅｖ＃５”，“Ｄｅｖ＃８”，“Ｄｅｖ＃２”の順も考慮すれば、ＵＳＢハブ５，８，２の順でＰｏｒｔ１，Ｐｏｒｔ２，Ｐｏｒｔ３に接続されていることがわかる。よって、この事例の場合、“Ｄｅｖ＃５”が切り替え候補なので、このＵＳＢハブ５は、ＵＳＢポートのポート番号１（Ｐｏｒｔ１）と変換されて、ポートリストに登録されることになる。
【００６７】
続いて、ＣＰＵ１６は、Ｓ３１０で作成されたポートリストに登録されたポートについて、全て処理を終えたか否かを判断し（Ｓ３２０）、未処理のポートが残っていれば（Ｓ３２０：いいえ）、切り替え候補のポートをＥＨＣＩからＯＨＣＩ／ＵＨＣＩに切り替える（Ｓ３３０）。本事例の場合、Ｐｏｒｔ１に対応するＵＨＣＩコントローラ２２は、ＵＳＢ１．１対応のＵＳＢデバイスが接続されていれば、そのＵＳＢデバイスが有するプルアップ抵抗の接続位置に基づいて、そのＵＳＢデバイスがＦＳ（Full Speed）モード対応機器なのかＬＳ（Low Speed）モード対応機器なのかを認識する。
【００６８】
ただし、本事例において、ＵＳＢハブ５は、既にＰＣ１とのネゴシエーションを完了し、ＵＳＢ２．０対応機器として稼働している状態にあり、プルアップ抵抗がオフにされている。そのため、このままでは、ＵＨＣＩコントローラ２２側では、ＦＳモード対応のＵＳＢデバイス及びＬＳモード対応のＵＳＢデバイスのいずれとも認識することができない。
【００６９】
そこで、ＣＰＵ１６は、Ｓ３３０を実行した後に、ＯＨＣＩ／ＵＨＣＩ側からバスリセットを発行する（Ｓ３４０）。これにより、ＵＳＢハブ５は、初期状態に戻り、ＰＣ１に対してネゴシエーションを開始する。ただし、ＰＣ１では、ＵＨＣＩコントローラ２２がＵＳＢ１．１に準拠した手順でネゴシエーションを開始するので、ＵＳＢ１．１と互換性のある通信を実行可能なＵＳＢハブ５は、ＰＣ１をＵＳＢ１．１対応機器と認識し、自らもＵＳＢ１．１対応機器として作動する状態に至る。その結果、ＰＣ１及びＵＳＢハブ５は、双方ともＵＳＢ２．０対応機器としては機能せず、ＵＳＢ１．１のＦＳモード対応機器として機能する状態になる。
【００７０】
なお、Ｓ３４０を終えたら、Ｓ３２０へと戻る。その結果、ポートリストに未処理のポートが残されている間は、上述のＳ３２０〜Ｓ３４０が繰り返されることになる。本事例の場合は、Ｐｏｒｔ１だけが登録されているので、Ｐｏｒｔ１に対応する処理を終えた後
、Ｓ３２０へと戻るとポートリストは終了と判断され（Ｓ３２０：はい）、その結果、図５に示す処理を終了し、コール元にリターンする。これにより、図４へと戻って、Ｓ２７０を終了することになるので、更に図４に示す処理を終了し、コール元にリターンする。その結果、図３へと戻って、Ｓ１２０を終了することになる。以降、ＣＰＵ１６は、ＵＳＢデバイスを使用するアプリケーションを起動する（Ｓ１３０）。この時点では、ＵＳＢハブ５との通信方式がＵＳＢ２．０からＵＳＢ１．１に変更されているので、ＵＳＢデバイス６，７との通信を行う際には、ＵＨＣＩコントローラ２２が利用される状態となる。
【００７１】
したがって、上記処理の実行後は、ＥＨＣＩコントローラ２５とＵＨＣＩコントローラ２２に通信負荷が分散する。また、通信速度の低いＵＳＢデバイスをＵＨＣＩコントローラ２２に担当させることで、ＥＨＣＩコントローラ２５を効率良く使用することができるようになる。すなわち、上記処理の実行前は、ＥＨＣＩコントローラ２５がＰｏｒｔ１〜Ｐｏｒｔ３の全てについて対処していたので、ＥＨＣＩコントローラ２５には通信負荷がかかりやすくなっていたが、そのような通信負荷が軽減される、また、ＥＨＣＩコントローラ２５が、通信速度の低いＵＳＢデバイスに待たされるなどの問題もあったが、そのような問題が解消される。
【００７２】
また、このような負荷分散を実現するに当たっては、特殊なＵＳＢデバイス７を、対象とするＵＳＢハブ５に接続するという、極めて簡単な操作を行うだけでよい。したがって、利用者は、低速な通信を行えばよいＵＳＢデバイスを特定のＵＳＢハブに集めて接続し、そこにＵＳＢデバイス７を接続するだけで、ＥＨＣＩコントローラ２５にかかる負荷を軽減し、他の高速な通信を行うＵＳＢデバイスに対し、より多くのリソースを割り当てることができる。
【００７３】
さらに、本事例において、高速な通信が必要なＵＳＢデバイス９については、切り替え除外デバイスリストにあらかじめ登録し、特殊なＵＳＢデバイス１０がＵＳＢハブ８に接続された場合でも、ＵＳＢハブ８との通信方式を切り替えないようにしている。したがって、特殊なＵＳＢデバイス１０を接続する意義を十分に理解できていない利用者や、誤って特殊なＵＳＢデバイス１０を接続してしまったような場合に、ＵＳＢデバイス９に対してＵＳＢ２．０方式での通信ができなくなるのを適切に防ぐことができる。
【００７４】
［その他の事例］
以上、ＵＳＢホスト装置について、具体的な実例を示して説明したが、本発明は、上述の事例に限定されるものではなく、本発明の技術的思想を逸脱しない範囲内において、種々の形態で実施することができる。
【００７５】
例えば、上記事例において、特殊なＵＳＢデバイス７，１０は、ＵＳＢシリアルデバイスを利用していたが、既に説明した通り、ＵＳＢシリアルデバイスとしての機能を備えること自体は重要事項ではないので、他の機能を備えるＵＳＢデバイスを、本明細書でいう第一ＵＳＢデバイスとして利用してもよい。
【００７６】
また、上記事例においては、特殊なＵＳＢデバイス７，１０として、製造者名及び製品名を特殊な文字列に書き換えたものを利用していたが、これは市販の書き換え可能なデバイスを利用した事例にすぎず、製造者名及び製品名を書き換え可能か否かは任意である。例えば、同様の特殊な文字列がデバイス製造時に書き込まれて、かつ書き換え不能となっていたとしても、上記事例と同等な挙動を示すシステムを構成することができる。
【００７７】
また、上記事例においては、特殊なＵＳＢデバイス７，１０に記憶された製造者名及び製品名を双方とも特殊な文字列にしていたが、いずれか一方だけで判断する構成を採用してもかまわない。
【００７８】
また、上記事例では、特殊なＵＳＢデバイス７，１０と、切り替え除外デバイスリストに登録されたＵＳＢデバイス９とを併用して、切り替え条件が成立するか否かを判断していたが、これらはいずれか一方だけを判断対象としてもよい。例えば、特殊なＵＳＢデバイス７，１０が検出された場合には、切り替え除外デバイスリスト相当のものを参照することなく、通信方式の切り替えを実施するように構成してもよい。
【００７９】
あるいは、例えば、特殊なＵＳＢデバイス７，１０相当のものが存在するか否かを問わず、切り替え除外デバイスリスト相当のものを参照し、ＵＳＢハブに接続された全てのＵＳＢデバイスの中に除外対象が含まれていなければ通信方式を切り替え、一つでも除外対象が含まれていれば通信方式を切り替えない、という仕組みにしてもよい。この場合は、特殊なＵＳＢデバイス７，１０相当のものは不要となる。
【００８０】
さらに、上記事例においては、第一ホストコントローラ部として、三つのＵＨＣＩコントローラ２２，２３，２４を備え、第二ホストコントローラ部として、一つのＥＨＣＩコントローラ２５を備える例を示したが、これらの数はいずれも限定されない。また、ＵＨＣＩコントローラに代えて、ＯＨＣＩ（Open Host Controller Interface）コントローラを採用してもよい。
【符号の説明】
【００８１】
１…ＰＣ、２，５，８…ＵＳＢハブ、３，４，６，７，９，１０…ＵＳＢデバイス、１１…制御部、１２…表示部、１３…ＨＤＤ、１４…入力部、１６…ＣＰＵ、１７…ＭＣＨ、１８ＩＣＨ、１９…メモリ、２１…ＵＳＢコントローラ、２２，２３，２４…ＵＨＣＩコントローラ、２５…ＥＨＣＩコントローラ。
【図１】
2015049612.tif 000003
【図２】
2015049612.tif 000004
【図３】
2015049612.tif 000005
【図４】
2015049612.tif 000006
【図５】
2015049612.tif 000007
【図６】
2015049612.tif 000008
【図７】
2015049612.tif 000009
【図８】
2015049612.tif 000010