(57)【要約】【課題】ＵＳＢデバイス側に特殊な構成を追加しなくても、ＵＳＢデバイスとの間の通信モードをＨＳモードからＦＳモードに切り替え可能なＵＳＢホスト装置を提供すること。【解決手段】ＵＳＢホスト装置は、初期状態ではＵＳＢコントローラが備えるＥＨＣＩホストコントローラを利用して、ＵＳＢ２．０で規定されたＨＳモードでＵＳＢストレージデバイスとの通信を行う。一方、所定の切替条件が成立した際には、ＯＨＣＩホストコントローラよる制御への切り替えをＵＳＢコントローラに対して指令し（Ｓ３１０〜Ｓ３３０）、さらに、ＯＨＣＩホストコントローラを介してＵＳＢストレージデバイスに対してバスリセットを発行する（Ｓ３４０）。これにより、以降は、ＵＳＢコントローラが有するＯＨＣＩホストコントローラを利用して、ＵＳＢ１．１で規定されたＦＳモードでＵＳＢストレージデバイスとの通信を行う。【選択図】図５
2011118674.tif 000002
【特許請求の範囲】
【請求項１】
ＵＳＢ（Universal Serial Bus）規格に準拠した方式で、ＵＳＢデバイスと通信を行うＵＳＢホスト装置であって、
ＵＳＢ１．１に準拠した方式でＵＳＢデバイスとの通信を制御する第一ホストコントローラ部、及びＵＳＢ２．０に準拠した方式でＵＳＢデバイスとの通信を制御する第二ホストコントローラ部を有し、前記第二ホストコントローラ部による制御中に、前記第一ホストコントローラ部による制御への切り替えが指令されると、前記第二ホストコントローラ部による制御を中止するとともに前記第一ホストコントローラ部による制御を開始し、その制御開始後、ＵＳＢ１．１に準拠した方式でＵＳＢデバイスの認識に成功した場合には、前記第一ホストコントローラ部による制御を継続する一方、前記認識に成功しなかった場合には、前記第一ホストコントローラ部による制御を中止するとともに前記第二ホストコントローラ部による制御を行う状態に復帰するＵＳＢコントローラと、
ＵＳＢ２．０に対応したＵＳＢデバイスを対象デバイスとして、当該対象デバイスとの間で通信を行う際に、あらかじめ取り決められた切替条件が成立するまでは、前記ＵＳＢコントローラが有する前記第二ホストコントローラを利用して、ＵＳＢ２．０で規定されたＨＳ（High Speed）モードで、前記対象デバイスとの通信を行う一方、前記切替条件が成立した際には、前記第一ホストコントローラ部による制御への切り替えを前記ＵＳＢコントローラに対して指令し、さらに、当該指令を受けた前記ＵＳＢコントローラが前記第一ホストコントローラ部による制御を開始した際には、前記第一ホストコントローラ部を介して前記対象デバイスに対してバスリセットを発行することを、前記ＵＳＢコントローラに対して指令することにより、前記第一ホストコントローラ部には、前記対象デバイスをＵＳＢ１．１に対応したＵＳＢデバイスとして認識させ、以降は、前記ＵＳＢコントローラが有する前記第一ホストコントローラを利用して、ＵＳＢ１．１で規定されたＦＳ（Full Speed）モードで、前記対象デバイスとの通信を行う制御手段と
を備えたことを特徴とするＵＳＢホスト装置。
【請求項２】
前記第一ホストコントローラ部は、ＯＨＣＩ（Open Host Controller Interface）又はＵＨＣＩ（Universal Host Controller Interface）に準拠した方式でＵＳＢデバイスとの通信を制御し、
前記第二ホストコントローラ部は、ＥＨＣＩ（Enhanced Host Controller Interface）に準拠した方式でＵＳＢデバイスとの通信を制御する
ことを特徴とする請求項１に記載のＵＳＢホスト装置。
【請求項３】
前記対象デバイスは、ＵＳＢストレージデバイス１Ｂデバイスであり、
しかも、前記ＵＳＢホスト装置は、前記対象デバイス上にあるファイルシステムをマウントポイントにマウントすると、前記マウントポイント下にあるファイル群にアクセス可能となるように構成されており、
前記制御手段は、ＵＳＢ２．０に対応したＵＳＢデバイスとして認識されている前記対象デバイスについて、当該対象デバイス上にあるファイルシステムをマウントポイントからアンマウントし、その後、前記ＨＳモードから前記ＦＳモードへの切替制御を行い、この切替制御に伴ってＵＳＢ１．１に対応したＵＳＢデバイスとして認識される前記対象デバイスについて、当該対象デバイス上にあるファイルシステムを、アンマウント時のマウントポイントと同じマウントポイントに再マウントする
ことを特徴とする請求項１又は請求項２に記載のＵＳＢホスト装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＵＳＢ（Universal Serial Bus）規格に準拠した方式で、ＵＳＢデバイスとの通信を行うＵＳＢホスト装置に関する。
【背景技術】
【０００２】
従来、初期状態ではＵＳＢ２．０に準拠した方式でＵＳＢホスト装置と通信を行う一方、その後、ＵＳＢ１．１に準拠した方式でＵＳＢホスト装置と通信を行う状態に切り替えることも可能なＵＳＢデバイスが提案されている（例えば、特許文献１参照。）。
【０００３】
この特許文献１に記載された技術の場合、ＵＳＢデバイスには、ＵＳＢデバイス側の内部処理で利用されるフラグが設けられ、ＵＳＢデバイスがＵＳＢホスト装置から所定の指令を受けた場合、ＵＳＢデバイス側での内部処理によってフラグがＯＮとなる。また、ＵＳＢデバイスがＵＳＢホスト装置とのネゴシエーションを行う際、フラグがＯＮとなっていたら、ＵＳＢデバイスはＵＳＢホスト装置に対しＵＳＢ１．１対応のデバイスである旨の応答を返す（特許文献１：［００２９］−［００３７］参照。）。
【０００４】
したがって、このような構成を備えるＵＳＢデバイスを利用すれば、ＵＳＢホスト装置は、所望のタイミングで上記所定の指令をＵＳＢデバイスに対して発行することにより、ＵＳＢデバイスのフラグをＯＮにすることができる。そして、その後、バスリセットを発生させてＵＳＢデバイスとのネゴシエーションを行うことにより、ＵＳＢデバイスとの通信方式を、ＵＳＢ２．０に準拠した方式からＵＳＢ１．１に準拠した方式へ切り替えることができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−６２７４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、上記特許文献１に記載の技術は、ＵＳＢホスト装置側から送られてくる所定の指令を受けた場合にフラグをＯＮにする仕組みや、ＵＳＢホスト装置へ返す応答をフラグに応じて切り替える仕組みなどを、ＵＳＢデバイス側に実装することが必須になる。
【０００７】
そのため、上記のような仕組みが実装されていない一般的なＵＳＢデバイスを利用することが前提となる場合、上記特許文献１に記載の技術を採用することはできない、という問題があった。
【０００８】
また、上記のような仕組みが実装された特殊なＵＳＢデバイスを利用すれば、所期の効果は得られるものの、そのような特殊なＵＳＢデバイスを製造する場合、一般的なＵＳＢデバイスほど量産効果によるコストダウンを期待することができない。そのため、そのような特殊なＵＳＢデバイスは、どうしても割高になりがちであり、ひいてはＵＳＢホスト装置とＵＳＢデバイスとで構成されるシステム全体も高価なものになってしまう、という問題もあった。
【０００９】
本発明は、上記問題を解決するためになされたものであり、その目的は、ＵＳＢデバイス側に特殊な構成を追加しなくても、ＵＳＢデバイスとの間の通信方式を任意のタイミングでＵＳＢ２．０に準拠した方式からＵＳＢ１．１に準拠した方式に切り替え可能なＵＳＢホスト装置を提供することにある。
【課題を解決するための手段】
【００１０】
以下、本発明において採用した構成について説明する。
請求項１に記載のＵＳＢホスト装置は、ＵＳＢ（Universal Serial Bus）規格に準拠した方式で、ＵＳＢデバイスと通信を行うＵＳＢホスト装置であって、ＵＳＢ１．１に準拠した方式でＵＳＢデバイスとの通信を制御する第一ホストコントローラ部、及びＵＳＢ２．０に準拠した方式でＵＳＢデバイスとの通信を制御する第二ホストコントローラ部を有し、前記第二ホストコントローラ部による制御中に、前記第一ホストコントローラ部による制御への切り替えが指令されると、前記第二ホストコントローラ部による制御を中止するとともに前記第一ホストコントローラ部による制御を開始し、その制御開始後、ＵＳＢ１．１に準拠した方式でＵＳＢデバイスの認識に成功した場合には、前記第一ホストコントローラ部による制御を継続する一方、前記認識に成功しなかった場合には、前記第一ホストコントローラ部による制御を中止するとともに前記第二ホストコントローラ部による制御を行う状態に復帰するＵＳＢコントローラと、ＵＳＢ２．０に対応したＵＳＢデバイスを対象デバイスとして、当該対象デバイスとの間で通信を行う際に、あらかじめ取り決められた切替条件が成立するまでは、前記ＵＳＢコントローラが有する前記第二ホストコントローラを利用して、ＵＳＢ２．０で規定されたＨＳ（High Speed）モードで、前記対象デバイスとの通信を行う一方、前記切替条件が成立した際には、前記第一ホストコントローラ部による制御への切り替えを前記ＵＳＢコントローラに対して指令し、さらに、当該指令を受けた前記ＵＳＢコントローラが前記第一ホストコントローラ部による制御を開始した際には、前記第一ホストコントローラ部を介して前記対象デバイスに対してバスリセットを発行することを、前記ＵＳＢコントローラに対して指令することにより、前記第一ホストコントローラ部には、前記対象デバイスをＵＳＢ１．１に対応したＵＳＢデバイスとして認識させ、以降は、前記ＵＳＢコントローラが有する前記第一ホストコントローラを利用して、ＵＳＢ１．１で規定されたＦＳ（Full Speed）モードで、前記対象デバイスとの通信を行う制御手段とを備えたことを特徴とする。
【００１１】
このＵＳＢホスト装置において、制御手段は、あらかじめ取り決められた切替条件が成立するまでは、ＵＳＢコントローラが有する第二ホストコントローラを利用して、ＵＳＢ２．０で規定されたＨＳモードで、対象デバイスとの通信を行う。このような通信を行う状態にある場合、ＵＳＢホスト装置と対象デバイスは、ＵＳＢ２．０に対応した一般的なＵＳＢ機器と同等な挙動を示す状態になる。
【００１２】
一方、あらかじめ取り決められた切替条件が成立すると、制御手段は、第一ホストコントローラ部による制御への切り替えをＵＳＢコントローラに対して指令する。ここで、切替条件に関しては、どのような取り決めになっていてもよく、例えば、複数の処理ステップからなる一連の処理を順次実行してゆく中で、所定の処理ステップが完了したことをもって切替条件が成立する、といったものであればよい。
【００１３】
あるいは、発生タイミングが動的に変化する何らかのイベントが発生したことをもって切替条件が成立する、といったものであってもよい。より具体的な例を挙げれば、利用者が所定の操作を行ったことを検知したら切替条件が成立する、ＵＳＢホスト装置で稼働するタスクの数が所定以上となったら切替条件が成立する、ＵＳＢホスト装置で所定の機能が作動したら切替条件が成立する、といったものであってもよい。また、これらのイベントが発生した後、所定の時間が経過したら切替条件が成立する、といったものであってもよい。もちろん、ここで例示した事象以外の事象を対象に切替条件が成立するものであってもよい。
【００１４】
いずれにしても、このような切替条件が成立したときに、制御手段は、第一ホストコントローラ部による制御への切り替えをＵＳＢコントローラに対して指令することとなり、この指令を受けたＵＳＢコントローラは、第二ホストコントローラ部による制御を中止するとともに第一ホストコントローラ部による制御を開始する。
【００１５】
ただし、ＵＳＢコントローラが第一ホストコントローラ部による制御を開始したとき、対象デバイスは、すでにＵＳＢ２．０に対応したデバイスとして機能している状態にある。そのため、ＵＳＢコントローラが、単に第一ホストコントローラ部による制御を開始しても、それだけでは対象デバイスをＵＳＢ１．１に対応したデバイスとして認識することができず、その場合、ＵＳＢコントローラは、第一ホストコントローラ部による制御を中止するとともに第二ホストコントローラ部による制御を行う状態に復帰してしまう。
【００１６】
この点について、より詳しく説明すると、一般に、ＵＳＢ１．１に対応したＵＳＢデバイスの場合、その仕様上、ＵＳＢデバイス側に設けられたプルアップ抵抗の接続位置に基づいて、ＦＳ（Full Speed）モードで動作可能なデバイスか、ＬＳ（Low Speed）モードでしか動作しないデバイスかを判定可能となっている。
【００１７】
また、ＵＳＢ２．０に対応したＵＳＢデバイスの場合も、ＵＳＢ１．１との互換性を確保するため、初期状態ではプルアップ抵抗の接続位置に基づく判断が可能となっており、ＵＳＢホスト装置からは、ＦＳ（Full Speed）モードで動作可能なデバイスとして認識される。
【００１８】
しかし、ＵＳＢホスト装置及びＵＳＢデバイスの双方がＵＳＢ２．０に対応している場合、プルアップ抵抗の接続位置に基づいて、ＦＳ（Full Speed）モードで動作可能なＵＳＢデバイスであるとＵＳＢホスト装置から認識された後、さらに双方が情報交換を行うことで、ＵＳＢ２．０で規定されたＨＳ（High Speed）モードの利用が可能かどうかを確認する。そして、ＨＳモードの利用が可能な場合は、上述したプルアップ抵抗をオフにした上で、ＨＳモードでの通信を行う状態に移行する。
【００１９】
ＵＳＢ２．０が、以上のような仕様になっている都合上、対象デバイスがすでにＵＳＢ２．０に対応したデバイスとして機能している状態にある場合、先に説明した通り、単にＵＳＢコントローラが第一ホストコントローラ部による制御を開始しても、ＵＳＢコントローラとしては、プルアップ抵抗の接続位置によるモード判定ができない。
【００２０】
すなわち、単にＵＳＢコントローラが第一ホストコントローラ部による制御を開始することで、ＵＳＢホスト装置だけが単独でＵＳＢ１．１対応の機器に切り替わっても、ＵＳＢホスト装置側としては、ＵＳＢ２．０対応の作動状態になっている対象デバイスを、ＵＳＢ１．１に対応したデバイスとして認識することはできないのである。
【００２１】
そこで、本発明においては、ＵＳＢコントローラが、単に第一ホストコントローラ部による制御を開始するだけではなく、ＵＳＢコントローラが、第一ホストコントローラ部による制御を開始した後、さらに、制御手段からの指令に基づき、第一ホストコントローラ部を介して対象デバイスに対してバスリセットを発行するように構成した。
【００２２】
そのため、対象デバイスは、バスリセットイベントの発生に伴って初期状態に戻り、第一ホストコントローラ部による制御を開始したＵＳＢコントローラとの間で、ネゴシエーションを開始する。その結果、第一ホストコントローラ部は、対象デバイスをＵＳＢ１．１に対応したＵＳＢデバイスと認識し、以降は、ＵＳＢコントローラが有する第一ホストコントローラを利用して、ＦＳモードで対象デバイスとの通信を行う状態に切り替わることになる。
【００２３】
つまり、ＵＳＢコントローラが第一ホストコントローラ部による制御を開始することで、ＵＳＢホスト装置がＵＳＢ１．１対応の機器に切り替わるとともに、ＵＳＢホスト装置側が対象デバイスの認識に失敗する前にバスリセットを発行することで、ＵＳＢ２．０対応の作動状態になっている対象デバイスを初期状態に戻すのである。これにより、ＵＳＢホスト装置及び対象デバイスは、双方がＵＳＢ１．１に準拠した手順でネゴシエーションを行うことになり、最終的にＦＳモードでの通信が可能となるのである。
【００２４】
以上説明したように、本発明のＵＳＢホスト装置によれば、上記のようなＵＳＢデバイスの仕様上の特性を利用することにより、ＵＳＢホスト装置側での制御にて、対象デバイスとの間の通信モードを、ＨＳモードからＦＳモードに切り替えることができる。
【００２５】
したがって、何らかの事情により、ＵＳＢホスト装置側の都合で、対象デバイスとの間の通信モードを、ＨＳモードからＦＳモードに切り替えたい状況になる場合、そのような状況になったことを切替条件としておくことで、所期のモード切り替えを実現することができる。
【００２６】
しかも、そのようなモード切り替えを実現するに当たって、対象デバイス側には、何ら特殊な構成を追加する必要がなく、例えば、市販されているごく一般的なＵＳＢ２．０対応デバイスであっても、そのようなデバイスを対象に、ＨＳモードからＦＳモードへの切り替え制御を実現できる。
【００２７】
したがって、特殊な仕組みを持ったＵＳＢデバイスを利用する場合に比べ、より安価なＵＳＢデバイスでも利用可能となるので、ＨＳモードからＦＳモードへの切り替え制御を実現可能なシステムを、より低コストで構築することができるようになる。
【００２８】
なお、以上説明したようなＵＳＢホスト装置を構成するに当たって、ＵＳＢコントローラが備える第一ホストコントローラ部及び第二ホストコントローラ部の具体的な仕様については、ＵＳＢ規格に準拠したものを任意に採用できるが、すでに普及しているものと同等な構成とするのであれば、例えば、請求項２に記載したように、前記第一ホストコントローラ部は、ＯＨＣＩ（Open Host Controller Interface）又はＵＨＣＩ（Universal Host Controller Interface）に準拠した方式でＵＳＢデバイスとの通信を制御し、前記第二ホストコントローラ部は、ＥＨＣＩ（Enhanced Host Controller Interface）に準拠した方式でＵＳＢデバイスとの通信を制御するものになっていると好ましい。
【００２９】
また、このような通信速度の切り替えを実現可能なＵＳＢデバイスについて、どのような形態で利用するのかについても、その具体的な構成は、任意に様々なものを考え得るが、一例を挙げれば、請求項３に記載したように、前記対象デバイスは、ＵＳＢストレージデバイスであり、しかも、前記ＵＳＢホスト装置は、前記対象デバイス上にあるファイルシステムをマウントポイントにマウントすると、前記マウントポイント下にあるファイル群にアクセス可能となるように構成されており、前記制御手段は、ＵＳＢ２．０に対応したＵＳＢデバイスとして認識されている前記対象デバイスについて、当該対象デバイス上にあるファイルシステムをマウントポイントからアンマウントし、その後、前記ＨＳモードから前記ＦＳモードへの切替制御を行い、この切替制御に伴ってＵＳＢ１．１に対応したＵＳＢデバイスとして認識される前記対象デバイスについて、当該対象デバイス上にあるファイルシステムを、アンマウント時のマウントポイントと同じマウントポイントに再マウントする、といった構成を挙げることができる。
【００３０】
このＵＳＢホスト装置は、対象デバイス上にあるファイルシステムをマウントポイントにマウントすると、マウントポイント下にあるファイル群にアクセス可能となるように構成される。このようなＵＳＢホスト装置の代表的な具体例としては、ＵＮＩＸ（登録商標）やＵｎｉｘ系と呼ばれている各種ＯＳ（例えば、Ｌｉｎｕｘ（登録商標）、ＢＳＤ系ＯＳなど）を搭載したホスト装置を挙げることができる。
【００３１】
このように構成されるＵＳＢホスト装置において、制御手段は、切替制御前の段階では、対象デバイスをＵＳＢ２．０に対応したＵＳＢデバイスとして認識し、対象デバイスとの間でＨＳモードにて通信を行う。そのため、この状態では、対象デバイスに対し、より高速なアクセスを行うことができる。
【００３２】
一方、制御手段は、切替制御後の段階では、対象デバイスをＵＳＢ１．１に対応したＵＳＢデバイスとして認識し、対象デバイスとの間でＦＳモードにて通信を行う。そのため、この状態では、対象デバイスに対するアクセス速度は低下するものの、制御手段にかかる負荷は軽減され、その分だけ制御手段の余力が増大するので、制御手段は、その余力を他の処理に振り分けることができる。
【００３３】
したがって、例えば、起動直後に実行するタスクは少ないものの、起動後の時間経過に伴って徐々に並行して実行するタスクが増えてゆくようなＵＳＢホスト装置においては、起動直後には、対象デバイスに対する高速アクセスを行って装置の起動に要する時間を短縮する一方、タスクが増えて制御装置にかかる負荷が増大してきた場合には、対象デバイスに対するアクセス速度を低下させて、制御手段にかかる負荷を軽減する、といった対処が可能となる。
【００３４】
このような対処を行えば、制御手段の処理能力が比較的低い場合でも、その処理能力がＵＳＢ２．０対応の対象デバイスに過剰に振り分けられてしまうのを防止でき、ＵＳＢホスト装置の処理能力が飽和してしまうのを回避することができる。
【００３５】
しかも、このような切替制御を行うに当たって、制御手段は、対象デバイス上にあるファイルシステムをマウントポイントからアンマウントし、その上で、ＨＳモードからＦＳモードへの切替制御を行う。そして、この切替制御に伴ってＵＳＢ１．１に対応したＵＳＢデバイスとして認識される対象デバイスについて、当該対象デバイス上にあるファイルシステムを、アンマウント時のマウントポイントと同じマウントポイントに再マウントする。
【００３６】
このような制御を行えば、ＨＳモードからＦＳモードへの切替制御を行っている最中に、マウントポイント下にあるファイル群にアクセスされるのを確実に防止できるので、ファイル破損等の問題を招くことがない。
【００３７】
しかも、再マウント後には、アンマウント前と同じパス名で、マウントポイント下にあるファイル群にアクセスすることができる。したがって、それらのファイル群を利用するタスク（例えば、アプリケーション）側では、ＨＳモードからＦＳモードへの切替制御の前後で、そのような切替制御がなされることを意識することなく、ファイルアクセスを行うことができる。
【００３８】
このため、例えば、ＵＳＢホスト装置としての役割をも有するカラオケ装置（以下、カラオケコマンダ）においては、カラオケ利用者がカラオケ演奏を開始するときに、カラオケコマンダの起動からブートローダによって、ＵＳＢデバイスに記憶された演奏や背景映像再生タスク・プログラムが曲データなどと供に読み出される時間はＵＳＢ２．０によって短縮される。そして、順次タスク・プログラムの実行が開始され、カラオケ演奏、及び背景映像再生が行われつつ、次に再生する曲データをＵＳＢデバイスから読み出すときに、リモコン操作などの新たなイベントが発生しても、カラオケ演奏が妨げられることもないし、ＵＳＢデバイスからの曲データも破損されずに読み出しできる。
【図面の簡単な説明】
【００３９】
【図１】ＵＳＢホスト装置及びＵＳＢストレージデバイスを内蔵するカラオケコマンダを示すブロック図。
【図２】ＵＳＢコントローラを示すブロック図。
【図３】カラオケコマンダ起動後に実行される処理のフローチャート。
【図４】ＵＳＢストレージのスピード変更処理のフローチャート。
【図５】カーネルサブルーチンのフローチャート。
【発明を実施するための形態】
【００４０】
次に、本発明の実施形態について一例を挙げて説明する。
［カラオケコマンダの内部構造］
図１に示すカラオケコマンダ１は、本発明の一実施形態に相当するＵＳＢホスト装置１Ａと、ＵＳＢストレージデバイス１Ｂとを備えてなる装置である。
【００４１】
ＵＳＢホスト装置１Ａは、周知のＣＰＵ３Ａ、ＲＯＭ３Ｂ、ＲＡＭ３Ｃなどを備える制御部３（本発明でいう制御手段の一例に相当。）、ハードディスク装置（ＨＤＤ）５、及びＵＳＢインターフェース７などを備えている。そして、上述のＵＳＢストレージデバイス１Ｂは、ＵＳＢインターフェース７を介してＵＳＢホスト装置１Ａに接続されている。すなわち、このＵＳＢホスト装置１Ａには、ＵＳＢストレージデバイス１Ｂ及びＨＤＤ５、これら２種類のストレージデバイスが内蔵されている。
【００４２】
これらのうち、ＨＤＤ５は、シリアルＡＴＡ方式のインターフェースを介して接続され、カラオケコマンダ１の起動時（すなわち、ＵＳＢホスト装置１Ａの起動時）には、通常、ＨＤＤ５に格納されたプログラムが読み込まれる仕組みになっている。
【００４３】
また、何らかの原因で（例えば、ＨＤＤ５の故障により）、ＨＤＤ５からプログラムを読み込むことができない状況に陥った場合には、代替手段として、ＵＳＢストレージデバイス１Ｂに格納されたプログラムが読み込まれる仕組みになっている。すなわち、ＨＤＤ５は通常の起動時に利用され、ＵＳＢストレージデバイス１Ｂは通常の起動ができない緊急時に利用される。
【００４４】
ＵＳＢインターフェース７は、制御部３とＵＳＢデバイス（例えば、ＵＳＢストレージデバイス１Ｂ）との間に介在して、両者間の通信を仲介する装置で、図２に示すようなＵＳＢコントローラ１０を備えている。
【００４５】
このＵＳＢコントローラ１０は、ＰＣＩバスインターフェース１１、アービター１２、ＯＨＣＩホストコントローラ１３Ａ，１３Ｂ、ＥＨＣＩホストコントローラ１４、ルートハブ１５、ＵＳＢ物理層１６などを備える。なお、本実施形態においては、これらの構成が１チップ上に集積された市販品（製品名：μＰＤ７２０１０１、ＮＥＣエレクトロニクス株式会社製）を使用している。
【００４６】
これらのうち、ＯＨＣＩホストコントローラ１３Ａ，１３Ｂは、ＵＳＢ１．１で規定されたＦＳモード（通信速度：１２Ｍｂｐｓ）及びＬＳモード（通信速度：１．５Ｍｂｐｓ）での通信を制御するコントローラである。また、ＥＨＣＩホストコントローラ１４は、ＵＳＢ２．０で規定されたＨＳモード（通信速度：４８０Ｍｂｐｓ）での通信を制御するコントローラである。
【００４７】
ルートハブ１５は、ＵＳＢ物理層１６が有する５つのＵＳＢポートと、上述のＯＨＣＩホストコントローラ１３Ａ，１３ＢないしＥＨＣＩホストコントローラ１４との接続を制御している。このルートハブ１５によって、上記５つのＵＳＢポートは、それぞれがＯＨＣＩ側又はＥＨＣＩ側のいずれかに選択的に接続される。また、上述のＯＨＣＩホストコントローラ１３Ａ，１３ＢないしＥＨＣＩホストコントローラ１４とＰＣＩバスインターフェース１１との接続は、アービター１２によって調停される。
【００４８】
なお、ＵＳＢホスト装置１Ａには、上記のようなハードウェア以外に、ＬＡＮ（Local Area Network）に接続するためのネットワークインターフェースや、楽曲演奏を実行するための音源ボードなども設けられている。ただし、これらの構成自体は、この種のカラオケコマンダにおいて周知の構成であり、また、本発明の要部を説明する上で必須の構成でもないので、図示を省略してある。
【００４９】
また、以上のようなハードウェアを制御するため、ＵＳＢホスト装置１Ａには、ＯＳ（Operating System）として、Ｌｉｎｕｘ（登録商標）が搭載されている。
［ＵＳＢストレージデバイスをブートデバイスとする起動処理］
次に、ＵＳＢストレージデバイス１Ｂをブートデバイスとする起動処理について、図３〜図５に基づいて説明する。すなわち、以下に説明する処理は、カラオケコマンダ１において電源ＯＮとされた際、何らかの原因でＨＤＤ５をブートデバイスとして利用できない場合に実行される処理である。
【００５０】
図３に示す処理を開始すると、ＵＳＢホスト装置１Ａでは、まず、ＲＯＭ３Ｂ上からＯＳのカーネルが起動する（Ｓ１１０）。これにより、ＯＳが持つ機能の一部が作動する状態になって、ＲＡＭ３Ｃ（メインメモリ）上にＲＡＭディスクを確保する（Ｓ１２０）。
【００５１】
続いて、ＵＳＢホスト装置１Ａは、ＵＳＢストレージデバイス１Ｂのマウントを行う（Ｓ１３０）。ＵＳＢホスト装置１ＡのＯＳがＬｉｎｕｘ（登録商標）の場合、ＵＳＢストレージデバイス１Ｂは、ＳＣＳＩドライブとして認識され、そのドライブ名として“ｓｄａ”，“ｓｄｂ”，“ｓｄｃ”，…といったドライブ名が割り当てられる。以下、ここではドライブ名“ｓｄａ”が割り当てられたものとして説明を続ける。
【００５２】
ドライブ名“ｓｄａ”が割り当てられた場合、ＵＳＢストレージデバイス１Ｂ上にあるファイルシステム名は“ｓｄａ１”，“ｓｄａ２”，“ｓｄａ３”，…となる。そのため、ＵＳＢストレージデバイス１Ｂ上に存在するファイルシステムが、設計通りに用意されている場合、ドライブ名“ｓｄａ”に基づいてファイルシステム名“ｓｄａ１”，“ｓｄａ２”，“ｓｄａ３”，…も特定できる。以下、ここでは、ＵＳＢストレージデバイス１Ｂ上には、一つのファイルシステム“ｓｄａ１”が存在するものとして説明を続ける。
【００５３】
Ｓ１３０では、ＵＳＢストレージデバイス１Ｂ上にあるファイルシステム“ｓｄａ１”をマウントポイントにマウントする。どのようなマウントポイントにマウントするのかは、あらかじめ取り決められているものであり、ここではマウントポイント“／ｍａｉｎ”にマウントするものとして説明を続ける。
【００５４】
以上のようなＳ１３０の処理が実行される結果、以降、ＵＳＢホスト装置１Ａでは、パス名“／ｍａｉｎ／…”を使ってファイルシステム“ｓｄａ１”上のファイル群にアクセス可能な状態となる。そこで、この状態となったら、ＵＳＢホスト装置１Ａは、パス名を使ってＵＳＢストレージデバイス１Ｂ上のアーカイブファイルにアクセスし、そのアーカイブファイルからＲＡＭディスク上にファイルを展開する（Ｓ１４０）。
【００５５】
このＳ１４０を実行する時点において、ＵＳＢホスト装置１ＡとＵＳＢストレージデバイス１Ｂは、ＨＳモードで通信を行う状態にある。すなわち、初期状態において、ＵＳＢホスト装置１ＡとＵＳＢストレージデバイス１Ｂは、互いに情報交換を行うことでＵＳＢ２．０に対応した機器であることを認識し、それに伴いＨＳモードでの通信を行う状態になっている。そのため、Ｓ１４０において、アーカイブファイルにアクセスする処理は、ＨＳモードでの通信によって高速に処理される。
【００５６】
このようなＳ１４０の処理を終えたら、続いて、ＵＳＢホスト装置１Ａは、ＵＳＢストレージのスピード変更処理を実行する（Ｓ１５０）。このＳ１５０の処理は、詳しくは図４に示すような処理となる。
【００５７】
図４に示す処理を開始すると、ＵＳＢホスト装置１Ａは、まず、ＵＳＢストレージデバイス１Ｂ上にオープン中のファイルがあるか否かを判断する（Ｓ２１０）。ここで、ＵＳＢストレージデバイス１Ｂ上にオープン中のファイルがある場合は（Ｓ２１０：ある）、ＵＳＢストレージデバイス１Ｂ上の全てのファイルをクローズして（Ｓ２２０）、Ｓ２３０へと進む。また、ＵＳＢストレージデバイス１Ｂ上にオープン中のファイルがない場合は（Ｓ２１０：ない）、Ｓ２２０を実行することなく、Ｓ２３０へと進む。
【００５８】
続いて、Ｓ２３０では、ＵＳＢストレージデバイス１Ｂがマウント中か否かを判断する（Ｓ２３０）。ここで、ＵＳＢストレージデバイス１Ｂがマウント中であれば（Ｓ２３０：はい）、ＵＳＢストレージデバイス１Ｂ（ＵＳＢ２．０の仮想ＳＣＳＩドライブ）をアンマウントする（Ｓ２４０）。また、ＵＳＢストレージデバイス１Ｂがマウント中でなければ（Ｓ２３０：いいえ）、Ｓ２４０を実行することなく、Ｓ２５０へと進む。
【００５９】
Ｓ２４０を実行した場合、ＵＳＢストレージデバイス１Ｂ上にあるファイルシステム“ｓｄａ１”は、上述のマウントポイント“／ｍａｉｎ”からアンマウントされ、以降、パス名“／ｍａｉｎ／…”を使ってファイルシステム“ｓｄａ１”上のファイル群にアクセスすることはできない状態となる。
【００６０】
続いて、ＵＳＢホスト装置１Ａは、所定のカーネルサブルーチンをコールする（Ｓ２５０）。このＳ２５０の処理は、詳しくは図５に示すような処理となる。
図５に示す処理を開始すると、ＵＳＢホスト装置１Ａは、まず、ＥＨＣＩのポートステータスレジスタをリードし、変数ｅｈｃｉ＿ｐｓｔａｔ＿ｖａｌに格納する（Ｓ３１０）。そして、変数ｅｈｃｉ＿ｐｓｔａｔ＿ｖａｌのＰＯＲＴ＿ＯＷＮＥＲビット（０ｘ００００２０００の位置）を１にして（Ｓ３２０）、変数ｅｈｃｉ＿ｐｓｔａｔ＿ｖａｌの値をＥＨＣＩのポートステータスレジスタにライトする（Ｓ３３０）。これらＳ３１０〜Ｓ３３０の処理の結果、ポートオーナーがＥＨＣＩからＯＨＣＩに切り替わる。
【００６１】
すなわち、ＵＳＢコントローラ１０において、ルートハブ１５によって形成される通信経路が切り替わり、ＵＳＢストレージデバイス１Ｂの接続されていたＵＳＢポートは、ＥＨＣＩホストコントローラ１４に接続されていた状態から、ＯＨＣＩホストコントローラ１３Ａ（又は１３Ｂ）に接続された状態に切り替わる。
【００６２】
このような切替が行われた際、ＯＨＣＩホストコントローラ１３Ａ（又は１３Ｂ）は、ＵＳＢ１．１対応のＵＳＢデバイスが接続されていれば、そのＵＳＢデバイスが有するプルアップ抵抗の接続位置に基づいて、そのＵＳＢデバイスがＦＳモード対応機器なのかＬＳモード対応機器なのかを認識する。
【００６３】
しかし、本実施形態の場合、ＵＳＢストレージデバイス１Ｂは、すでにＵＳＢホスト装置１Ａとのネゴシエーションが完了して、ＵＳＢ２．０対応機器として稼働している状態にあり、ＵＳＢストレージデバイス１Ｂ側では、プルアップ抵抗がＯＦＦにされている。
【００６４】
そのため、このままでは、ＯＨＣＩホストコントローラ１３Ａ（又は１３Ｂ）としては、ＦＳモード対応のＵＳＢデバイス及びＬＳモード対応のＵＳＢデバイスのいずれも認識することができない。
【００６５】
また、ＵＳＢコントローラ１０の仕様上、ＯＨＣＩホストコントローラ１３Ａ（又は１３Ｂ）側でＵＳＢデバイスを認識できない場合には、ＵＳＢストレージデバイス１Ｂの接続されていたＵＳＢポートは、ＥＨＣＩホストコントローラ１４に接続された状態へと復帰してしまう。
【００６６】
そこで、こうした問題に対処するため、ＵＳＢホスト装置１Ａは、Ｓ３３０を実行した後、ＥＨＣＩホストコントローラ１４に接続された状態へ復帰してしまうまでの期間内に、定数ＲＨ＿ＰＳ＿ＰＲＳ（０ｘ００００００１０）をＯＨＣＩのポートステータスレジスタにライトして（Ｓ３４０）、図５に示した処理を終了する。
【００６７】
このＳ３４０により、ＵＳＢホスト装置１ＡからＵＳＢストレージデバイス１Ｂに対し、バスリセットが発行されることになり、これに伴い、ＵＳＢストレージデバイス１Ｂは、初期状態に戻る。そのため、ＵＳＢホスト装置１ＡとＵＳＢストレージデバイス１Ｂは、ＵＳＢ２．０に準拠した手順でネゴシエーションを開始する。
【００６８】
具体的には、ＵＳＢホスト装置１ＡとＵＳＢストレージデバイス１Ｂが、ＵＳＢ２．０に準拠した手順でネゴシエーションを開始すると、まず、ＵＳＢストレージデバイス１Ｂは、ＵＳＢ１．１に準拠したＦＳモード対応機器として振る舞う。
【００６９】
その際、ＵＳＢストレージデバイス１Ｂ側では、プルアップ抵抗がＦＳモード対応の接続位置（信号線Ｄ＋側）に接続され、これにより、ＵＳＢストレージデバイス１ＢがＦＳモード対応機器であることを、ＵＳＢホスト装置１Ａ側へと伝達する。
【００７０】
一方、ＵＳＢホスト装置１Ａ側では、ＵＳＢ１．１に準拠して通信を制御するＯＨＣＩホストコントローラ１３Ａ（又は１３Ｂ）が機能する状態に切り替わっている。そのため、上記のような状況になれば、ＵＳＢストレージデバイス１Ｂを、ＵＳＢ１．１に準拠したＦＳモード対応機器として認識する。
【００７１】
その結果、ＵＳＢホスト装置１ＡとＵＳＢストレージデバイス１Ｂは、ＵＳＢ１．１に準拠した手順でネゴシエーションを進めることになる。つまり、ＵＳＢホスト装置１Ａ及びＵＳＢストレージデバイス１Ｂは、双方ともＵＳＢ２．０対応機器としては機能せず、ＵＳＢ１．１のＦＳモード対応機器として機能する状態になる。
【００７２】
そして、ＵＳＢホスト装置１Ａが、ＵＳＢストレージデバイス１ＢのことをＵＳＢ１．１のＦＳモード対応機器として認識すると、ＵＳＢストレージデバイス１Ｂに対して新たなドライブ名を割り当てる。すなわち、ここでは、ＵＳＢストレージデバイス１Ｂは、すでに認識していたＳＣＳＩドライブ“ｓｄａ”とは、別のＳＣＳＩドライブとして認識され、“ｓｄａ”とは別の新たなドライブ名“ｓｄｂ”，“ｓｄｃ”，…などが割り当てられる。以下、ここではドライブ名“ｓｄｂ”が割り当てられたものとして説明を続ける。
【００７３】
ちなみに、この時点で、ＵＳＢホスト装置１Ａは、ＳＣＳＩドライブ“ｓｄａ”を認識している状態が継続しているものの、実際にはＳＣＳＩドライブ“ｓｄａ”にはアクセスできない状態になる。ただし、この時点では、Ｓ２４０の処理により、ＳＣＳＩドライブ“ｓｄａ”上のファイルシステムはアンマウントされているので、通常は、ＳＣＳＩドライブ“ｓｄａ”に対するアクセスが発生することはなく、アクセス不能となったＳＣＳＩドライブ“ｓｄａ”が残っていることに起因して、予期しないエラーが発生することはない。
【００７４】
さて、以上のようにして図５に示す処理を終了すると、図４のＳ２５０を終えたことになり、続いて、ＵＳＢホスト装置１Ａは、ＵＳＢ１．１の仮想ＳＣＳＩドライブが出現したか否かを判断する（Ｓ２６０）。すなわち、上述のＳＣＳＩドライブ“ｓｄｂ”が出現したか否かを判断する。
【００７５】
ここで、ＵＳＢ１．１の仮想ＳＣＳＩドライブが出現しない場合は（Ｓ２６０：いいえ）、Ｓ２６０へ戻ることにより、ＵＳＢ１．１の仮想ＳＣＳＩドライブが出現するまで待機する。そして、ＵＳＢ１．１の仮想ＳＣＳＩドライブが出現した場合は（Ｓ２６０：はい）、ＵＳＢストレージデバイス１Ｂ（ＵＳＢ１．１の仮想ＳＣＳＩドライブ）をマウントして（Ｓ２７０）、図４に示す処理を終了する。
【００７６】
新たなＳＣＳＩドライブ“ｓｄｂ”が出現した場合、ＵＳＢストレージデバイス１Ｂ上にあるファイルシステム名は“ｓｄｂ１”，“ｓｄｂ２”，“ｓｄｂ３”，…となる。ただし、本実施形態の場合、すでに説明した通り、ＵＳＢストレージデバイス１Ｂ上には、一つのファイルシステムが存在するので、そのファイルシステム名は“ｓｄｂ１”となる。このファイルシステム“ｓｄｂ１”は、Ｓ１３０の処理でマウント対象となったファイルシステム“ｓｄａ１”とまったく同一のものである。
【００７７】
そこで、Ｓ２７０の処理においては、ＵＳＢストレージデバイス１Ｂ上のファイルシステム“ｓｄｂ１”を、あらかじめ取り決められたマウントポイント“／ｍａｉｎ”にマウントする。すなわち、Ｓ２４０でマウントポイントからファイルシステムのアンマウントが行われている場合、そのファイルシステムは、アンマウント時のマウントポイントと同じマウントポイントにマウントされる。その結果、Ｓ２４０〜Ｓ２７０の処理を実行する前後で、ＵＳＢストレージデバイス１Ｂ上にあるファイルのパス名“／ｍａｉｎ／…”が変更されてしまうことはない。
【００７８】
こうして図４に示す処理を終了すると、図３のＳ１５０を終えたことになるので、続いて、ＵＳＢホスト装置１Ａは、多数のタスクを起動する（Ｓ１６０）。Ｓ１６０で起動されるタスクは、カラオケコマンダ１として機能する上で必要となる様々なタスクである。具体例を挙げれば、画像表示関連のタスク（例えば、ビデオチップのドライバなど）、楽曲演奏関連のタスク（例えば、ＭＩＤＩドライバなど）、その他、ネットワーク通信関連のタスク、様々な内部計算や管理を行うタスクなどが起動される。
【００７９】
そして、これら多数のタスクが起動されると、ＵＳＢホスト装置１Ａでは、各タスクが、自身の担当するハードウェアを動作させ（Ｓ１７０）、以下、各種処理の実行が継続されることになる。
【００８０】
ＵＳＢホスト装置１Ａにおいて多数のタスクが起動された場合、制御部３（ＣＰＵ３Ａ）の処理能力は、多数のタスクに振り分けられることになるため、ＵＳＢストレージデバイス１Ｂとの通信に割り当てることができる処理能力も相応に低下することになる。そのような状況下で、ＵＳＢホスト装置１ＡとＵＳＢストレージデバイス１ＢがＨＳモードで通信を行うには、ＣＰＵ３Ａの処理能力を相応に高める必要があり、処理能力の低いＣＰＵを採用することは困難になる。
【００８１】
一方、ＵＳＢホスト装置１ＡとＵＳＢストレージデバイス１ＢがＨＳモードでの通信を行わず、ＦＳモードでの通信を行えば、ＵＳＢストレージデバイス１Ｂとの通信に高い処理能力を必要としなくなる。ただし、ＵＳＢストレージデバイス１Ｂを、単にＦＳモード対応のＵＳＢデバイスに代替するだけでは、上記のような多数のタスクが起動される前の時点でも、ＵＳＢストレージデバイス１Ｂとの通信速度が低下してしまい、カラオケコマンダ１の起動に時間を要する状態になる。
【００８２】
特に、Ｓ１４０の処理では、大量のファイルをＲＡＭディスクに展開する都合上、ＵＳＢストレージデバイス１Ｂとの通信速度は高いほど望ましく、また、この時点では、まだＳ１６０〜Ｓ１７０で稼働する多数のタスクが起動されていないので、制御部３（ＣＰＵ３Ａ）の処理能力は、十分にＵＳＢストレージデバイス１Ｂとの通信に割り当てることができる。
【００８３】
このような状況下、上記のような処理を行うＵＳＢホスト装置１Ａであれば、最初はＵＳＢホスト装置１ＡとＵＳＢストレージデバイス１ＢがＨＳモードでの通信を行うことで、高速に大量のファイルをＲＡＭディスクに展開することができ、且つ、ＵＳＢホスト装置１Ａにおいて多数のタスクが起動される時点では、ＵＳＢホスト装置１ＡとＵＳＢストレージデバイス１ＢがＦＳモードでの通信を行う状態に切り替わることで、ＣＰＵ３Ａに高い処理能力が要求されないようにしている。
【００８４】
したがって、このようなＵＳＢホスト装置１Ａであれば、比較的処理能力が低いＣＰＵ３Ａを採用しても、電源ＯＮ時の迅速な起動とその後の過負荷の発生防止を実現することができる。
【００８５】
しかも、このようなＵＳＢストレージデバイス１Ｂとの通信速度の切替を実現するに当たって、ＵＳＢストレージデバイス１Ｂ側には、ＵＳＢ規格で規定されている標準的な構成が存在するだけでよく、特殊な構成を追加する必要がない。
【００８６】
そのため、上記のようなＵＳＢホスト装置１Ａさえあれば、市販されているＵＳＢストレージデバイスをそのまま利用して通信速度の切替を実現できるので、通信速度の切替を実現するための特殊な構成をＵＳＢストレージデバイス側に付加した場合に比べ、カラオケコマンダ１全体の製造コストを抑制することができ、より安価なカラオケコマンダ１を提供することができる。
【００８７】
［変形例等］
以上、本発明の実施形態について説明したが、本発明は上記の具体的な一実施形態に限定されず、この他にも種々の形態で実施することができる。
【００８８】
例えば、上記実施形態では、ＵＳＢホスト装置１Ａが、カラオケコマンダ１としての構成を備える例を示したが、カラオケ機能以外の様々な機能を持つ装置においても、ＵＳＢホスト装置側において本発明の構成を採用することができる。
【００８９】
また、上記実施形態では、Ｓ１４０の処理が完了したことを切替条件として、ＵＳＢデバイスとの通信速度を切り替える例を示したが、どのような切替条件とするかは任意である。
【００９０】
例えば、発生タイミングが動的に変化する何らかのイベントが発生したことをもって切替条件が成立するものであってもよい。より具体的な例を挙げれば、利用者が所定の操作を行ったことを検知したら切替条件が成立する、ＵＳＢホスト装置で稼働するタスクの数が所定以上となったら切替条件が成立する、ＵＳＢホスト装置で所定の機能が作動したら切替条件が成立する、といったものでもよい。また、これらのイベントが発生した後、所定の時間が経過したら切替条件が成立する、といったものでもよい。
【００９１】
つまり、ＣＰＵ３Ａが各タスクの実行数や実行時間の検出手段としての役割をもち、Ｓ１４０〜Ｓ１７０の中で、前記検出手段が、ＵＳＢデバイスからファイルの読み出し開始の条件が成立している状態と、所定のタスク数や各タスク実行時間デッドラインに到達する直前状態と、を検出し、そのときにＳ１５０のスピード変更処理を実行すればよい。
【００９２】
さらに、上記実施形態では、ＵＳＢデバイスの具体例として、ＵＳＢストレージデバイスを例示したが、ＵＳＢストレージデバイス以外のＵＳＢデバイスを対象デバイスとする場合であっても、ＵＳＢホスト装置側において本発明の構成を採用することができる。
【００９３】
加えて、上記実施形態では、第一ホストコントローラ部として、二つのＯＨＣＩホストコントローラ１３Ａ，１３Ｂを備え、第二ホストコントローラ部として、一つのＥＨＣＩホストコントローラ１４を備える例を示したが、第一ホストコントローラ部の数は二つに限らず、一つ又は三つ以上となっていてもよい。また、ＯＨＣＩホストコントローラに代えて、ＵＨＣＩ（Universal Host Controller Interface）コントローラを採用してもよい。
【符号の説明】
【００９４】
１・・・カラオケコマンダ、１Ａ・・・ＵＳＢホスト装置、１Ｂ・・・ＵＳＢストレージデバイス、３・・・制御部、３Ａ・・・ＣＰＵ、３Ｂ・・・ＲＯＭ、３Ｃ・・・ＲＡＭ、５・・・ハードディスク装置（ＨＤＤ）、７・・・ＵＳＢインターフェース、１０・・・ＵＳＢコントローラ、１１・・・ＰＣＩバスインターフェース、１２・・・アービター、１３Ａ，１３Ｂ・・・ＯＨＣＩホストコントローラ、１４・・・ＥＨＣＩホストコントローラ、１５・・・ルートハブ、１６・・・ＵＳＢ物理層。
【図１】
2011118674.tif 000003
【図２】
2011118674.tif 000004
【図３】
2011118674.tif 000005
【図４】
2011118674.tif 000006
【図５】
2011118674.tif 000007