(58)【調査した分野】(Int.Cl.,DB名)
電源をオフするタイミングに、接続ポートに接続したことのあるデバイスの情報と該デバイスの接続先の論理ポート及び物理ポートの関係情報とが格納された第1の接続リストを更新する更新部と、
電源をオフした後、次に電源をオンするタイミングに、前記第1の接続リストに格納された関係情報に示す前記デバイスの接続先の論理ポート及び物理ポートに基づき、該デバイスの接続を前記物理ポートと前記論理ポートとの接続をスイッチングするポートスイッチングにより管理する接続管理部と、
を有する情報処理装置。
電源をオフするタイミングに、接続ポートに接続したことのあるデバイスの情報と該デバイスの接続先の論理ポート及び物理ポートの関係情報とが格納された第1の接続リストを更新し、
電源をオフした後、次に電源をオンするタイミングに、前記第1の接続リストに格納された関係情報に示す前記デバイスの接続先の論理ポート及び物理ポートに基づき、該デバイスの接続を前記物理ポートと前記論理ポートとの接続をスイッチングするポートスイッチングにより管理する、
処理をコンピュータに実行させるデバイス接続管理プログラム。
電源をオフするタイミングに、接続ポートに接続したことのあるデバイスの情報と該デバイスの接続先の論理ポート及び物理ポートの関係情報とが格納された第1の接続リストを更新し、
電源をオフした後、次に電源をオンするタイミングに、前記第1の接続リストに格納された関係情報に示す前記デバイスの接続先の論理ポート及び物理ポートに基づき、該デバイスの接続を前記物理ポートと前記論理ポートとの接続をスイッチングするポートスイッチングにより管理する、
処理をコンピュータが実行するデバイス接続管理方法。
【発明を実施するための形態】
【0009】
以下、本発明の実施形態について添付の図面を参照しながら説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複した説明を省く。
【0010】
[情報処理装置のハードウェア構成]
まず、本発明の一実施形態に係る情報処理装置のハードウェア構成の一例について、
図1を参照しながら説明する。
図1は、一実施形態に係る情報処理装置の一例としてPC(Personal Computer)10を一例として説明する。ただし、情報処理装置は、PCに限らず、例えば、タブレット型機器等であってもよい。
【0011】
本実施形態に係るPC10は、CPU11、メインメモリ12、ROM(Read Only Memory)13、チップセット14、ルーティング回路15、USB接続ポート24a、24b、24c(以下、「接続ポート24」ともいう。)、SMRAM(System Management Ram)16及びFlashROM(Read Only Memory)17を有する。
【0012】
CPU11は、CPUコアメモリコントローラを含むPC10の中枢回路であり、PC10の全体を制御する。メインメモリ12は、OS(Operating System)21を含む各種プログラム及び各種データを記憶する。例えば、メインメモリ12には、リスト作成アプリケーション28が格納されている。CPU11は、OS21を起動し、メインメモリ12に記憶されているリスト作成アプリケーション28を実行し、後述されるアプリ作成接続リストを作成する。アプリ作成接続リストは、SMRAM16に保存される。
【0013】
ROM13には、例えばBIOS(Basic Input Output System)22が実行するプログラムが格納される。例えば、ROM13には、本実施形態にかかるUSBデバイスの接続管理処理を行うためのデバイス接続管理プログラム23が記憶されている。
【0014】
BIOS22は、PC10の電源がオンされ、PC10が起動するときに最初に実行され、接続ポート24a、24b、24cに接続されているUSBデバイス31,32、33を含むデバイスを初期化した後、OSを起動する基本プログラムである。なお、ROM110内のBIOS22は、UEFI(Unified Extensible Firmware Interface)の形式であってもよい。
【0015】
チップセット14は、周辺装置とのインタフェースを集約した回路部分である。チップセット14には、USBコントローラ14aが内蔵されている。
図1には、USBコントローラ14aのポートH1、H2、H3の信号線が示されているが、信号線の数はこれに限らない。USBコントローラ14aのポートは、USB2.0ポート及びUSB3.0のSS(Super Speed)のリンクを含むポートのいずれかである。USB2.0のポートとUSB3.0のSSのポートとの組み合わせは自由で、ポートH1、H2、H3・・・の信号線は予め決定されたUSB2.0のポートとUSB3.0のSSのポートとのペアを区別しないで示す。
【0016】
ポートP1、P2、P3・・・のそれぞれは、ポートH1、H2、H3・・・のいずれかとペアになる。本実施形態では、USBデバイスをポートH1、H2、H3・・・に直接接続せず、ルーティング回路15を介したポートP1、P2、P3・・・に接続する。チップセット14は、I2Cバスのインタフェース回路を内蔵しており、ルーティング回路15は、チップセット14に接続するI2Cデバイスとして機能してもよい。
【0017】
本実施形態に依れば、USBコントローラのHxのポート番号は、ルーティング回路15によってデバイスが実際に接続されるPyのポート番号に読み替えられ、それ故Hxのポートは、Pyの物理ポートに対して論理ポートになる。
【0018】
ルーティング回路15は、GPIO(General Purpose Input/Output)チップ25、ドライバ回路26及びクロスバスイッチ回路27を有する。GPIOチップ25は、I2Cバスを通じて読み書き可能なルーティングレジスタ55を有する。
【0019】
ルーティングレジスタ55は、ルーティング回路15内のI2Cバスに接続されたGPIOチップ25中にあるレジスタである。ルーティングレジスタ55は、USBコントローラ14a側ポートのポートH1、H2・・・と接続ポート24(物理コネクタ)のポートP1、P2・・・との接続を指定するためのレジスタである。
【0020】
ルーティングレジスタ55は、例えば、H1レジスタ55a、H2レジスタ55b、H3レジスタ55c・・・ようにUSBコントローラ14aのポート数分のレジスタを有する。各レジスタには物理ポート分のビットが定義され、該当ポートのビット位置に「1」を設定することで論理ポートと物理ポートが関係付けられる。論理ポートと物理ポートを関係付けた関係情報により、
図1のH1レジスタ55aでは、論理ポートH1と物理ポートP2とが接続され、H2レジスタ55bでは、論理ポートH2と物理ポートP1とが接続され、H3レジスタ55cでは、論理ポートH3と物理ポートP3とが接続される。
【0021】
GPIOチップ25は、クロスバスイッチ回路27を制御するドライバ回路26に接続されている。ドライバ回路26は、GPIOチップ25の出力電圧をクロスバスイッチ回路27の必要とするゲート信号の入力レベルとするための、電圧変換のための回路で、GPIOチップ25から出力された、例えば5Vの電圧を、12Vに変換する。
【0022】
クロスバスイッチ回路27には、マトリクス状にFETスイッチが配列されており、それは、ルーティングレジスタ55の設定に応じてオン及びオフが個々にコントロールされる。クロスバスイッチ回路27は、論理ポートHnを横軸、物理ポートPnを縦軸とした配線の交点に、Hn_Pn信号(図には示さない)をゲート入力としたN_chのFETスイッチ(図には示さない)を排したマトリクスになっており、例えば、USBコントローラ14aの論理ポートH1を接続ポート24の物理ポートP2に接続するときには、H1レジスタ55aのP2のビット位置に「1」をセットする。これにより、GPIOチップ25のH1_P2の信号に+5Vが出力され、ドライバ回路26に+12Vが与えられる。これにより、クロスバスイッチ回路27のFETがオンとなり、クロスバスイッチ回路27の論理ポートH1と物理ポートP2のインタフェース信号線を接続するポートのルーティングが行われる。
【0023】
このように、本実施形態では、USBデバイスは、xHCIなどUSBコントローラ14aのポートには直接接続されず、クロスバスイッチ回路27を介在して接続される。これにより、本実施形態にかかるUSBデバイスの接続管理方法では、前回のシャットダウン時と今回の電源オン時において、USBデバイスが接続される接続ポート24の物理ポートが変わっても、クロスバスイッチ回路27がポートスイッチングを行うことで、同じ論理ポートへの接続が行える、ポートの仮想化が実現される。
ポートの仮想化が行える。
【0024】
[BIOSの機能構成]
次に、本実施形態に係るBIOS22の機能構成の一例について、
図2を参照しながら説明する。BIOS22は、エニュメレーション実行部41、更新部42及び接続管理部43の各機能を有する。エニュメレーションは、PC10の接続ポート24に接続されているUSBデバイス31を検出する一連の手続きをいう。BIOSは、USBキーボードなど入力機器やUSBメモリやハードディスクのファイルなど、システムの立ち上げを行うに当たって必要なUSBデバイスの検出のためエニュメレーションを行う。またOSもシステム立ち上げ時、またデバイスの接続の都度、それの運用に利用するため、エニュメレーションを独自で行っている。
【0025】
エニュメレーション実行部41は、接続ポート24に接続されているUSBデバイス31〜33を認識するために以下の(1)〜(3)の処理を行う。
(1)すべてのUSBデバイス共通の接続直後のデフォルトアドレス「0」になるように、ポートをリセットする。
(2)セットアドレス(Set Address)リクエストを送ってUSBデバイスにアドレスを割り付ける。
(3)ゲット・ディスクリプタ(Get Descriptor)リクエストを送って、USBデバイスの追加情報を要求し、必要な情報を入手する。ところが、上記方法では、デバイスによっては、USBデバイスが認識、検出されない場合がある。BIOSの行うエニュメレーションはシステム立ち上げに必要なUSBデバイスの検出を目的としたものであるため、一般にこの段階での未検出は問題にはならないが、OSの段階で未検出が起こると、本来の意図した目的でシステムが使えないことになり、重大な問題ととらえられる。
【0026】
このような場合、操作者は従来の方法に依れば、USBデバイスを抜き差し、別ポートに接続し不具合の解消を試みる。これは操作者のポートの不具合を意識した自然な行為として行われるが、必ずしもポートに物理的不具合があるとは限らず、接続ポートが過去のポートと違うことを検出してOS21配下で動作しているアプリケーションが未検出を故意に発生している場合もある。
【0027】
本実施形態にかかるUSBデバイスの接続管理方法では、USBデバイスの物理的な差し替え行為無しに、USBポートを仮想化、過去の認識に成功した接続ポートの復元、最適な新たな組み合わせの自動選択が行える。このことで接続ポートの違いによる故意の未検出、そもそもUSBデバイスとポートの相性による未検出を回避出来る。
【0028】
エニュメレーション実行部41は、エニュメレーションを実行する際、物理ポート毎に検出したUSBデバイス情報(ディスクリプタ情報)をハッシュ化し、ポート・デバイスリスト51(第2の接続リスト)を作成する。
【0029】
ポート・デバイスリスト51の一例を
図3に示す。ポート・デバイスリスト51は、物理ポート51a、ハッシュ値51b、設定フラグ51c及びポート割当フラグ51dの各情報を有する。物理ポート51aには、物理ポート番号が記憶される。ハッシュ値51bには、ディスクリプタ情報をハッシュ関数に代入して得られた値(ハッシュ値)である。設定フラグ51cは、後述されるルーティングリスト54に設定済のポートであるか、未設定のポートであるかを示すフラグである。ポート割当フラグ51dは、ハッシュ値51bで示されるデバイスに接続ポート24が割当済みであるか、未割当であるかを示すフラグである。なお、ポート・デバイスリスト51にディスクリプタ情報又はディスクリプタ情報から抽出したUSBデバイス情報を記憶してもよい。
【0030】
更新部42は、PC10の電源をオフするタイミングに、接続ポート24に接続されたことのあるUSBデバイスの情報と該USBデバイスの接続先のポートHとポートPとの関係情報とが格納されたグッドリスト53を更新する。更新部42は、PC10の電源をオフするタイミングに、OS21が生成したアプリ作成接続リスト52に基づき、グッドリスト53(第1の接続リスト)を更新する。OS21が操作者の指示によってPC10の電源をオフするタイミングに生成するアプリ作成接続リスト52の一例を
図4に示す。アプリ作成接続リスト52は、グッドリスト53のサブセットで、PC10の電源がオフされる直前のOS21上の論理ポート52a及びUSBデバイス情報52bを有する。
【0031】
アプリ作成接続リスト52には、シャットダウン前のOS21が把握している、論理ポート52a及びUSBデバイス情報52bが記憶されている。アプリ作成接続リスト52は、シャットダウン時のBIOS22のシャットダウンメソッドに先行してOS21がリスト作成アプリケーションにシャットダウン通知することによって、リスト作成アプリケーションによって作成され、例えばメインメモリ12上のSMRAM16に配置される。アプリ作成接続リスト52をSMRAM16に配置するのは、物理空間しか扱えないBIOS22とのインタフェースに好適であることによる。
【0032】
ただし、アプリ作成接続リスト52は、SMRAM16に配置されることに限定されない。例えば、ハードディスク上に専用不揮発性ファイルを作り、アプリケーションが直接ハードディスク上の専用不揮発性ファイルにアプリ作成接続リスト52を配置し、後にBIOS22がそれを参照する方法であってよい。
【0033】
グッドリスト53の一例を
図5に示す。グッドリスト53は、論理ポート53a、物理ポート53b、ハッシュ値53c及びUSBデバイス情報53dを有する。USBデバイス情報53dは、ディスクリプタ情報から抽出されたUSBデバイスに関する情報であってもよいし、ディスクリプタ情報と同一情報であってもよい。グッドリスト53は、接続ポート24に過去接続されていたか、現在接続されているUSBデバイスに関する情報を巡回格納するサーキュラーバッファになっている。
【0034】
物理ポート53bは、ルーティング回路15を使用してルーティングされた論理ポート53aのルーティング先のポートになる。
【0035】
接続管理部43は、PC10の電源をオフした後、次に電源をオンするタイミングに、グッドリスト53に格納された関係情報に示されるUSBデバイスの接続先の論理ポートと物理ポートとに基づき、ポートスイッチングを行い、USBデバイスの接続を管理する。
【0036】
接続管理部43は、グッドリスト53に記憶されたハッシュ値53cとポート・デバイスリスト51に記憶されたハッシュ値51cとを比較する。接続管理部43は、ハッシュ値の一致を判定すると、そのハッシュ値に対応してグッドリスト53に示された論理ポート53a及び物理ポート53bをルーティングリスト54にセットする。
【0037】
ルーティングリスト54及びルーティングレジスタ55の一例を
図6に示す。ルーティングリスト54は、論理ポート54a、物理ポート54b、ハッシュ値54c及び使用フラグ54dを有する。
【0038】
ルーティングリスト54はルーティングレジスタの設定を行うためのもので、論理ポート54aに接続すべき物理ポート54bの該当ビット位置に「1」をセットしてそれを示す。例えば、接続管理部43は、
図3のポート・デバイスリスト51のハッシュ値51b「153」と
図5のグッドリスト53のハッシュ値53c「153」とが一致すると判定する。この場合、接続管理部43は、グッドリスト53のハッシュ値53c「153」の論理ポート53a「H1」及び物理ポート53b「P2」に基づき、ルーティングリスト54の論理ポート54a「H1」の物理ポート54bの「P2」のビットに「1」をセットする。これにより、論理ポートを変更せずに、ルーティングリスト54の物理ポート54bを、ポート・デバイスリスト51の物理ポート51a「P1」からグッドリスト53の物理ポート53b「P2」に変更することができる(ポートスイッチング)。このように操作者は、接続ポート24を意識することなく、接続ポート24のどのポートにUSBデバイスを接続したとしても、デバイスの同じ論理ポートへの接続が可能で、OS21の未検出が回避され、USBデバイスを使用することができる。さらに、ルーティングリスト54には、ハッシュ値54c及び使用フラグ54dが保存されている。使用フラグ54dは、論理ポート54a及び物理ポート54bで示される接続ポート24が使用済みか、未使用かを示すフラグである。接続管理部43は、ルーティングリスト54を作成後、その内容をルーティングレジスタ55へ書き込む。
【0039】
[電源オンからシャットダウンまでの一連の動作]
電源オンからシャットダウンまでの一連の動作を
図7に簡略化して示す。
図7に、BIOSやUEFIのようなPC組込み型のファームウェア(システムファームウェア)の起動プロセスの一例を示す。
【0040】
PCの電源がオンされると、BIOS22は、プラットフォームの初期化を実行する(DXE Phase)。DXE Phaseにて各コンポーネントをサポートするために各種DXEドライバーが組み込まれる。このうちの一つがUSBドライバーである。
【0041】
DXE Phaseの早いタイミングで、BIOS22は、ルーティングリスト54の作成、USBポートのスイッチング等を行う。その際、BIOS22は、ポート・デバイスリスト51を作成し、前回のシャットダウンの際に作成されたグッドリスト53を参照して、ルーティングリスト54を作成する。ルーティングリスト54の作成後、ルーティングレジスタ55に書き込まれた論理ポートと物理ポートとの対応関係に基づき、ポートスイッチング処理において論理ポートに対する物理ポートのスイッチングが実行される。
【0042】
BIOS22は、DXE Phaseで接続されているUSBデバイスを含むデバイスに対して初期化を行う。DXE Phaseは、OS21起動前の処理であり、BIOS22は、DXE PhaseでOS21上でUSBデバイスを動かすための基本的な初期化(ポートスピード変更や起動抑止等)を実行する。OS21起動後、Runtime Driverを除き、BIOS22の処理は停止される。
【0043】
電源オフの直前に実行されるAL Phaseでは、BIOS22は、グッドリスト53を作成し、FlashROM17に保存する。グッドリスト53は、シャットダウンの直前にOS21により作成されたアプリ作成接続リスト52に基づき作成される。FlashROM17は独立したチップであっても良いし、ROM13と共用であってもよい。
【0044】
[電源オン時の処理]
次に、本実施形態に係るPC10の電源オン時の処理について
図8を参照して説明する。
図8は、一実施形態にかかる電源オン時の処理の一例を示すフローチャートである。
【0045】
PC10の電源がオンすると、BIOS22は、自己診断テストPOST(Power On Self Test)を実行する(ステップS12)。具体的には、BIOS22は、
図7に示したPEI及びDXE Phaseにて、メモリの初期化、ボード上の各種コントローラのコンフィグレーションを実行し、デバイスの検出、初期化及び設定を行う。このとき、BIOS22は、ビデオ、キーボード、マウス、ストレージ、シリアルポート、パラレルポート等と主にUSBポート及びデバイスの初期化を行う。
【0046】
次に、BIOS22は、USB初期化処理を行う(ステップS14)。USB初期化処理において、ルーティング回路15を使用したポートスイッチングが行われる。次に、BIOS22は、USBデバイスを含めた周辺デバイスの初期化完了後、ブート処理を実行し(ステップS16)、本処理を終了する。
【0047】
[USB初期化処理]
図8のステップS14にて実行されるUSB初期化処理について、
図9を参照して説明する。
図9は、一実施形態にかかるUSB初期化処理の一例を示すフローチャートである。USB初期化処理では、エニュメレーション実行部41は、USBデバイスのディスクリプタ情報を読み込み、USBデバイス情報を取得し、ポート・デバイスリスト51を作成する(ステップS120)。ポート・デバイスリスト51を作成する際に使用されるUSBデバイス情報は、ディスクリプタ情報の一部であってもよいし、ディスクリプタ情報の全部であってもよい。
【0048】
次に、接続管理部43は、Flash ROM17からグッドリスト53を読み出し(ステップS122)、ポート・デバイスリスト51とグッドリスト53とを比較する(ステップS124)。次に、接続管理部43は、ルーティングリスト作成処理を実行する(ステップS126)。
【0049】
(ルーティングリスト作成処理)
図10を参照しながら、ルーティングリスト作成処理を説明する。接続管理部43は、変数Jに1を設定する(ステップS140)。次に、接続管理部43は、グッドリスト53のJ番目(ここでは、1番目)のハッシュ値が、ポート・デバイスリスト51のハッシュ値のいずれかと一致するかを判定する(ステップS142)。ハッシュ値が一致しないと判定された場合、直ちにステップS146に進む。ハッシュ値が一致すると判定された場合、接続管理部43は、そのハッシュ値に対応してグッドリスト53に記憶された論理ポート53a及び物理ポート53bをルーティングリスト54に設定する。
【0050】
次に、接続管理部43は、グッドリスト53の最後のUSBデバイスまでチェックしたかを判定する(ステップS146)。グッドリスト53の最後のUSBデバイスまでチェックしていない場合、接続管理部43は、変数Jに1加算し(ステップS148)、ステップS142に戻って、ステップS142〜S146の処理を行う。グッドリスト53の最後のUSBデバイスまでチェックした場合、他のデバイスの設定処理に移行する(ステップS150)。
【0051】
(他のデバイスの設定処理)
図11を参照しながら、他のデバイスの設定処理を説明する。他のデバイスの設定処理では、グッドリスト53に存在しないUSBデバイスであって、ポート・デバイスリスト51に存在するUSBデバイスについて、任意の接続ポート24にルーティングする処理が実行される。
【0052】
接続管理部43は、変数Kに1を設定する(ステップS152)。次に、接続管理部43は、ポート・デバイスリスト51のK番目(ここでは、1番目)の設定フラグ51c及びポート割当フラグ51dの少なくともいずれかのフラグが未設定又は未割振りであるかを判定する(ステップS154)。未設定又は未割振りのフラグは存在しないと判定された場合、直ちにステップS162に進む。他方、未設定又は未割振りのフラグが存在すると判定された場合、乱数を発生し、未設定デバイス又は未割当デバイスに対するポート番号をランダムに選択する(ステップS156)。
【0053】
次に、接続管理部43は、選択されたポート番号の物理ポートで示される接続ポート24が使用されているかを判定する(ステップS158)。選択されたポート番号で示される接続ポート24が使用されていると判定された場合、接続管理部43は、ステップS156に戻り、使用されていない接続ポート24が選択されるまで、ステップS156及びS158の処理を繰り返す。
【0054】
選択されたポート番号の物理ポートで示される接続ポート24は使用されていないと判定された場合、接続管理部43は、ルーティングリスト54の論理ポート54aに物理ポート番号をセット(つまり、物理ポート54bの該当ビット位置に「1」を設定)する。
【0055】
次に、接続管理部43は、ポート・デバイスリスト51の最後のUSBデバイスまでチェックしたかを判定する(ステップS162)。ポート・デバイスリスト51の最後のUSBデバイスまでチェックしていない場合、接続管理部43は、変数Kに1加算し(ステップS164)、ステップS154に戻って、ステップS154〜S162の処理を行う。ポート・デバイスリスト51の最後のUSBデバイスまでチェックした場合、
図9のステップS126に戻る。
【0056】
次いで、
図9のステップS128において、接続管理部43は、ルーティングリスト54に記憶された情報をルーティングレジスタ55へ書き込む。このことでルーティング回路15のクロスバスイッチ回路によってポートスイッチングが行われ(ステップS130)、本処理を終了する。
【0057】
なお、グッドリスト53に存在しないUSBデバイスを、USBデバイスが接続されていない接続ポート24に割り当てる場合、接続管理部43は、使用されていないUSBポートのうち、未割当のポート番号を例えば最も大きい論理ポートから順番に割り当てる。そして、接続管理部43は、ルーティングリスト54の論理ポート54aに対応する物理ポート54bの該当ビット位置に「1」を設定する。この物理ポート54bの割当は、未割当の論理ポート番号の最も大きいポートから始め、ポート番号の小さい方向に、物理ポートをランダムに選び、故意に選択をバラ付かせながら進めることが好ましい。
【0058】
物理ポートをランダムに選択するのは、グッドリスト53へのポート番号の未設定が何らかの不具合によって生じたことを想定し、同じポートに接続することで再度不具合が生じることを回避するためである。すなわち、BIOS22は、ポート番号が未設定のUSBデバイスを検出すると、乱数を発生し、該当接続ポート24が空いているかどうかをポート・デバイスリスト51のポート割当フラグ51dから検出する。BIOS22は、接続ポート24の空きが検出されたらポート・デバイスリスト51のポート割当フラグ51dに「1」を設定する。また、BIOS22は、ルーティングリスト54の論理ポート54aに対応する、空いた接続ポート24の物理ポート54bの該当ビット位置に「1」を設定する。BIOS22は、乱数のポート番号が存在しなければ、ポート番号が見つかるまで乱数発生をやり直し、ポート番号が未設定のUSBデバイスが無くなるまで続け、未設定のUSBデバイスが無くなったとき、ルーティングリスト54の作成を完了する。
【0059】
[シャットダウン処理]
次に、本実施形態に係るPC10のシャットダウン処理について
図12及び
図13を参照して説明する。
図12は、一実施形態にかかるOS21が行うシャットダウン処理の一例を示す。
図13は、一実施形態にかかるBIOS22が行うシャットダウン処理の一例を示す。
【0060】
(シャットダウン処理:OS)
電源オフ時、OS21は、
図12のシャットダウン処理を実行する。具体的には、OS21は、アプリ作成接続リスト52を作成する(ステップS22)。次に、OS21は、作成したアプリ作成接続リスト52をSMRAM16に保存する(ステップS24)。次に、OS21は、アプリケーションへのメッセージに続いて、ハードウェアを電源オフやスリープとすることを通知するためのシャットダウンの通知をBIOS22へ送る。BIOS22は、OS21からのシャットダウンの通知に応じて、
図13のシャットダウン処理を実行する。(ステップS26)。
【0061】
(シャットダウン処理:BIOS)
図13のシャットダウン処理では、BIOS22は、SMRAM16からアプリ作成接続リスト52を取得する(ステップS32)。BIOS22は、取得したアプリ作成接続リスト52からグッドリスト53を作成し(ステップS34:グッドリスト作成処理)、グッドリストをFlashROM17に保存し(ステップS36)、PCの電源をオフする(ステップS38)。
【0062】
(グッドリスト作成処理)
図13のステップS34におけるグッドリスト作成処理について、
図14を参照しながら説明する。更新部42は、取得したアプリ作成接続リスト52と前回のシャットダウン時に作成したグッドリスト53とを比較する(ステップS342)。次に、更新部42は、グッドリスト53に存在するUSBデバイスかを判定する(ステップS344)。グッドリスト53に存在するUSBデバイスであれば、過去に接続実績のあるUSBデバイスであると判定できる。よって、グッドリスト53に存在するUSBデバイスであると判定された場合、更新部42は、アプリ作成接続リスト52に保存された情報(最新のポート情報)でグッドリスト53を更新する(ステップS346)。次に、更新部42は、更新されたグッドリスト53をFlashROM17に保存し(ステップS350)、本処理を終了する。
【0063】
他方、ステップS344において、グッドリスト53に存在するUSBデバイスでないと判定された場合、更新部42は、グッドリスト53を更新し、新たなUSBデバイスとしてグッドリスト53に登録する(ステップS348)。次に、更新部42は、更新されたグッドリスト53をFlashROM17に保存し(ステップS350)、本処理を終了する。
【0064】
以上に説明したように、一実施形態に係る接続管理方法によれば、論理ポートを変更せずに、BIOS起動時に前回シャットダウンしたときの物理ポートにUSBデバイスを接続することができる。これによれば、OS21にディスクリプタ情報を通知する前にポートスイッチングが行われる。つまり、本実施形態では、OS21が管理する論理ポートは変えずに、BIOS22が管理する物理ポートを変えることにより、ポートスイッチングが実行される。これにより、ユーザが接続ポート24を意識せずにいずれかの接続ポート24にUSBデバイスを接続しても、そのUSBデバイスを使用することができる。これにより、デバイスを安定的に稼働させることができる。また、デバイスをどの物理ポートに接続してもOS21はデバイスを認識できるため、デバイスのアクセス時間を短縮することができ、
以上、情報処理装置、デバイス接続管理プログラム及びデバイス接続管理方法を上記実施形態により説明したが、本発明にかかる情報処理装置、デバイス接続管理プログラム及びデバイス接続管理方法は上記実施形態に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能である。また、上記実施形態及び変形例が複数存在する場合、矛盾しない範囲で組み合わせることができる。
【0065】
例えば、本発明では、ポートスイッチングによるポートの仮想化を、クロスバスイッチ回路27等のハードウェアによっても実現した。しかしながら、ポートの仮想化は、これに限らず、ソウトウェアによっても実現可能で、本発明はそれら実装の違いには特定されない。その場合、ルーティング回路15の動作をプログラムで記述し、そのプログラムをCPU11が実行することで、ルーティングレジスタ55に応じたポートスイッチングが可能になる。
【0066】
以上の説明に関し、更に以下の項を開示する。
(付記1)
電源をオフするタイミングに、接続ポートに接続したことのあるデバイスの情報と該デバイスの接続先の論理ポート及び物理ポートの関係情報とが格納された第1の接続リストを更新する更新部と、
電源をオフした後、次に電源をオンするタイミングに、前記第1の接続リストに格納された関係情報に示す前記デバイスの接続先の論理ポート及び物理ポートに基づき、該デバイスの接続を管理する接続管理部と、
を有する情報処理装置。
(付記2)
電源をオンするタイミングに、デバイスの情報と該デバイスの接続先の論理ポートの情報とが格納された第2の接続リストを作成する実行部を有し、
前記接続管理部は、前記第1の接続リスト及び前記第2の接続リストに格納された前記デバイスの情報が一致する場合、前記第1の接続リストに基づき該デバイスの接続を管理する、
付記1に記載の情報処理装置。
(付記3)
電源をオフするタイミングに、接続ポートに接続したことのあるデバイスの情報と該デバイスの接続先の論理ポート及び物理ポートの関係情報とが格納された第1の接続リストを更新し、
電源をオフした後、次に電源をオンするタイミングに、前記第1の接続リストに格納された関係情報に示す前記デバイスの接続先の論理ポート及び物理ポートに基づき、該デバイスの接続を管理する、
処理をコンピュータに実行させるデバイス接続管理プログラム。
(付記4)
電源をオンするタイミングに、デバイスの情報と該デバイスの接続先の論理ポートの情報とが格納された第2の接続リストを作成し、
前記第1の接続リスト及び前記第2の接続リストに格納された前記デバイスの情報が一致する場合、前記第1の接続リストに基づき該デバイスの接続を管理する、
付記3に記載のデバイス接続管理プログラム。
(付記5)
電源をオフするタイミングに、接続ポートに接続したことのあるデバイスの情報と該デバイスの接続先の論理ポート及び物理ポートの関係情報とが格納された第1の接続リストを更新し、
電源をオフした後、次に電源をオンするタイミングに、前記第1の接続リストに格納された関係情報に示す前記デバイスの接続先の論理ポート及び物理ポートに基づき、該デバイスの接続を管理する、
処理をコンピュータが実行するデバイス接続管理方法。
(付記6)
電源をオンするタイミングに、デバイスの情報と該デバイスの接続先の論理ポートの情報とが格納された第2の接続リストを作成し、
前記第1の接続リスト及び前記第2の接続リストに格納された前記デバイスの情報が一致する場合、前記第1の接続リストに基づき該デバイスの接続を管理する、
付記5に記載のデバイス接続管理方法。