(57)【要約】【課題】デバイスの制御権をＢＩＯＳからソフトウェアに正常に移行させることが可能な情報処理装置を実現する。【解決手段】ＵＳＢレガシーエミュレーション処理停止制御モジュール４０４は、ＵＳＢレガシーエミュレーション処理実行モジュール４０１によるＵＳＢレガシーエミュレーション処理の実行を自動的に停止するための停止制御処理を実行する。停止制御処理においては、ＵＳＢレガシーエミュレーション処理停止制御モジュール４０４は、ＵＳＢコントローラ２０１内のコマンドレジスタ３０１に対するソフトウェアからのライトアクセスを監視し、ライトアクセスの発生が検出された時に、ＵＳＢレガシーエミュレーション処理実行モジュール４０１によるＵＳＢレガシーエミュレーション処理の実行を自動的に停止する。【選択図】      図７
2008287505.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティングシステムによってサポートされていないデバイスを前記オペレーティングシステムからアクセスできるようにするためのレガシーエミュレーション処理を実行するＢＩＯＳプログラムが格納された不揮発性メモリと、
前記デバイスを制御するコントローラと、
前記ＢＩＯＳプログラムの前記レガシーエミュレーション処理によって前記コントローラを制御することによって、前記デバイスに格納されたオペレーティングシステムをブートするためのブートシーケンスを実行するブート処理手段と、
前記コントローラに前記デバイスを制御するための動作環境を指定するための値がセットされる前記コントローラ内の所定のレジスタに対するソフトウェアからのライトアクセスを監視し、前記ライトアクセスの発生が検出された時、前記ＢＩＯＳプログラムの前記レガシーエミュレーション処理の実行を停止するための停止制御処理を実行するレガシーエミュレーション処理停止制御手段とを具備することを特徴とする情報処理装置。
【請求項２】
前記ソフトウェアによる前記レジスタへのライトアクセスは、前記ＢＩＯＳプログラム内に設けられたファンクションルーチンを介して実行され、
前記レガシーエミュレーション処理停止制御手段は、
前記ファンクションルーチンを介して実行される前記ソフトウェアからの前記所定のレジスタに対するライトアクセスをフックし、前記フックしたライトアクセスによって前記レジスタへの書き込みが要求された値が前記コントローラの動作環境の設定を変更する値であるか否かを判別し、前記書き込みが要求された値が前記コントローラの動作環境の設定を変更する値である場合、前記ＢＩＯＳプログラムの前記レガシーエミュレーション処理の実行を停止することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記レガシーエミュレーション処理停止制御手段は、前記ＢＩＯＳプログラムの前記レガシーエミュレーション処理の実行を停止した後に、前記書き込みが要求された値を前記レジスタに書き込むことを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記デバイスはユニバーサルシリアルバス（ＵＳＢ）デバイスであることを特徴とする請求項１乃至３のいずれか１項記載の情報処理装置。
【請求項５】
前記コントローラは前記レジスタがライトアクセスされたことに応答して割り込み信号を発生するように構成されており、
前記レガシーエミュレーション処理停止制御手段は、前記コントローラから前記割り込み信号が発生された時、前記レジスタに対する前記ソフトウェアからのライトアクセスが発生したことを検出することを特徴とする請求項１記載の情報処理装置。
【請求項６】
ＢＩＯＳプログラムによって実行される、オペレーティングシステムによってサポートされていないデバイスを前記オペレーティングシステムからアクセスできるようにするためのレガシーエミュレーション処理を、停止するためのレガシーエミュレーション処理停止制御方法であって、
前記デバイスを制御するために情報処理装置内に設けられたコントローラを前記ＢＩＯＳプログラムの前記レガシーエミュレーション処理によって制御することによって、前記デバイスに格納されたオペレーティングシステムをブートするためのブートシーケンスを実行するステップと、
前記コントローラに前記デバイスを制御するための動作環境を指定するための値がセットされる前記コントローラ内の所定のレジスタに対するソフトウェアからのライトアクセスを監視し、前記ライトアクセスの発生が検出された時、前記ＢＩＯＳプログラムの前記レガシーエミュレーション処理の実行を停止するための停止制御処理を実行するレガシーエミュレーション処理停止制御ステップとを具備することを特徴とするレガシーエミュレーション処理停止制御方法。
【請求項７】
前記ソフトウェアによる前記レジスタへのライトアクセスは、前記ＢＩＯＳプログラム内に設けられたファンクションルーチンを介して実行され、
前記レガシーエミュレーション処理停止制御ステップは、前記ファンクションルーチンを介して実行される前記ソフトウェアからの前記所定のレジスタに対するライトアクセスをフックするステップと、前記フックしたライトアクセスによって前記レジスタへの書き込みが要求された値が前記コントローラの動作環境の設定を変更する値であるか否かを判別するステップと、前記書き込みが要求された値が前記コントローラの動作環境の設定を変更する値である場合、前記ＢＩＯＳプログラムの前記レガシーエミュレーション処理の実行を停止するステップとを含むことを特徴とする請求項６記載のレガシーエミュレーション処理停止制御方法。
【請求項８】
前記レガシーエミュレーション処理停止制御ステップは、前記ＢＩＯＳプログラムの前記レガシーエミュレーション処理の実行を停止した後に、前記書き込みが要求された値を前記レジスタに書き込むステップを含むことを特徴とする請求項７記載のレガシーエミュレーション処理停止制御方法。
【請求項９】
前記デバイスはユニバーサルシリアルバス（ＵＳＢ）デバイスであることを特徴とする請求項６乃至８のいずれか１項記載のレガシーエミュレーション処理停止制御方法。
【請求項１０】
前記コントローラは前記レジスタがライトアクセスされたことに応答して割り込み信号を発生するように構成されており、
前記レガシーエミュレーション処理停止制御ステップは、前記コントローラから前記割り込み信号が発生された時、前記レジスタに対する前記ソフトウェアからのライトアクセスが発生したことを検出することを特徴とする請求項６記載のレガシーエミュレーション処理停止制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はパーソナルコンピュータのような情報処理装置に関し、特にＢＩＯＳプログラムによってレガシーエミュレーション処理を実行する情報処理装置に関する。
【背景技術】
【０００２】
近年、ラップトップタイプまたはノートブックタイプの種々の携帯型パーソナルコンピュータが開発されている。この種のコンピュータにおいては、ユニバーサルシリアルバス（ＵＳＢ）インタフェース、ＩＥＥＥ１３９４インタフェースといった新たなインタフェースが設けられている。また、ＵＳＢインタフェースに接続可能な各種ＵＳＢデバイス（ＵＳＢキーボード、ＵＳＢメモリ、ＵＳＢ光ディスクドライブ、ＵＳＢフレキシブルディスクドライブ、等）も広く普及している。
【０００３】
特許文献１には、オペレーティングシステムのインストール中にオペレーティングシステムが新たなハードウェア・デバイスを認識して、当該新たなハードウェア・デバイスを制御するためのデバイスドライバを自動的にインストールするための技術が開示されている。
【０００４】
また、通常、多くのＢＩＯＳ（基本入出力システム）プログラムは、レガシーエミュレーション機能を有している。
【０００５】
このレガシーエミュレーション機能は、オペレーティングシステムによってサポートされていない、ＵＳＢデバイスのようなデバイスを、当該オペレーティングシステムからアクセスできるようにするための機能である。ＢＩＯＳのレガシーエミュレーション機能を用いることにより、例えば、ＵＳＢデバイスをサポートしていないオペレーティングシステムが動作しているシステム環境においても、ＵＳＢデバイスを既存の周辺デバイスと同様に扱うことが可能となる。
【０００６】
また、ＢＩＯＳのレガシーエミュレーション機能は、ＵＳＢメモリ、ＵＳＢ光ディスクドライブ、ＵＳＢフレキシブルディスクドライブといったＵＳＢストレージデバイスに格納されたオペレーティングシステムをブートする時にも利用される。たとえＵＳＢデバイスをサポートしているオペレーティングシステムであっても、そのオペレーティングシステム上で動作するＵＳＢデバイスドライバがロードされるまでは、ＵＳＢデバイスをアクセスすることはできないからである。
【０００７】
このため、ＵＳＢストレージデバイスからオペレーティングシステムをブートしたり、ＵＳＢストレージデバイスからＵＳＢデバイスドライバをロードしたりするためには、ＢＩＯＳのレガシーエミュレーション機能を使用することが必要となる。
【特許文献１】特表２００２−５２９８１６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ＢＩＯＳのレガシーエミュレーション機能を使用して、ＵＳＢデバイスをサポートしているオペレーティングシステムのブート、またはＵＳＢデバイスドライバのロードが実行された後においては、ＵＳＢデバイスの制御権は、ＢＩＯＳから、オペレーティングシステムまたはＵＳＢデバイスドライバに引き渡される。
【０００９】
この引き渡し処理においては、オペレーティングシステムまたはＵＳＢデバイスドライバは、ＵＳＢデバイスの制御権の引き渡しをＢＩＯＳに通知するための予め決められた手順を実行することが必要である。
【００１０】
しかし、オペレーティングシステム、ＵＳＢデバイスドライバといった既存のソフトウェアの中には、上述の予め決められた手順を実行せずに、ＵＳＢデバイスを制御するためのコントローラに対するアクセスを開始してしまうものもある。この場合、ＢＩＯＳによるコントローラに対するアクセスとソフトウェアによるコントローラに対するアクセスとの衝突が発生し、これによってシステム動作が不安定になったり、システムがハングアップしてしまう危険がある。
【００１１】
したがって、コントローラに対するアクセスの衝突を回避するための新たな機能を実現することが必要である。
【００１２】
本発明は上述の事情を考慮してなされたもので、予め決められた手順を実行しないソフトウェアが使用された場合でも、デバイスの制御権をＢＩＯＳからソフトウェアに正常に移行させることが可能な情報処理装置およびレガシーエミュレーション処理停止制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記課題を解決するために、本発明の情報処理装置は、オペレーティングシステムによってサポートされていないデバイスを前記オペレーティングシステムからアクセスできるようにするためのレガシーエミュレーション処理を実行するＢＩＯＳプログラムが格納された不揮発性メモリと、前記デバイスを制御するコントローラと、前記ＢＩＯＳプログラムの前記レガシーエミュレーション処理によって前記コントローラを制御することによって、前記デバイスに格納されたオペレーティングシステムをブートするためのブートシーケンスを実行するブート処理手段と、前記コントローラに前記デバイスを制御するための動作環境を指定するための値がセットされる前記コントローラ内の所定のレジスタに対するソフトウェアからのライトアクセスを監視し、前記ライトアクセスの発生が検出された時、前記ＢＩＯＳプログラムの前記レガシーエミュレーション処理の実行を停止するための停止制御処理を実行するレガシーエミュレーション処理停止制御手段とを具備することを特徴とする。
【発明の効果】
【００１４】
本発明によれば、予め決められた手順を実行しないソフトウェアが使用された場合でも、デバイスの制御権をＢＩＯＳからソフトウェアに正常に移行させることが可能となる。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照して本発明の実施形態を説明する。
【００１６】
まず、図１を参照して、本発明の一実施形態に係る情報処理装置の構成について説明する。この情報処理装置は、例えば、バッテリ駆動可能な携帯型のノートブック型パーソナルコンピュータ１０として実現されている。
【００１７】
図１は、ディスプレイユニットを開いた状態におけるコンピュータ１０を正面側から見た斜視図である。本コンピュータ１０は、コンピュータ本体１１と、ディスプレイユニット１２とから構成される。ディスプレイユニット１２には、ＬＣＤ２０（Liquid Crystal Display）から構成される表示装置が組み込まれている。
【００１８】
ディスプレイユニット１２は、コンピュータ本体１１に支持され、そのコンピュータ本体１１に対してコンピュータ本体１１の上面が露出される開放位置とコンピュータ本体１１の上面を覆う閉塞位置との間を回動自由に取り付けられている。コンピュータ本体１１は薄い箱形の筐体を有しており、その上面にはキーボード１３、本コンピュータ１０を電源オン／オフするためのパワーボタンスイッチ１５およびタッチパッド１８などが配置されている。
【００１９】
また、コンピュータ本体１１の例えば左側面には、各々に各種デバイスがそれぞれ取り外し自在に接続可能な２つの接続ポート３１，３２が設けられている。  これら接続ポート３１，３２の各々は、例えば、ユニバーサルシリアルバス（ＵＳＢ）規格に準拠したコネクタから構成されている。これら接続ポート３１，３２，３３の各々には、必要に応じて、例えばＵＳＢ規格に準拠したデバイス（ＵＳＢデバイス）を接続することができる。
【００２０】
次に、図２を参照して、本コンピュータ１０のシステム構成の一例を説明する。
【００２１】
本コンピュータ１０は、ＣＰＵ１１１、ノースブリッジ１１２、主メモリ１１３、グラフィクスコントローラ１１４、サウスブリッジ１１５、ネットワークコントローラ１１６、内蔵ハードディスクドライブ（ＨＤＤ）１１７、フラッシュＢＩＯＳ−ＲＯＭ１１８、エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１１９、および電源回路１２０等を備えている。
【００２２】
ＣＰＵ１１１は、本コンピュータ１０の各コンポーネントの動作を制御するプロセッサである。このＣＰＵ１１１は、内蔵ＨＤＤ１１７または外部ストレージデバイスから主メモリ１１３にロードされる、オペレーティングシステムおよび各種アプリケーションプログラムを実行する。
【００２３】
また、ＣＰＵ１１１は、フラッシュＢＩＯＳ−ＲＯＭ１１８に格納されたＢＩＯＳ（Basic Input Output System）プログラム（以下では、単にＢＩＯＳと称する）も実行する。ＢＩＯＳはハードウェア制御のためのプログラムである。このＢＩＯＳは、レガシーエミュレーション処理を実行する機能を有している。レガシーエミュレーション機能は、オペレーティングシステムによってサポートされていないデバイスを当該オペレーティングシステムからアクセスできるようにするための機能である。
【００２４】
以下では、ＢＩＯＳによってサポートされるレガシーエミュレーション機能が、ＵＳＢ規格（例えば、ＵＳＢ２．０規格）に準拠するＵＳＢデバイスをサポートしていないオペレーティングシステムから当該ＵＳＢデバイスをアクセスできるようにするための機能（ＵＳＢレガシーエミュレーション機能）である場合を想定する。このＢＩＯＳのＵＳＢレガシーエミュレーション機能は、例えば、オペレーティングシステム等によって実行されるＰＳ／２規格のキーボードをアクセスするための手順を、ＵＳＢキーボードを制御するための手順にエミュレートする処理、および、オペレーティングシステム等によって実行されるＩＤＥ規格等のストレージデバイスをアクセスするための手順を、ＵＳＢメモリ、ＵＳＢ光ディスクドライブ、ＵＳＢフレキシブルディテスクドライブといったＵＳＢストレージデバイスを制御するための手順にエミュレートする処理等を実行する。
【００２５】
また、ＵＳＢレガシーエミュレーション機能は、ＵＳＢストレージデバイスからオペレーティングシステムをブートするためにも利用される。ＢＩＯＳは、ＵＳＢレガシーエミュレーション機能を利用することによって、ＵＳＢストレージデバイスに格納されたオペレーティングシステムをブートするためのブートシーケンスを実行する。具体的には、ＢＩＯＳは、ＵＳＢデバイスを制御するためのコントローラをＵＳＢレガシーエミュレーション機能によって制御し、これによってＵＳＢストレージデバイスをアクセスしてＵＳＢストレージデバイスからオペレーティングシステムをブートする。
【００２６】
ノースブリッジ１１２は、ＣＰＵ１１１のローカルバスとサウスブリッジ１１６との間を接続するブリッジデバイスである。また、ノースブリッジ１１２は、ＡＧＰ（Accelerated Graphics Port）バスなどを介してグラフィクスコントローラ１１４との通信を実行する機能も有している。さらに、ノースブリッジ１１２には、主メモリ１１３を制御するメモリコントローラも内蔵されている。
【００２７】
グラフィクスコントローラ１１４は、本コンピュータ１０のディスプレイモニタとして使用されるＬＣＤ２０を制御する表示コントローラである。サウスブリッジ１１５は、ＰＣＩ（Peripheral Component Interconnect）バスおよびＬＰＣ（Low Pin Count）バスそれぞれ接続されている。また、サウスブリッジ１１５には、ＵＳＢコントローラ２０１と、ＨＤＤ１１７を制御するためのＩＤＥ（Integrated Drive Electronics）コントローラ２０２とが内蔵されている。
【００２８】
ＵＳＢコントローラ２０１は、ＵＳＢポート３１，３２に接続されるデバイス（ＵＳＢデバイス）１０１，１０２をそれぞれ制御するコントローラである。このＵＳＢコントローラ２０１は、例えば、ＵＳＢ２．０規格に従ってＵＳＢデバイスを制御するように構成されている。ＵＳＢデバイス１０１，１０２としては、例えば、ＵＳＢキーボード、ＵＳＢメモリ、ＵＳＢ光ディスクドライブ、ＵＳＢフレキシブルディテスクドライブ、等がある。
【００２９】
ＵＳＢコントローラ２０１は、コマンドレジスタ３０１を備えている。このコマンドレジスタ３０１はＵＳＢコントローラ２０１の動作環境をセットアップするためのレジスタである。このコマンドレジスタ３０１には、ＵＳＢコントローラ２０１に対して、ＵＳＢデバイスを制御するための動作環境を指定するための値がＢＩＯＳまたは他のソフトウェアによってセットされる。ＵＳＢコントローラ２０１は、コマンドレジスタ３０１にセットされた値に対応する制御方法に従って、ＵＳＢデバイスの制御を実行する。コマンドレジスタ３０１は、例えば、ＰＣＩコンフィグレーション空間内にマッピングされたレジスタ（ＰＣＩレジスタ）である。
【００３０】
フラッシュＢＩＯＳ−ＲＯＭ１１８は、上述のＢＩＯＳを格納する不揮発性メモリである。エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１１９は、電源管理のためのエンベデッドコントローラと、キーボード（ＫＢ）１３およびタッチパッド１８などを制御するキーボードコントローラとが集積された１チップマイクロコンピュータである。
【００３１】
エンベデッドコントローラ／キーボードコントローラＩＣ１１９は、電源回路１２０と共同して、ユーザによるパワーボタンスイッチ１５の操作に応じて本コンピュータ１０を電源オン／電源オフする。電源回路１８０は、バッテリ１２１からの電力、またはＡＣアダプタ１２２を介して供給される外部電力を用いて、本コンピュータ１０の各コンポーネントに供給すべきシステム電源を生成する。
【００３２】
次に、図３を参照して、ＢＩＯＳの機能構成について説明する。
【００３３】
ＢＩＯＳは、ＵＳＢレガシーエミュレーション処理実行モジュール４０１、ＰＣＩレジスタアクセス用ファンクションルーチン４０２、ブート処理ルーチン４０３、およびＵＳＢレガシーエミュレーション処理停止制御モジュール４０４等を含んでいる。
【００３４】
ＵＳＢレガシーエミュレーション処理実行モジュール４０１は、上述のＵＳＢレガシーエミュレーション処理を実行する。ユーザは、ＢＩＯＳセットアップ機能を用いて、ＵＳＢレガシーエミュレーション処理実行モジュール４０１の実行を許可または禁止することができる。ＢＩＯＳによってＬＣＤ２０に表示されるセットアップ画面の例を図４に示す。このセットアップ画面は、ＵＳＢレガシーエミュレーション処理を有効にするか否かをユーザに指定させるための画面である。このセットアップ画面上には、“USB LEGACY SUPPORT”の設定項目が表示される。ユーザによって“USB LEGACY SUPPORT”＝ENABLEに設定されると、ＵＳＢレガシーエミュレーション処理実行モジュール４０１の実行が許可され、本コンピュータ１０の電源投入後、ＵＳＢレガシーエミュレーション処理の実行がＢＩＯＳによって自動的に開始される。すなわち、ユーザによって“USB LEGACY SUPPORT”＝ENABLEに設定された場合には、ＵＳＢデバイスを制御するための機能がＢＩＯＳに組み込まれ、ＢＩＯＳは、自ら、ＵＳＢデバイスをアクセスすることが可能となる。
【００３５】
一方、ユーザによって“USB LEGACY SUPPORT”＝DISABLEに設定されると、ＵＳＢレガシーエミュレーション処理実行モジュール４０１の実行が禁止される。この場合、ＢＩＯＳは、ＵＳＢレガシーエミュレーション処理を実行しない。したがって、“USB LEGACY SUPPORT”＝DISABLEに設定されている場合においては、ＢＩＯＳはＵＳＢデバイスを使用することができないので、ＵＳＢデバイスからオペレーティングシステムをブートする処理も実行することができない。
【００３６】
ＰＣＩレジスタアクセス用ファンクションルーチン４０２は、ＰＣＩレジスタをアクセスするためのルーチン（INT 1AH）である。オペレーティングシステム、ドライバプログラムといったソフトウェアの各々は、ＰＣＩレジスタアクセス用ファンクションルーチン４０２を用いて、各種ＰＣＩレジスタに対するアクセスを実行する。上述のコマンドレジスタ３０１もＰＣＩレジスタの一つであるので、ソフトウェアによるコマンドレジスタ３０１へのライトアクセス等も、ＰＣＩレジスタアクセス用ファンクションルーチン４０２を介して実行される。
【００３７】
ブート処理ルーチン４０３は、各種ブートデバイスからオペレーティングシステムをブートするためのブートシーケンスを実行する。ＵＳＢポート３１に接続されるＵＳＢデバイス（ＵＳＢストレージデバイス）もブートデバイスとして使用することができる。
【００３８】
例えば、ユーザによってＵＳＢデバイスが最もブート優先順位の高いデバイスに指定されている場合、またはＵＳＢデバイス以外の他のブートデバイスにオペレーティングシステムが格納されていない場合においては、ブート処理ルーチン４０３は、ＵＳＢレガシーエミュレーション処理実行モジュール４０１によってＵＳＢコントローラ２０１を制御することによって、ＵＳＢデバイス（ＵＳＢストレージデバイス）に格納されているオペレーティングシステムをブートするためのブートシーケンスを実行する。
【００３９】
ＵＳＢレガシーエミュレーション処理停止制御モジュール４０４は、ＵＳＢレガシーエミュレーション処理実行モジュール４０１によるＵＳＢレガシーエミュレーション処理の実行を自動的に停止するための停止制御処理を実行する。停止制御処理においては、ＵＳＢレガシーエミュレーション処理停止制御モジュール４０４は、ＵＳＢコントローラ２０１内のコマンドレジスタ３０１に対するソフトウェアからのライトアクセスを監視し、ライトアクセスの発生が検出された時に、ＵＳＢレガシーエミュレーション処理実行モジュール４０１によるＵＳＢレガシーエミュレーション処理の実行を自動的に停止する。
【００４０】
上述したように、オペレーティングシステムまたはＵＳＢデバイスドライバは、ＵＳＢコントローラ２０１に対するアクセスを開始する前に、ＵＳＢデバイスの制御権の引き渡しをＢＩＯＳに通知するための予め決められた手順を実行することが必要である。しかし、オペレーティングシステム、ＵＳＢデバイスドライバといった既存のソフトウェアの中には、上述の予め決められた手順を実行せずに、ＵＳＢコントローラ２０１に対するアクセスを開始してしまうものもある。この場合、このソフトウェアは、まず、ＵＳＢコントローラ２０１の動作環境を当該ソフトウェア自身がサポートするＵＳＢ制御方式に合った動作環境に設定するために、ＰＣＩレジスタアクセス用ファンクションルーチン４０２を介してコマンドレジスタ３０１に対するライトアクセスを開始する。
【００４１】
ＵＳＢレガシーエミュレーション処理停止制御モジュール４０４は、ＰＣＩレジスタアクセス用ファンクションルーチン４０２を介して行われるコマンドレジスタ３０１へのライトアクセスを監視し、当該ライトアクセスの発生が検出された時に、ＵＳＢレガシーエミュレーション処理を停止する。
【００４２】
この結果、たとえ予め決められた手順を実行せずにＵＳＢデバイスの制御を開始するソフトウェアが本コンピュータ１０にインストールされて実行された場合であっても、ＢＩＯＳによるＵＳＢコントローラ２０１に対するアクセスと当該ソフトウェアによるＵＳＢコントローラ２０１に対するアクセスとの衝突の発生を未然に防止することができる。ユーザは、衝突回避のために、“USB LEGACY SUPPORT”＝DISABLEに設定する必要はない。したがって、ＵＳＢデバイスからのオペレーティングシステムのブートを実行でき、且つ、たとえブートされたオペレーティングシステムまたはそのオペレーティングシステム上で動作するＵＳＢドライバが上述の予め決められた手順を実行せずにＵＳＢコントローラ２０１の制御を開始しても、コントローラ２０１に対するアクセスの衝突に起因するシステム障害の発生を防止することが可能となる。
【００４３】
次に、図５を参照して、ＢＩＯＳのＵＳＢレガシーエミュレーション処理停止制御モジュール４０４によって実行される停止制御処理の例を説明する。
【００４４】
オペレーティングシステム、ＵＳＢドライバのようなソフトウェアは、ＵＳＢコントローラ２０１の動作環境を当該ソフトウェア自身がサポートするＵＳＢ制御方式に合った動作環境に設定するために、ＰＣＩレジスタアクセス用ファンクションルーチン４０２を介してコマンドレジスタ３０１に対するライトアクセスを開始する。
【００４５】
ＢＩＯＳは、このコマンドレジスタ３０１に対するライトアクセスをフックする。もちろん、ＰＣＩレジスタアクセス用ファンクションルーチン４０２を介して実行される全てのＰＣＩレジスタに対するアクセスをフックするようにしてもよい。そして、ＢＩＯＳは、フックしたライトアクセスによってコマンドレジスタ３０１への書き込みが要求された値が、ＢＩＯＳによってコマンドレジスタ３０１に既に設定されている値と異なるか否か、つまりライトアクセスによって書き込みが要求された値が、ＵＳＢコントローラ２０１の動作環境の設定を変更する値であるか否かを判定する。ＵＳＢ制御方式の異なる２つのホスト、つまりＢＩＯＳとソフトウェアとが、同時に動作したならば、ＢＩＯＳによるＵＳＢコントローラ２０１に対するアクセスとソフトウェアによるＵＳＢコントローラ２０１に対するアクセスとが競合し、これによって、ＵＳＢコントローラ２０１は正常に動作することができなくなる。
【００４６】
したがって、ソフトウェアからのライトアクセスによって書き込みが要求された値が、ＵＳＢコントローラ２０１の動作環境の設定を変更する値であるならば、ＢＩＯＳは、即座に、ＵＳＢレガシーエミュレーション処理を停止する。そして、その後で、ＢＩＯＳは、ソフトウェアからのライトアクセスによって書き込みが要求された値を、コマンドレジスタ３０１に書き込む。一方、ソフトウェアからのライトアクセスによって書き込みが要求された値が、ＵＳＢコントローラ２０１の動作環境の設定を変更する値でないならば、ＢＩＯＳは、ＵＳＢレガシーエミュレーション処理を停止せずに、ソフトウェアからのライトアクセスによって書き込みが要求された値を、コマンドレジスタ３０１に書き込む。
【００４７】
以上の処理により、ＵＳＢコントローラ２０１の誤動作を防止でき、且つソフトウェアにＵＳＢデバイスの制御を正常に引き渡すことが可能となる。
【００４８】
次に、図６のフローチャートを参照して、本コンピュータ１０のパワーオンに応答してＢＩＯＳによって実行される処理の手順を説明する。ここでは、ＵＳＢデバイス１０１に格納されているオペレーティングシステムをブートする場合を想定する。
【００４９】
本コンピュータ１０がパワーオンされると、最初に、ＣＰＵ１１１によってＢＩＯＳが実行される。ＢＩＯＳは、最初に、ハードウェア（ノースブリッジおよびサウスブリッジを含むチップセット、ネットワークコントローラ、等）を初期化し（ステップＳ１０１）、次いで主メモリ１１３を初期化する（ステップＳ１０２）。
【００５０】
この後、ＢＩＯＳは、ＵＳＢレガシーエミュレーション処理実行モジュール４０１を実行して、ＵＳＢレガシーエミュレーション処理を開始する（ステップＳ１０３）。そして、ＢＩＯＳは、ＵＳＢレガシーエミュレーション処理によってＵＳＢコントローラ２０１を制御することによって、ＵＳＢデバイス１０１に格納されているオペレーティングシステムをブートする（ステップＳ１０４）。
【００５１】
このステップＳ１０４では、例えば、ＢＩＯＳ内のブート処理ルーチン４０３は、ＵＳＢレガシーエミュレーション処理によってＵＳＢデバイス１０１に対して割り当てられたドライブ番号を指定するディスクアクセス要求等をＵＳＢレガシーエミュレーション処理実行モジュール４０１に発行する。ＵＳＢレガシーエミュレーション処理実行モジュール４０１は、ブート処理ルーチン４０３によって実行される、ハードディスクドライブのような既存のストレージデバイスをアクセスするための手順を、ＵＳＢコントローラ２０１を介してＵＳＢデバイス１０１をアクセスするための手順にエミュレートする。これにより、ＢＩＯＳ内のブート処理ルーチン４０３は、ＵＳＢデバイス１０１からオペレーティングシステムをブートすることができる。このブート処理では、ブート処理ルーチン４０３は、ＵＳＢデバイス１０１のマスターブートレコード（ＭＢＲ）等に格納されている、オペレーティングシステムのブートローダを、主メモリ１１３にロードする。そして、オペレーティングシステムのブートローダがＣＰＵ１１１によって実行されることにより、ＢＩＯＳからオペレーティングシステムに制御が移行される（ステップＳ１０６）。
【００５２】
この後、ＵＳＢレガシーエミュレーション処理実行モジュール４０１は、オペレーティングシステムのブートローダの制御の下、ＵＳＢデバイス１０１に格納されているＵＳＢデバイスドライバを主メモリ１１３にロードする（ステップＳ１０６）。
【００５３】
次に、図７のフローチャートを参照して、ＢＩＯＳのＵＳＢレガシーエミュレーション処理停止制御モジュール４０４によって実行されるＵＳＢレガシーエミュレーション停止制御処理の手順の例を説明する。
【００５４】
ＵＳＢデバイスドライバがロードされると、そのＵＳＢデバイスドライバは、ＵＳＢコントローラ２０１を初期設定するために、ＵＳＢコントローラ２０１のコマンドレジスタ３０１へのライトアクセスを開始する。このコマンドレジスタ３０１へのライトアクセスは、他のＰＣＩレジスタに対するアクセスと同様に、ＢＩＯＳのＰＣＩレジスタアクセス用ファンクションルーチン４０２を介して実行される。
【００５５】
ＢＩＯＳは、ＰＣＩレジスタアクセス用ファンクションルーチン４０２を介して行われる各種ソフトウェアからのＰＣＩレジスタに対するアクセスを監視している。この監視は、上述したように、ＵＳＢレガシーエミュレーション処理停止制御モジュール４０４を用いて実行される。
【００５６】
ソフトウェアがＰＣＩレジスタアクセス用ファンクションルーチン４０２に対してＰＣＩレジスタに対するライトアクセス要求を発行（INT 1AHのＢＩＯＳコール）すると、ＢＩＯＳは、そのライトアクセス要求がコマンドレジスタ３０１に対するライトアクセスを要求するものであるか否かを判別する（ステップＳ２０２）。
【００５７】
ライトアクセス要求がコマンドレジスタ３０１に対するライトアクセスであるならば（ステップＳ２０２のＹＥＳ）、ＢＩＯＳは、ソフトウェアからのライトアクセス要求によって書き込みが要求された値が、ＢＩＯＳによってコマンドレジスタ３０１に既に設定されている値と異なるか否かを判別する（ステップＳ２０３）。
【００５８】
ソフトウェアからのライトアクセス要求によって書き込みが要求された値が、ＢＩＯＳによってコマンドレジスタ３０１に既に設定されている値と異なるならば（ステップＳ２０３のＹＥＳ）、ＢＩＯＳは、ＵＳＢレガシーエミュレーション処理の実行を停止する（ステップＳ２０４）。ＵＳＢレガシーエミュレーション処理の実行を停止した後、ＢＩＯＳは、ソフトウェアからのライトアクセス要求によって書き込みが要求された値をコマンドレジスタ３０１に書き込む（ステップＳ２０５）。
【００５９】
ソフトウェアからのライトアクセス要求がコマンドレジスタ３０１に対するライトアクセスではないならば（ステップＳ２０２のＮＯ）、ＢＩＯＳは、ＵＳＢレガシーエミュレーション処理の実行を停止せずに、ソフトウェアからのライトアクセス要求によって書き込みが要求された値を、当該ライトアクセス要求によって指定されたＰＣＩレジスタに書き込む（ステップＳ２０５）。
【００６０】
また、コマンドレジスタ３０１に対するライトアクセス要求によって書き込みが要求された値が、ＢＩＯＳによってコマンドレジスタ３０１に既に設定されている値と同じであるならば（ステップＳ２０３のＮＯ）、ＢＩＯＳは、ＵＳＢレガシーエミュレーション処理の実行を停止せずに、ソフトウェアからのライトアクセス要求によって書き込みが要求された値をコマンドレジスタ３０１に書き込む（ステップＳ２０５）。
【００６１】
なお、例えば、ステップＳ２０３の処理を省略することもできる。この場合、ＢＩＯＳは、ライトアクセス要求がコマンドレジスタ３０１に対するライトアクセスであるならば（ステップＳ２０２のＹＥＳ）、ステップＳ２０４、およびＳ２０５の処理を順次実行する。
【００６２】
また、ＢＩＯＳは、ＵＳＢコントローラ２０１からの割り込み信号を用いて、ソフトウェアによるコマンドレジスタ３０１に対するライトアクセスを監視することもできる。
【００６３】
図８には、割り込み発生機能を有するＵＳＢコントローラ２０１の構成例が示されている。
【００６４】
ＵＳＢコントローラ２０１は、割り込み発生回路３０２を備えている。割り込み発生回路３０２は、コマンドレジスタ３０１がライトアクセスされたことに応答して、つまりコマンドレジスタ３０１にある値が書き込まれた時に、割り込み信号を発生する。この割り込み信号は、例えば、サウスブリッジ１１５内に設けられた割り込みコントローラを介して、システム管理割り込み（ＳＭＩ）信号のような割り込み信号としてＣＰＵ１１１に送られる。ＣＰＵ１１１に割り込み信号ＳＭＩが入力されると、ＢＩＯＳ（例えば、ＳＭＢＩＯＳ）が実行される。
【００６５】
次に、図９のフローチャートを参照して、ＢＩＯＳによって実行されるＵＳＢレガシーエミュレーション停止制御処理の手順の例を説明する。
【００６６】
ＣＰＵ１１１に割り込み信号ＳＭＩが入力されると、ＢＩＯＳが実行される。ＢＩＯＳは、まず、割り込みコントローラのステータスレジスタ等を参照することによって、割り込み信号ＳＭＩが発生された要因（割り込み要因）をチェックする（ステップＳ３０１）。割り込み要因がＵＳＢコントローラ２０１のコマンドレジスタ３０１へのライトアクセスであるならば（ステップＳ３０２）、ＢＩＯＳは、ＵＳＢレガシーエミュレーション処理の実行を停止する（ステップＳ３０３）。一方、割り込み要因がＵＳＢコントローラ２０１のコマンドレジスタ３０１へのライトアクセス以外の他の要因であれば、ＢＩＯＳは、その要因に対応する処理を実行する（ステップＳ３０４）。
【００６７】
以上のように、本実施形態においては、たとえ予め決められた手順を実行せずにＵＳＢデバイスの制御を開始するソフトウェアが本コンピュータ１０にインストールされて実行された場合であっても、ＢＩＯＳによるＵＳＢコントローラ２０１に対するアクセスと当該ソフトウェアによるＵＳＢコントローラ２０１に対するアクセスとの衝突の発生を未然に防止することができる。このように、ＢＩＯＳ側に衝突回避のための機能を設けることにより、たとえ予め決められた手順を実行せずにＵＳＢデバイスの制御を開始する既存のＵＳＢドライバ等が使用されても、誤動作の発生を防止することができる。
【００６８】
なお、本実施形態では、ＵＳＢデバイスを例示して説明したが、ＵＳＢデバイスのみならず、例えば、ＩＥＥＥ１３９４デバイス等に対しても、同様の制御を適用することができる。
【００６９】
また、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００７０】
【図１】本発明の一実施形態に係る情報処理装置を正面から見た外観を示す斜視図。
【図２】図１の情報処理装置のシステム構成を示すブロック図。
【図３】図１の情報処理装置で使用されるＢＩＯＳの機能構成を示すブロック図。
【図４】図１の情報処理装置で用いられるＢＩＯＳセットアップ画面の例を示す図。
【図５】図３のＢＩＯＳによって実行されるＵＳＢレガシーエミュレーション停止制御処理の例を示すブロック図。
【図６】図１の情報処理装置の電源オン時に図３のＢＩＯＳによって実行される処理の手順の例を示すフローチャート。
【図７】図３のＢＩＯＳによって実行されるＵＳＢレガシーエミュレーション停止制御処理の手順の例を示すフローチャート。
【図８】図１の情報処理装置に設けられたＵＳＢコントローラの構成の例を示すブロック図。
【図９】図３のＢＩＯＳによって実行されるＵＳＢレガシーエミュレーション停止制御処理の手順の他の例を示すフローチャート。
【符号の説明】
【００７１】
１０…コンピュータ、１１…コンピュータ本体、３１，３２…ＵＳＢポート、１０１，１０２…ＵＳＢデバイス、１１１…ＣＰＵ、２０１…ＵＳＢコントローラ、３０１…コマンドレジスタ、４０１…ＵＳＢレガシーエミュレーション処理実行モジュール、４０２…ＰＣＩレジスタアクセス用ファンクションルーチン、４０３…ブート処理ルーチン、４０４…ＵＳＢレガシーエミュレーション処理停止制御モジュール。
【図１】
2008287505.tif 000003
【図２】
2008287505.tif 000004
【図３】
2008287505.tif 000005
【図４】
2008287505.tif 000006
【図５】
2008287505.tif 000007
【図６】
2008287505.tif 000008
【図７】
2008287505.tif 000009
【図８】
2008287505.tif 000010
【図９】
2008287505.tif 000011