(57)【要約】【課題】情報処理装置に接続されているデバイスの構成に変更があった場合でも、情報処理装置の起動の高速化を図る。【解決手段】本発明の情報処理装置は、ファームウェアの実行により実現され、ファームウェアから情報処理装置に接続されているデバイスへのアクセスを可能にするための第１の初期化処理を行う初期化手段と、ＯＳの実行により実現され、ＯＳからデバイスへのアクセスを可能にするための第２の初期化処理を行う制御手段と、主記憶手段と、を有する情報処理装置であって、初期化手段は、第１の初期化処理において、デバイスにアクセスするために必要なデバイス制御情報を設定するデバイス初期化手段と、デバイス初期化手段が設定したデバイス制御情報を含む初期化情報を主記憶手段に格納する初期化情報格納手段と、を有し、制御手段は、第２の初期化処理において、デバイスの初期化情報を主記憶手段から取得するデバイス情報適用手段を有する。【選択図】図１
2009193301.tif 000002
【特許請求の範囲】
【請求項１】
ファームウェアの実行により実現され、前記ファームウェアから情報処理装置に接続されているデバイスへのアクセスを可能にするための第１の初期化処理を行う初期化手段と、前記ファームウェアの実行後、オペレーティングシステムの実行により実現され、前記オペレーティングシステムから前記デバイスへのアクセスを可能にするための第２の初期化処理を行う制御手段と、主記憶手段と、を有する情報処理装置であって、
前記初期化手段は、
前記第１の初期化処理において、該第１の初期化処理の対象となるデバイスにアクセスするために必要なデバイス制御情報を設定するデバイス初期化手段と、
前記デバイス初期化手段が設定した前記デバイス制御情報を含む初期化情報を前記主記憶手段に格納する初期化情報格納手段と、を有し、
前記制御手段は、前記第２の初期化処理において、該第２の初期化処理の対象となるデバイスの初期化情報を前記主記憶手段から取得するデバイス情報適用手段を有することを特徴とする情報処理装置。
【請求項２】
前記デバイス初期化手段は、前記第１の初期化処理において、該第１の初期化処理の対象となるデバイスのデバイス名を取得し、
前記初期化情報格納手段は、前記デバイス初期化手段が取得したデバイス名を前記初期化情報に追加して前記主記憶手段に格納し、
前記制御手段は、前記第２の初期化処理において、該第２の初期化処理の対象となるデバイスのデバイス名を取得するデバイス認識手段をさらに有し、
前記デバイス情報適用手段は、前記デバイス認識手段が取得したデバイス名と前記主記憶手段から取得した前記初期化情報に含まれるデバイス名とが一致する場合、該初期化情報を、前記第２の初期化処理の対象となるデバイスの初期化情報として初期化情報リストに登録する、請求項１に記載の情報処理装置。
【請求項３】
前記デバイス認識手段は、前記第２の初期化処理において、前記デバイス認識手段が取得したデバイス名と前記主記憶手段から取得した前記初期化情報に含まれるデバイス名とが一致しない場合、前記第２の初期化処理の対象となるデバイスの前記デバイス制御情報を設定し、該デバイスのデバイス名と前記デバイス制御情報を含む初期化情報を前記初期化情報リストに登録する、請求項２に記載の情報処理装置。
【請求項４】
前記制御手段は、前記第２の初期化処理において、前記主記憶手段から前記初期化情報を取得しないデバイスのデバイス名が記載されたデバイス非初期化判定リストに、前記第２の初期化処理の対象となるデバイスのデバイス名が記載されているかを判定するデバイス初期化判定手段をさらに有し、
前記デバイス認識手段は、前記デバイス非初期化判定リストに前記第２の初期化処理の対象となるデバイスのデバイス名が記載されている場合、該デバイスの前記デバイス制御情報を設定し、該デバイスのデバイス名と前記デバイス制御情報を含む初期化情報を前記初期化情報リストに登録する、請求項３に記載の情報処理装置。
【請求項５】
前記デバイス情報適用手段は、前記第２の初期化処理において、前記デバイス非初期化判定リストに該第２の初期化処理の対象となるデバイスのデバイス名が記載されていない場合、前記主記憶領域から該デバイスの初期化情報を取得する、請求項４に記載の情報処理装置。
【請求項６】
前記主記憶手段は、前記初期化情報を格納するための初期化情報格納領域を有し、
前記初期化情報格納手段は、前記初期化情報を前記初期化情報格納領域に格納するとともに、前記初期化情報格納領域の位置情報を前記主記憶手段上の各領域の位置情報である主記憶領域情報として格納し、
前記初期化手段は、前記主記憶領域情報を前記制御手段に提供する主記憶領域情報提供手段をさらに有し、
前記制御手段は、前記第２の初期化処理において、前記主記憶領域情報提供手段が提供する前記主記憶領域情報を取得する主記憶領域情報取得手段をさらに有し、
前記デバイス情報適用手段は、前記主記憶領域情報取得手段が取得した前記主記憶領域情報から前記初期化情報格納領域の位置情報を抽出し、抽出した位置情報を用いて前記主記憶手段上の前記初期化情報格納領域の位置を特定し、位置を特定した前記初期化情報格納領域から前記初期化情報を取得する、請求項５に記載の情報処理装置。
【請求項７】
ファームウェアの実行により実現され、前記ファームウェアから情報処理装置に接続されているデバイスへのアクセスを可能にするための第１の初期化処理を行う初期化手段と、前記ファームウェアの実行後、オペレーティングシステムの実行により実現され、前記オペレーティングシステムから前記デバイスへのアクセスを可能にするための第２の初期化処理を行う制御手段と、主記憶手段と、を有する情報処理装置が行うデバイス初期化方法であって、
前記初期化手段が、
前記第１の初期化処理において、該第１の初期化処理の対象となるデバイスにアクセスするために必要なデバイス制御情報を設定する第１デバイス初期化ステップと、
前記第１デバイス初期化ステップで設定した前記デバイス制御情報を含む初期化情報を前記主記憶手段に格納する格納ステップと、を有し、
前記制御手段が、前記第２の初期化処理において、該第２の初期化処理の対象となるデバイスの初期化情報を前記主記憶手段から取得する第２デバイス初期化ステップを有することを特徴とするデバイス初期化方法。
【請求項８】
前記第１デバイス初期化ステップにおいて、前記第１の初期化処理の対象となるデバイスのデバイス名を取得し、
前記格納ステップにおいて、前記第１デバイス初期化ステップで取得したデバイス名を前記初期化情報に追加して前記主記憶手段に格納し、
前記制御手段が、前記第２の初期化処理において、該第２の初期化処理の対象となるデバイスのデバイス名を取得するデバイス名取得ステップを有し、
前記第２デバイス初期化ステップにおいて、前記デバイス名取得ステップで取得したデバイス名と前記主記憶手段から取得した前記初期化情報に含まれるデバイス名とが一致する場合、該初期化情報を、前記第２の初期化処理の対象となるデバイスの初期化情報として初期化情報リストに登録する、請求項７に記載のデバイス初期化方法。
【請求項９】
前記第２デバイス初期化ステップにおいて、前記デバイス名取得ステップで取得したデバイス名と前記主記憶手段から取得した前記初期化情報に含まれるデバイス名とが一致しない場合、前記第２の初期化処理の対象となるデバイスの前記デバイス制御情報を設定し、該デバイスのデバイス名と前記デバイス制御情報を含む初期化情報を前記初期化情報リストに登録する、請求項８に記載のデバイス初期化方法。
【請求項１０】
前記制御手段が、
前記第２の初期化処理において、前記主記憶手段から前記初期化情報を取得しないデバイスのデバイス名が記載されたデバイス非初期化判定リストに、前記第２の初期化処理の対象となるデバイスのデバイス名が記載されているかを判定するデバイス初期化判定ステップと、
前記デバイス初期化判定ステップにおいて、前記デバイス非初期化判定リストに前記第２の初期化処理の対象となるデバイスのデバイス名が記載されている場合、該デバイスの前記デバイス制御情報を設定し、該デバイスのデバイス名と前記デバイス制御情報を含む初期化情報を前記初期化情報リストに登録する通常初期化ステップと、を有する、請求項９に記載のデバイス初期化方法。
【請求項１１】
前記デバイス初期化判定ステップにおいて、前記デバイス非初期化判定リストに前記第２の初期化処理の対象となるデバイスのデバイス名が記載されていない場合、前記第２デバイス初期化ステップを行う、請求項１０に記載のデバイス初期化方法。
【請求項１２】
前記格納ステップにおいて、前記初期化情報を前記主記憶手段上の初期化情報格納領域に格納するとともに、該初期化情報格納領域の位置情報を前記主記憶手段上の各領域の位置情報である主記憶領域情報として格納し、
前記制御手段が、前記第２の初期化処理において、前記初期化手段から前記主記憶領域情報を取得する主記憶領域情報取得ステップをさらに有し、
前記第２デバイス初期化ステップにおいて、前記主記憶領域情報取得ステップで取得した前記主記憶領域情報から前記初期化情報格納領域の位置情報を抽出し、抽出した位置情報を用いて前記主記憶手段上の前記初期化情報格納領域の位置を特定し、位置を特定した前記初期化情報格納領域から前記初期化情報を取得する、請求項１１に記載のデバイス初期化方法。
【請求項１３】
情報処理装置に、
ファームウェアの実行により実現され、前記ファームウェアから情報処理装置に接続されているデバイスへのアクセスを可能にするための第１の初期化処理において、該第１の初期化処理の対象となるデバイスにアクセスするために必要なデバイス制御情報を設定する第１デバイス初期化手順と、
前記第１デバイス初期化手順で設定した前記デバイス制御情報を含む初期化情報を主記憶手段に格納する格納手順と、を前記ファームウェアにより実行させ、
オペレーティングシステムから前記デバイスへのアクセスを可能にするための第２の初期化処理において、該第２の初期化処理の対象となるデバイスの初期化情報を前記主記憶手段から取得する第２デバイス初期化手順を前記オペレーティングシステムにより実行させることを特徴とするデバイス初期化プログラム。
【請求項１４】
前記第１デバイス初期化手順において、前記第１の初期化処理の対象となるデバイスのデバイス名を取得し、
前記格納手順において、前記第１デバイス初期化手順で取得したデバイス名を前記初期化情報に追加して前記主記憶手段に格納し、
前記第２の初期化処理において、該第２の初期化処理の対象となるデバイスのデバイス名を取得するデバイス名取得手順を前記オペレーティングシステムにより実行させ、
前記第２デバイス初期化手順において、前記デバイス名取得ステップで取得したデバイス名と前記主記憶手段から取得した前記初期化情報に含まれるデバイス名とが一致する場合、該初期化情報を、前記第２の初期化処理の対象となるデバイスの初期化情報として初期化情報リストに登録する、請求項１３に記載のデバイス初期化プログラム。
【請求項１５】
前記第２デバイス初期化手順において、前記デバイス名取得手順で取得したデバイス名と前記主記憶手段から取得した前記初期化情報に含まれるデバイス名とが一致しない場合、前記第２の初期化処理の対象となるデバイスの前記デバイス制御情報を設定し、該デバイスのデバイス名と前記デバイス制御情報を含む初期化情報を前記初期化情報リストに登録する、請求項１４に記載のデバイス初期化プログラム。
【請求項１６】
前記第２の初期化処理において、前記主記憶手段から前記初期化情報を取得しないデバイスのデバイス名が記載されたデバイス非初期化判定リストに、前記第２の初期化処理の対象となるデバイスのデバイス名が記載されているかを判定するデバイス初期化判定手順と、
前記デバイス初期化判定手順において、前記デバイス非初期化判定リストに前記第２の初期化処理の対象となるデバイスのデバイス名が記載されている場合、該デバイスの前記デバイス制御情報を設定し、該デバイスのデバイス名と前記デバイス制御情報を含む初期化情報を前記初期化情報リストに登録する通常初期化手順と、を前記オペレーティングシステムにより実行させる、請求項１５に記載のデバイス初期化プログラム。
【請求項１７】
前記デバイス初期化判定手順において、前記デバイス非初期化判定リストに前記第２の初期化処理の対象となるデバイスのデバイス名が記載されていない場合、前記第２デバイス初期化手順を前記オペレーティングシステムにより実行させる、請求項１６に記載のデバイス初期化プログラム。
【請求項１８】
前記格納手順において、前記初期化情報を前記主記憶手段上の初期化情報格納領域に格納するとともに、該初期化情報格納領域の位置情報を前記主記憶手段上の各領域の位置情報である主記憶領域情報として格納し、
前記第２の初期化処理において、前記主記憶領域情報を取得する主記憶領域情報取得手順を前記オペレーティングシステムにより実行させ、
前記第２デバイス初期化手順において、前記主記憶領域情報取得手順で取得した前記主記憶領域情報から前記初期化情報格納領域の位置情報を抽出し、抽出した位置情報を用いて前記主記憶手段上の前記初期化情報格納領域の位置を特定し、位置を特定した前記初期化情報格納領域から前記初期化情報を取得する、請求項１７に記載のデバイス初期化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理装置におけるデバイス初期化方法、およびデバイス初期化プログラムに関し、特にファームウェアによりＯＳ実行前に実行されたデバイスの初期化処理により取得した初期化情報を用いることで、ＯＳによるデバイスの初期化処理の一部を省略する技術に関する。
【背景技術】
【０００２】
ハードディスク、グラフィックカード、ネットワークカードなど多くのデバイスは、情報処理装置からのアクセスを可能にするためには、情報処理装置において初期化処理を行うが必要がある。
【０００３】
情報処理装置におけるデバイスの初期化処理とは、デバイスの接続状況を確認し、デバイスにＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）ポート番号やＩＲＱ（Ｉｎｔｅｒｒｕｐｔ  ＲｅＱｕｅｓｔ）番号などの重要な資源を割り当て、デバイス固有のレジスタにレジスタ情報を設定することにより、デバイスを情報処理装置からアクセスが可能な状態にすることである。
【０００４】
ここで、デバイスの接続状況の確認とは、情報処理装置に接続されているデバイスを検出し、検出したデバイスのデバイス名などの基本的な情報を取得する処理である。なお、デバイスの検出方法はデバイスによって異なる。
【０００５】
Ｉ／Ｏポート番号とは、情報処理装置から各デバイスに割り当てられるデバイスの識別番号である。
【０００６】
ＩＲＱとは、デバイスに何らかの状態の変化が生じた場合、デバイスが情報処理装置のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）に対してその変化を通知するための電気信号である。ＩＲＱ番号とは、ＣＰＵに対して状態の変化を通知した時にどのデバイスがその通知を行っているかを識別するための識別番号である。
【０００７】
なお、情報処理装置がデバイスへアクセスする際には、ｉｎｂ，ｏｕｔｂ等のオペコードに対して、Ｉ／Ｏポート番号や、デバイスへのアクセスの際に必要となるデータの格納場所をオペランドとして指定することにより、デバイスへのデータの入出力などを行う。
【０００８】
この様に、情報処理装置は、接続されているデバイスに対しＩ／Ｏポート番号やＩＲＱ番号を割り当てることにより、そのデバイスを認識出来るようになり、デバイスに割り当てたＩ／Ｏポート番号やＩＲＱ番号を指定することにより、デバイスへのアクセスが可能となる。
【０００９】
通常の情報処理装置では、上述したデバイスの初期化処理は、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）等のファームウェアと、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ：オペレーティングシステム）と、でそれぞれ行われる。
【００１０】
ファームウェアにおいては、ファームウェアから情報処理装置に接続されているデバイスへのアクセスを可能にするためにデバイスの初期化処理（第１の初期化処理）が行われる。ファームウェアでは、例えばパーソナルコンピューターであれば、ディスクデバイスやキーボード、マウスやビデオカードなど、情報処理装置の基本的な機能を実現するためのデバイスの初期化処理が行われる。なお、ファームウェアとは、情報処理装置に電源が入れられてから最初に実行されるプログラムであり、情報処理装置のハードウェアの故障の確認および上述したデバイスの初期化処理を行い、その後、ハードディスクなどの不揮発性記憶媒体からＯＳをメモリにロードし、ＯＳを実行するなどの役割を持つ。
【００１１】
一方、ＯＳにおいては、ＯＳもしくはＯＳ上で動作するユーザアプリケーションから情報処理装置に接続されているデバイスへのアクセスを可能にするためにデバイスの初期化処理（第２の初期化処理）が行われる。ＯＳでは、例えばパーソナルコンピューターであればＯＳが有する各デバイスドライバに対応するデバイスなど、ＯＳが使用するデバイスの初期化処理が行われる。
【００１２】
この様に、情報処理装置の起動時にデバイスの初期化処理をファームウェアとＯＳとで合計２回行う必要があるため、初期化処理に時間がかかるデバイスが情報処理装置に接続されている場合、情報処理装置の起動に時間がかかってしまう。
【００１３】
初期化処理かかる時間は、デバイスの種類に依存し、初期化処理に時間がかかるデバイスの具体例としては、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）を用いて接続されるＳＣＳＩデバイスが挙げられる。なお、ＳＣＳＩとは、情報処理装置とデバイス間でデータのやりとりを行うためのインターフェース（規格）である。
【００１４】
情報処理装置は、接続されているＳＣＳＩデバイスを識別するために、上述したＩ／Ｏポート番号の代わりに、ＳＣＳＩ-ＩＤと呼ばれるＳＣＳＩデバイスにあらかじめ設定されている識別番号を利用する。なお、ＳＣＳＩ−ＩＤは、各ＳＣＳＩデバイスに設置されたジャンパスイッチを操作することにより設定することが出来る。
【００１５】
情報処理装置は、接続されているＳＣＳＩデバイスの初期化処理において、各ＳＣＳＩ−ＩＤを順番に指定し、ＳＣＳＩバスへ特殊な信号を送信する。
【００１６】
指定したＳＣＳＩ−ＩＤを持つＳＣＳＩデバイスが存在する場合、そのＳＣＳＩデバイスは情報処理装置に対して返答を行い、情報処理装置はＳＣＳＩデバイスからの返答によりそのＳＣＳＩ−ＩＤを持つＳＣＳＩデバイスが接続されていることを検出し、認識することが出来る。
【００１７】
一方、指定したＳＣＳＩ−ＩＤを持つＳＣＳＩデバイスが存在しない場合、情報処理装置はあらかじめ設定された一定時間が経過するまでＳＣＳＩデバイスからの返答を待ち、返答がない場合、そのＳＣＳＩ−ＩＤを持つＳＣＳＩデバイスは接続されていないと判断する。
【００１８】
この様に、情報処理装置は、ＳＣＳＩデバイスの初期化処理において、上述したＳＣＳＩデバイスを認識するための処理を全てのＳＣＳＩ−ＩＤに対して順番に行い、デバイスが存在しないＳＣＳＩ−ＩＤを指定するたびに一定時間の待ち時間が発生するため、ＳＣＳＩデバイスの初期化処理には非常に時間がかかってしまう（非特許文献１参照）。
【００１９】
上述したように、情報処理装置からデバイスへのアクセスを可能な状態にするためには、情報処理装置の起動時にデバイスの初期化処理を行う必要がある。しかし、情報処理装置に接続されているデバイスの構成に前回起動したときと変更が無い場合、デバイスの初期化処理のうち一部の処理が必要ない場合が存在する。
【００２０】
例えば、情報処理装置に接続されたデバイスは、情報処理装置から割り当てられたＩ／Ｏポート番号やＩＲＱ番号を、そのデバイスが情報処理装置から切り離されるか、情報処理装置に新たなデバイスが接続され情報処理装置に接続されたデバイスの構成に変更が生じるまで使い続ける。
【００２１】
また、ＳＣＳＩ−ＩＤのようにあらかじめデバイスに設定されているなど、デバイス固有のレジスタに設定するレジスタ情報が情報処理装置の起動時に毎回決定される情報ではない場合、すなわち、一度値が決められたら情報処理装置から切り離されるまで変更がないような情報の場合、デバイスは、デバイス固有のレジスタ情報も同一のものを使い続ける。
【００２２】
したがって、接続されているデバイスの構成に変更がない場合、Ｉ／Ｏポート番号や、ＩＲＱ番号や、デバイス固有のレジスタ情報などの、情報処理装置がデバイスにアクセスするために必要なデバイス制御情報が変更されないため、再度デバイスの初期化処理を行う際には、前回設定したデバイス制御情報を再利用すれば、デバイス制御情報を設定する処理（デバイス認識処理）を行う必要がなくなる。
【００２３】
この様な特徴を利用して、情報処理装置に接続されているデバイスの構成に変更がない場合、一度デバイスに設定したデバイス制御情報を不揮発性記憶媒体に格納しておき、再度デバイスの初期化処理を行う際に、不揮発性記憶媒体に格納されているデバイス制御情報を用いることで、デバイスの初期化処理からデバイス認識処理を省略する方法が存在する。
【００２４】
この方法を用いた例として、特許文献１には、ＢＩＯＳにおけるデバイスの初期化処理において、一度デバイスに設定したデバイス制御情報を含むデバイス情報をフラッシュＢＩＯＳ−ＲＯＭに格納しておき、再度デバイスの初期化処理を行う際にフラッシュＢＩＯＳ−ＲＯＭに格納しておいたデバイス情報を用いることで、デバイス認識処理を省略する技術が記載されている。
【００２５】
以下に、特許文献１に記載されている、デバイス認識処理を省略する技術を用いたシステムの構成および動作について、図１４のブロック図と、図１５および図１６のフローチャートと、を用いて説明する。
【００２６】
はじめに、このシステムの構成について説明する。図１４に示すように、特許文献１に記載されているシステムは、フラッシュＢＩＯＳメモリ１０００を有しており、情報処理装置の起動時に、ＢＩＯＳにおけるデバイスの初期化処理において、フラッシュＢＩＯＳメモリ１０００内にメモリ情報１００１やドライブ情報１００２など各デバイスのデバイス情報を格納しておき、再度ＢＩＯＳがデバイスの初期化処理を行う際に、格納しておいたデバイス情報を使用する。
【００２７】
以下、特許文献１に記載されている技術を用いたシステムの動作を説明する。
【００２８】
図１５のフローチャートを参照すると、まず、情報処理装置に電源が入れられる（電源オン）（Ｓ３６）。
【００２９】
次にＥＣ／ＫＢＣからウェイクアップ要因を取得する(Ｓ３７)。ＥＣ／ＫＢＣとは電源が押されていた時間を計測し、その長さによってウェイクアップ要因が、簡易ＰＯＳＴ処理か通常のＰＯＳＴ処理かを区別する。ＰＯＳＴ処理とは電源が入れられた後、自動的に行われる処理の集合を指す。このＰＯＳＴ処理にはＢＩＯＳによるデバイスの初期化処理も含まれる。
【００３０】
次に、取得したウェイクアップ要因が簡易ＰＯＳＴ処理か通常のＰＯＳＴ処理かを判断する（Ｓ３８）。
【００３１】
取得したウェイクアップ要因が、簡易ＰＯＳＴ処理ならば（Ｓ３８のＹＥＳ）、フラッシュＢＩＯＳ−ＲＯＭ１０００に簡易ＰＯＳＴ処理のフラグをセットする（Ｓ３９）。
【００３２】
一方、通常のＰＯＳＴ処理ならば（Ｓ３８のＮＯ）、フラグのセットはせずに、メモリデバイスの初期化処理をスタートする（Ｓ４０）。
【００３３】
次に、フラッシュＢＩＯＳ−ＲＯＭ１０００にフラグがセットされているかを確認する（Ｓ４１）。
【００３４】
フラッシュＢＩＯＳ−ＲＯＭ１０００に、フラグがセットされていなければ（Ｓ４１のＮＯ）、フラッシュＢＩＯＳ−ＲＯＭ１０００に格納されている、メモリデバイスのデバイス情報である、メモリ情報１００１に従って、メモリの初期化処理を行う（Ｓ４２）。
【００３５】
一方、フラグがセットされていれば（Ｓ４１のＹＥＳ）、メモリデバイスからメモリ情報１００１を取得（リード）し、取得したメモリ情報に従って、メモリデバイスの初期化処理を行い（Ｓ４３）、フラッシュＢＩＯＳ−ＲＯＭ１０００にメモリデバイスから取得したメモリ情報１００１を格納する（Ｓ４４）。
【００３６】
以上の処理により、メモリデバイスの初期化処理が終了する（Ｓ４５）。
【００３７】
次に、図１６のフローチャートへと処理が移り、ドライブデバイスの初期化処理がスタートする（Ｓ４６）。
【００３８】
次に、フラッシュＢＩＯＳ−ＲＯＭ１０００にフラグがセットされているかを確認し（Ｓ４７）、フラグがセットされていれば（Ｓ４７のＹＥＳ）、フラッシュＢＩＯＳ−ＲＯＭ１０００に格納されている、ドライブデバイスのデバイス情報であるドライブ情報１００２に従ってドライブデバイスの初期化処理を行う（Ｓ４８）。
【００３９】
一方、フラグがセットされていなければ（Ｓ４７のＮＯ）、ドライブデバイスからドライブ情報１００２を取得（リード）し、取得したドライブ情報１００２に従ってドライブデバイスの初期化処理を行い（Ｓ４９）、ドライブデバイスから取得したドライブ情報１００２をフラッシュＢＩＯＳ−ＲＯＭ１０００に格納する（Ｓ５０）。
【００４０】
その後、ＢＩＯＳは、ドライブデバイス初期化処理を終了し（Ｓ５１）、ＯＳを起動する（Ｓ５２）。
【００４１】
特許文献１に記載されている技術においては、この様な動作によりＢＩＯＳにおけるデバイスの初期化処理からデバイス認識処理を省略している。
【００４２】
また、特許文献２には、ＯＳの初期化処理において、ＯＳの初期化処理が完了した時点でのメモリイメージを不揮発性記憶媒体に格納しておき、再度ＯＳの初期化処理を行う際に、格納しておいたメモリイメージをメモリに展開することで、デバイス認識処理を含む様々な処理をＯＳの初期化処理から省略する技術が記載されている。
【００４３】
この様に、ファームウェアやＯＳにおけるデバイスの初期化処理から、デバイス制御情報を設定するデバイス認識処理を省略することが可能な場合、情報処理装置の起動の高速化を図ることが出来る。
【特許文献１】特開２００６−２５９９０３号公報
【特許文献２】特開２００５−２８４４９１号公報
【非特許文献１】菅谷誠一著「ＳＣＳＩ−２詳細解説」ＣＱ出版株式会社、１９９４年８月１５日、ｐｐ．４７−５３
【発明の開示】
【発明が解決しようとする課題】
【００４４】
しかし、特許文献１や特許文献２に記載されている技術には、以下のような問題が存在する。
【００４５】
特許文献１や特許文献２に記載されている技術は、一度取得したデバイス情報は情報処理装置に接続されているデバイスの構成に変更が無い限りにおいて再利用が可能であるといった特徴を利用して、ファームウェアもしくはＯＳにおけるデバイスの初期化処理にかかる時間を短縮し、情報処理装置の起動の高速化を図っている。
【００４６】
そのため、これらの技術では、情報処理装置に接続されているデバイスの構成に変更が生じた場合、情報処理装置の起動の高速化を図ることが出来ないという課題が存在する。
【００４７】
本発明の目的は、上述した課題を解決することが出来る情報処理装置、情報処理装置におけるデバイス初期化方法、およびデバイス初期化プログラムを提供することにある。
【課題を解決するための手段】
【００４８】
上記目的を達成するために本発明の情報処理装置は、
ファームウェアの実行により実現され、前記ファームウェアから情報処理装置に接続されているデバイスへのアクセスを可能にするための第１の初期化処理を行う初期化手段と、前記ファームウェアの実行後、オペレーティングシステムの実行により実現され、前記オペレーティングシステムから前記デバイスへのアクセスを可能にするための第２の初期化処理を行う制御手段と、主記憶手段と、を有する情報処理装置であって、
前記初期化手段は、
前記第１の初期化処理において、該第１の初期化処理の対象となるデバイスにアクセスするために必要なデバイス制御情報を設定するデバイス初期化手段と、
前記デバイス初期化手段が設定した前記デバイス制御情報を含む初期化情報を前記主記憶手段に格納する初期化情報格納手段と、を有し、
前記制御手段は、前記第２の初期化処理において、該第２の初期化処理の対象となるデバイスの初期化情報を前記主記憶手段から取得するデバイス情報適用手段を有することを特徴とする。
【００４９】
上記目的を達成するために本発明のデバイス初期化処理省略方法は、
ファームウェアの実行により実現され、前記ファームウェアから情報処理装置に接続されているデバイスへのアクセスを可能にするための第１の初期化処理を行う初期化手段と、前記ファームウェアの実行後、オペレーティングシステムの実行により実現され、前記オペレーティングシステムから前記デバイスへのアクセスを可能にするための第２の初期化処理を行う制御手段と、主記憶手段と、を有する情報処理装置が行うデバイス初期化方法であって、
前記初期化手段が、
前記第１の初期化処理において、該第１の初期化処理の対象となるデバイスにアクセスするために必要なデバイス制御情報を設定する第１デバイス初期化ステップと、
前記第１デバイス初期化ステップで設定した前記デバイス制御情報を含む初期化情報を前記主記憶手段に格納する格納ステップと、を有し、
前記制御手段が、前記第２の初期化処理において、該第２の初期化処理の対象となるデバイスの初期化情報を前記主記憶手段から取得する第２デバイス初期化ステップを有することを特徴とする。
【００５０】
上記目的を達成するために本発明のデバイス初期化処理省略プログラムは、
情報処理装置に、
ファームウェアの実行により実現され、前記ファームウェアから情報処理装置に接続されているデバイスへのアクセスを可能にするための第１の初期化処理において、該第１の初期化処理の対象となるデバイスにアクセスするために必要なデバイス制御情報を設定する第１デバイス初期化手順と、
前記第１デバイス初期化手順で設定した前記デバイス制御情報を含む初期化情報を主記憶手段に格納する格納手順と、を前記ファームウェアにより実行させ、
オペレーティングシステムから前記デバイスへのアクセスを可能にするための第２の初期化処理において、該第２の初期化処理の対象となるデバイスの初期化情報を前記主記憶手段から取得する第２デバイス初期化手順を前記オペレーティングシステムにより実行させることを特徴とするデバイス初期化プログラム。
【発明の効果】
【００５１】
本発明の情報処理装置によれば、ファームウェアの実行により実現される初期化手段は、第１の初期化処理において、第１の初期化処理の対象となるデバイスのデバイス制御情報を設定し、設定したデバイス制御情報を含む初期化情報を主記憶手段に格納し、オペレーティングシステムの実行により実現される制御手段は、第２の初期化処理において、第２の初期化処理の対象となるデバイスの初期化情報を主記憶手段から取得する構成となっている。
【００５２】
したがって、情報処理装置に接続されているデバイスの構成に変更があった場合でも、初期化手段は、第１の初期化処理において、デバイスの構成の変更内容を反映した初期化情報を取得して主記憶手段に格納することが出来るため、制御手段は、第２の初期化処理において、主記憶手段から取得した初期化情報を用いてデバイスの初期化処理を行うことにより、第２の初期化処理からデバイス制御情報を設定する処理を省略することが出来る。
【００５３】
これにより、情報処理装置に接続されているデバイスの構成に変更があった場合でも、情報処理装置の起動の高速化を図ることが出来るという効果が得られる。
【発明を実施するための最良の形態】
【００５４】
以下に、本発明を実施するための最良の形態について図面を参照して説明する。
【００５５】
（第１の実施形態）
図１に、本発明の第１の実施形態の情報処理装置の構成を示す。
【００５６】
図１に示すように、本実施形態の情報処理装置は、初期化手段１００と、主記憶手段２００と、制御手段３００、とを有している。また、初期化手段１００はデバイス初期化手段１０２と初期化情報格納手段１０３を有しており、制御手段３００はデバイス情報適用手段を有しているものとする。
【００５７】
初期化手段１００は、情報処理装置に電源が入れられファームウェアが実行されることにより実現される。ファームウェアはＯＳの実行前に実行されるため、初期化手段１００における処理は全てＯＳの実行前に行われる。
【００５８】
初期化手段１００は、まず、情報処理装置のハードウェアの故障を診断し、その後、ファームウェアから情報処理装置に接続されているデバイスへのアクセスを可能にするためにデバイス初期化手段１０２によりデバイスの初期化処理（第１の初期化処理）を行う。初期化手段１００においては、例えば、パーソナルコンピューターであればディスクデバイスやキーボード、マウスやビデオカードなど、情報処理装置の基本的な機能を実現するためのデバイスの初期化処理を行う。
【００５９】
デバイス初期化手段１０２は、初期化手段１００におけるデバイスの初期化処理において、初期化処理の対象となるデバイスにアクセスするために必要な、Ｉ／Ｏポート番号や、ＩＲＱ番号や、デバイス固有のレジスタ情報などのデバイス制御情報を設定するデバイス認識処理を行う。
【００６０】
初期化情報格納手段１０３は、デバイス初期化手段１０２が設定したデバイス制御情報を含む初期化情報５００を主記憶手段２００に格納する。
【００６１】
主記憶手段２００は、情報処理装置が有する主たる記憶手段であり、本実施形態においては初期化情報格納領域１０３が初期化情報５００を格納するための手段として用いる。
【００６２】
制御手段３００は、初期化手段１００によるデバイスの初期化処理後に、ＯＳが実行されることで実現される。制御手段３００は、ＯＳから情報処理装置に接続されているデバイスへのアクセスを可能にするために、デバイス情報適用手段３０６によりデバイスの初期化処理（第２の初期化処理）を行う。なお、制御手段３００においては、ＯＳが使用するデバイスの初期化処理が行われる
デバイス情報適用手段３０６は、制御手段３００におけるデバイスの初期化処理において、主記憶手段２００から初期化情報５００を取得する。これにより、デバイス情報適用手段３０６は、取得した初期化情報５００を用いることで、デバイスの初期化処理から、デバイス制御情報を設定する処理、つまりデバイス認識処理を省略することが出来る。
【００６３】
次に、図２のフローチャートを参照して本実施形態の動作について説明する。
【００６４】
まず、デバイス初期化手段１０２は、デバイスの初期化処理を行う（Ｓ１）。デバイス初期化手段１０２は、デバイスの初期化処理において、初期化手段１００において初期化処理の対象となるデバイスのデバイス認識処理を行い、デバイス制御情報を設定する。
【００６５】
次に、初期化情報格納手段１０３は、デバイス初期化手段１０２が設定したいデバイス制御情報を含む初期化情報５００を主記憶手段２００に格納する（Ｓ２）。
【００６６】
次に、デバイス情報適用手段３０６は、制御手段３００におけるデバイスの初期化処理において、主記憶手段２００に格納されている初期化情報５００を取得する（Ｓ３）。
【００６７】
その後、デバイス情報適用手段３０６は、取得した初期化情報５００を用いて、制御手段３００において初期化処理の対象となるデバイスの初期化処理を行う（Ｓ４）。
【００６８】
これにより、デバイス情報適用手段３０６は、制御手段３００におけるデバイスの初期化処理から、デバイス認識処理を省略することが出来る。
【００６９】
次に、本実施形態の効果について説明する。
【００７０】
上述したように、本実施形態の情報処理装置においては、ファームウェアの実行により実現される初期化手段１００は、第１の初期化処理において、第１の初期化処理の対象となるデバイスのデバイス制御情報を設定し、設定したデバイス制御情報を含む初期化情報５００を主記憶手段２００に格納し、オペレーティングシステムの実行により実現される制御手段３００は、第２の初期化処理において、第２の初期化処理の対象となるデバイスの初期化情報５００を主記憶手段２００から取得する構成となっている。
【００７１】
したがって、情報処理装置に接続されているデバイスの構成に変更があった場合でも、初期化手段１００は、第１の初期化処理において、デバイスの構成の変更内容を反映した初期化情報５００を取得して主記憶手段２００に格納することが出来るため、制御手段３００は、第２の初期化処理において、主記憶手段２００から取得した初期化情報５００を用いてデバイスの初期化処理を行うことにより、第２の初期化処理からデバイス制御情報を設定する処理を省略することが出来る。
【００７２】
これにより、情報処理装置に接続されているデバイスの構成に変更があった場合でも、情報処理装置の起動の高速化を図ることが出来るという効果が得られる。
【００７３】
（第２の実施形態）
図３に、本発明の第２の実施形態の情報処理装置の構成を示す。
【００７４】
図３に示すように、本実施形態の情報処理装置は、図１に示した第１の実施形態と比較して、初期化手段１００が主記憶領域情報提供手段１０１を有している点と、主記憶手段２００が初期化情報格納領域２０１を有している点と、制御手段３００が主記憶領域情報取得手段３０１と主記憶領域情報３０２と初期化情報３０３とデバイスドライバ３０７とデバイス認識手段３０５とを有している点と、が異なる。また、デバイスドライバ３０７は、デバイスドライバ初期化関数３０４を有しているものとする。他の構成要素については第１の実施形態と同様であるため、図１と同様の符号を付し、適宜説明を省略する。
【００７５】
本実施形態のデバイス初期化手段１０２は、第１の実施形態で行った処理に加え、初期化手段１００において初期化処理の対象となるデバイスのデバイス名を取得する処理を行う。
【００７６】
本実施形態の初期化情報格納手段１０３は、第１の実施形態で用いた初期化情報５００にデバイス初期化手段１０２が取得したデバイス名を追加し、初期化情報５００に加え、デバイスの種類や、Ｉ／Ｏメモリアドレスなどの情報を含むデバイス情報４００を主記憶手段２００の初期化情報格納領域２０１に格納する。また、初期化情報格納手段１０３は、主記憶手段２００上のデバイス情報４００を格納した初期化情報格納領域２０１の位置情報を、主記憶領域情報提供手段１０１が管理する主記憶手段２００上の各領域の位置情報である主記憶領域情報３０２として格納する。
【００７７】
主記憶領域情報提供手段１０１は、主記憶領域情報３０２を管理し、制御手段３００に提供するための手段である。なお、主記憶領域情報提供手段１０１が制御手段３００の主記憶領域情報取得手段３０１により呼び出される前に、初期化情報格納手段１０３により初期化情報格納領域２０１の位置情報が主記憶領域情報３０２として格納される。
【００７８】
本実施形態の主記憶手段２００は、デバイス情報４００を格納するための初期化情報格納領域２０１を有している。
【００７９】
初期化情報格納領域２０１は、初期化情報格納手段１０３がデバイス情報４００を格納するための領域である。図４に初期化情報格納領域２０１の構造を示す。図４に示すように、初期化情報格納領域２０１には各デバイスのデバイス情報４００が格納されている。また、図４に示すように、初期化情報格納領域２０１に格納されているデバイス情報４００には、デバイス名や、デバイスの種類や、Ｉ／Ｏポート番号や、ＩＲＱ番号や、Ｉ／Ｏメモリアドレスや、その他デバイス固有の設定情報などが含まれているものとする。
【００８０】
主記憶領域情報取得手段３０１は、主記憶領域情報提供手段１０１が提供する主記憶領域情報３０２を取得する手段である。主記憶領域情報取得手段３０１が取得した主記憶領域情報３０２には、デバイス情報４００を格納した初期化情報格納領域２０１の位置情報が含まれており、デバイス情報適用手段３０６により利用される。
【００８１】
初期化情報リスト３０３は、初期化情報５００を登録してあるリストである。初期化情報リスト３０３に登録されている初期化情報５００には、デバイス名や、Ｉ／Ｏポート番号や、ＩＲＱ番号や、その他デバイス固有の設定情報などが含まれている。
【００８２】
なお、ＯＳは、初期化情報リスト３０３に登録されている各デバイスの初期化情報５００を用いることでデバイスを認識し、デバイスへのアクセスが可能となる。
【００８３】
デバイスドライバ３０７は、ＯＳやＯＳ上で動作するユーザアプリケーションに対し、情報処理装置に接続されているデバイスにアクセスするための機能を提供する。そのため、デバイスドライバ３０７は、デバイスドライバ初期化関数３０４を用いてデバイスの初期化処理を行う。その後、デバイスドライバ３０７は、デバイスの初期化処理により得られた初期化情報５００を基に、制御手段３００が提供するｒｅａｄ，ｗｒｉｔｅなどの抽象的な関数のインターフェイスに対して、実際に動作する部分となるデバイスの操作関数を関連付ける。これにより、ＯＳやユーザアプリケーションは、制御手段３００の用意するｒｅａｄ，ｗｒｉｔｅ等の関数呼び出しを通して、デバイスにアクセスするが出来るようになる。なお、デバイスにより設定する情報や、操作方法が異なるため、デバイスドライバ３０７はデバイス毎にそれぞれ固有のものが用意される。
【００８４】
この様に、ＯＳはデバイスドライバ３０７を通してデバイスにアクセスするため、ＯＳにおけるデバイスの初期化処理（第２の初期化処理）では、ＯＳが使用するデバイス、つまり、ＯＳが有する各デバイスドライバ３０７に対応する特定のデバイスの初期化処理が行われる。
【００８５】
デバイスドライバ初期化関数３０４は、デバイスドライバ３０７より呼び出され、情報処理装置に接続されているデバイスの中から、デバイスドライバ３０７が対応する特定のデバイスの初期化処理を行う。デバイスドライバ初期化関数３０４もデバイスドライバ３０７と同様に各デバイスそれぞれに固有のものが用意される。
【００８６】
デバイス認識手段３０５は、デバイスドライバ初期化関数３０４より呼び出され、情報処理装置に接続されているデバイスの中から、デバイスドライバ３０７およびデバイスドライバ初期化関数３０４が対応する特定のデバイスの初期化処理を行う。
【００８７】
具体的には、まず、デバイス認識手段３０５は、特定のデバイスの接続状況の確認を行い、特定のデバイスのデバイス名などの基本的な情報を取得する。次に、デバイス認識手段３０５は、特定のデバイスのデバイス認識処理を行う前に、デバイス情報適用手段３０６に特定のデバイスのデバイス名が初期化情報格納領域２０１から取得したデバイス情報４００に含まれるデバイス名と一致するかを判定させる。デバイス認識手段３０５は、デバイス名が一致する場合、特定のデバイスのデバイス認識処理を行うことでデバイス制御情報を設定し、特定のデバイスのデバイス名とデバイス制御情報を含む初期化情報５００を初期化情報リスト３０３に登録する。
【００８８】
本実施形態のデバイス情報適用手段３０６は、デバイス認識手段３０５から特定のデバイスのデバイス名が知らされると、主記憶領域情報３０２から初期化情報格納領域２０１の位置情報を抽出し、抽出した初期化情報格納領域２０１の位置情報を用いて主記憶手段２００上の初期化情報格納領域２０１の位置を特定する。その後、デバイス情報適用手段３０６は、位置を特定した初期化情報格納領域２０１からデバイス情報４００を取得する。
【００８９】
また、デバイス情報適用手段３０６は、特定のデバイスのデバイス名と初期化情報格納領域２０１から取得したデバイス情報４００に含まれるデバイス名が一致するかを判定し、一致する場合、初期化情報格納領域２０１から取得したデバイス情報４００から初期化情報５００を抽出し、抽出した初期化情報５００を、特定のデバイスの初期化情報として初期化情報リスト３０３に登録する。
【００９０】
次に、図５及び図６のフローチャートを参照して本実施形態の情報処理装置の動作について説明する。
【００９１】
図５のフローチャートは、初期化手段１００の各手段の動作を示している。なお、これらの動作は、ＯＳの実行により制御手段３００が実現され、デバイスドライバ３０７を通してデバイスドライバ初期化関数３０４が実行される前に予め行われる。
【００９２】
図５のフローチャートを参照すると、まず、デバイス初期化手段１０２は情報処理装置に接続されているデバイスの初期化処理を行う（Ｓ５）。デバイス初期化手段１０２は、デバイスの初期化処理において、初期化手段１００において初期化処理の対象となるデバイスのデバイス名を取得するとともに、そのデバイスのデバイス認識処理を行うことでデバイス制御情報を設定する。
【００９３】
次に、初期化情報格納手段１０３は、デバイス初期化手段１０２が取得したデバイス名や設定したデバイス制御情報を含む初期化情報５００と、デバイスの種類やＩ／Ｏメモリアドレスなどの情報と、を含むデバイス情報４００を主記憶手段２００上の初期化情報格納領域２０１に格納する（Ｓ６）。
【００９４】
次に、初期化情報格納手段１０３は、初期化すべきデバイスが残っているかを判定する（Ｓ７）。
【００９５】
初期化情報格納手段１０３は、初期化すべきデバイスが残っている場合（Ｓ７のＹＥＳ）、デバイス初期化手段１０２に次のデバイスの初期化処理を行わせる。初期化情報格納手段１０３は、初期化手段１００において初期化処理の対象となる全てデバイスの初期化処理が終わるまでこの処理を繰り返す。
【００９６】
初期化情報格納手段１０３は、初期化すべきデバイスが残っていない場合（Ｓ７のＮＯ）、各デバイスのデバイス情報４００を格納した主記憶手段２００上の初期化情報格納領域２０１の位置情報を、主記憶領域情報提供手段１０１が管理する主記憶情報３０２に追加する。（Ｓ８）。
【００９７】
図６のフローチャートは、制御手段３００の各手段の動作を示している。なお、これらの動作は、初期化手段１００におけるデバイスの初期化処理後、ファームウェアがＯＳを主記憶手段２００にロードし実行することにより実現された制御手段３００によりデバイスドライバ３０７を通してデバイスドライバ初期化関数３０４が実行された時に開始される。
【００９８】
図６のフローチャートを参照すると、まず、デバイスドライバ初期化関数３０４は、情報処理装置に接続されているデバイスの中から、対応する特定のデバイスの初期化処理を行うために、デバイス認識手段３０５を呼び出す。
【００９９】
デバイス認識手段３０５は、特定のデバイスの初期化処理を行うに当たり、まず、特定のデバイスの接続状況の確認を行い、特定のデバイスのデバイス名を取得する（Ｓ９）。その後、デバイス認識手段３０５は、特定のデバイスのデバイス認識処理を行う前に、取得した特定のデバイスのデバイス名を指定してデバイス情報適用手段３０６を呼び出す。
【０１００】
次に、デバイス情報適用手段３０６は、主記憶領域情報３０２から初期化情報格納領域２０１の位置情報を抽出する（Ｓ１０）。
【０１０１】
次に、デバイス情報適用手段３０６は、主記憶領域情報３０２から抽出した初期化情報格納領域２０１の位置情報を用いて初期化憶装置２００上の初期化情報格納領域２０１の位置を特定し、位置を特定した初期化情報格納領域２０１からデバイス情報４００を取得する（Ｓ１１）。
【０１０２】
次に、デバイス情報適用手段３０６は、デバイス認識手段３０５が取得した特定のデバイスのデバイス名と、初期化情報格納領域２０１から取得したデバイス情報４００に含まれるデバイス名と、が一致するかを判定する（Ｓ１２）。
【０１０３】
デバイス情報適用手段３０６は、デバイス名が一致する場合（Ｓ１２のＹＥＳ）、取得したデバイス情報４００から初期化情報５００を抽出し初期化情報リスト３０３に登録する（Ｓ１３）。
【０１０４】
初期化情報リスト３０３に初期化情報５００を登録することで、ＯＳから特定のデバイスへのアクセスが可能となり、特定のデバイスの初期化処理は終了となる。この場合、初期化情報格納領域２０１から取得したデバイス情報４００から初期化情報５００抽出したため、初期化処理からデバイス認識処理を省略したことになる。
【０１０５】
一方、デバイス情報適用手段３０６は、デバイス名が一致しない場合（Ｓ１２のＮＯ）、初期化情報格納領域２０１に他のデバイス情報４００が残っているかを判定する（Ｓ１４）。
【０１０６】
デバイス情報適用手段３０６は、初期化情報格納領域２０１に他のデバイス情報４００が残っている場合（Ｓ１４のＹＥＳ）、初期化情報格納領域２０１から他のデバイス情報４００を取得する。デバイス情報適用手段３０６は、この処理を繰り返すことで特定のデバイスのデバイス名を含むデバイス情報４００が初期化情報格納領域２０１に格納されているかを判定する。
【０１０７】
デバイス情報適用手段３０６は、初期化情報格納領域２０１に他のデバイス情報４００が残っていない場合（Ｓ１４のＮＯ）、つまり、特定のデバイスのデバイス名を含むデバイス情報４００が存在しない場合、処理を終了し、デバイス認識手段３０５を呼び出す。
【０１０８】
デバイス認識手段３０５は、初期化情報格納領域２０１に特定のデバイスのデバイス名を含むデバイス情報４００が存在しない場合、通常のデバイスの初期化処理通り、特定のデバイスのデバイス認識処理を行うことでデバイス制御情報を設定し（Ｓ１５）、特定のデバイスのデバイス名とデバイス制御情報を含む初期化情報５００を初期化情報リスト３０３に登録する（Ｓ１６）。
【０１０９】
次に、本実施の形態の効果について説明する。
【０１１０】
上述したように、本実施形態の情報処理装置においては、ファームウェアの実行により実現される初期化手段１００は、主記憶領域情報３０２にデバイス情報４００を格納した初期化情報格納領域２０１の位置情報を追加し、ＯＳの実行により実現される制御手段３００は、初期化手段１００から取得した主記憶領域情報３０２から初期化情報格納領域２０１の位置情報を抽出することで主記憶手段２００上の初期化情報格納領域２０１の位置を特定し、位置を特定した初期化情報格納領域２０１からデバイス情報４００を取得する構成となっている。
【０１１１】
したがって、第１の実施形態で得られる効果に加え、初期化情報格納領域２０１を主記憶手段２００上の任意の位置に確保することが出来るといった効果が得られる。
【０１１２】
また、上述したように、本実施形態の情報処理装置においては、ＯＳの実行により実現される制御手段３００は、特定のデバイスのデバイス名と初期化情報格納領域２０１から取得したデバイス情報４００に含まれるデバイス名が一致しない場合、特定のデバイスのデバイス制御情報を設定し（デバイス認識処理）、特定のデバイスのデバイス名とデバイス制御情報を含む初期化情報５００を初期化情報リストに登録する構成となっている。
【０１１３】
したがって、上述した効果に加え、初期化手段１００におけるデバイスの初期化処理でデバイス情報４００が取得されなかったデバイスが存在した場合でも、ＯＳからそのデバイスにアクセスすることが出来るという効果が得られる。
【０１１４】
（第３の実施形態）
図７に、本発明の第３の実施形態の情報処理装置の構成を示す。
【０１１５】
図７に示すように、本実施形態は、図３に示した第２の実施形態と比較して、制御手段３００に、デバイス初期化判定手段３０８と、デバイス非初期化判定リスト３０９と、を追加した点が異なる。他の構成要素については第３の実施形態と同様であるため、図３と同様の符号を付し説明を省略する。
【０１１６】
デバイス非初期化判定リスト３０９は、制御手段３００におけるデバイスの初期化処理において、初期化情報格納領域２０１からデバイス情報４００を取得しないデバイスのデバイス名を記載したリストである。図８にデバイス非初期化判定リスト３０９の具体例を示す。
【０１１７】
デバイス初期化判定手段３０８は、デバイス非初期化判定リスト３０９にデバイス認識手段３０５が取得した特定のデバイスのデバイス名が記載されているかを判定する。
【０１１８】
デバイス初期化判定手段３０８は、特定のデバイスのデバイス名が記載されている場合、初期化情報格納領域からデバイス情報４００を取得しないデバイスと判断し、デバイス認識手段３０５を呼び出す。デバイス認識手段３０５は、通常のデバイスの初期化処理通り、特定デバイスのデバイス認識処理を行うことでデバイス制御情報を設定し、特定のデバイスのデバイス名とデバイス制御情報を含む初期化情報５００を初期化情報リスト３０３に登録する。
【０１１９】
一方、デバイス初期化判定手段３０８は、特定のデバイスのデバイス名が記載されていない場合、デバイス情報適用手段３０６を呼び出す。デバイス情報適用手段３０６は初期化情報格納領域２０１からデバイス情報４００を取得し、特定のデバイスの初期化処理を行う。
【０１２０】
次に、図９及び図１０のフローチャートを参照して本実施形態の動作について説明する。なお、初期化手段１００における各手段の動作は、図５に示した第２の実施形態における動作と同様のため説明を省略する。
【０１２１】
図９および図１０のフローチャートは、制御手段３００の各手段の動作を示している。なお、これらの動作は、初期化手段１００によるデバイスの初期化処理後、ファームウェアがＯＳを主記憶手段２００にロードし実行することにより実現された制御手段３００によりデバイスドライバ３０７を通してデバイスドライバ初期化関数３０４が実行された時に開始される。
【０１２２】
図９のフローチャートを参照すると、まず、デバイスドライバ初期化関数３０４は、情報処理装置に接続されているデバイスの中から、対応する特定のデバイスの初期化処理を行うために、デバイス認識手段３０５を呼び出す。
【０１２３】
デバイス認識手段３０５は、特定のデバイスの初期化処理を行うに当たり、まず、特定のデバイスの接続状況の確認を行い、特定のデバイスのデバイス名を取得する（Ｓ１７）。その後、デバイス認識手段３０５は、特定のデバイスのデバイス認識処理を行う前に、取得した特定のデバイスのデバイス名を指定してデバイス初期化判定手段３０８を呼び出す。
【０１２４】
次に、デバイス初期化判定手段３０８は、デバイス非初期化判定リスト３０９にデバイス認識手段３０５が取得した特定のデバイスのデバイス名が記載されているか判定する（Ｓ１８）。
【０１２５】
デバイス初期化判定手段３０８は、特定のデバイスのデバイス名が記載されている場合（Ｓ１８のＹＥＳ）、デバイス認識手段３０５を呼び出す。デバイス初期化判定手段３０８により呼び出されたデバイス認識手段３０５は、通常のデバイスの初期化処理通りに、特定のデバイスのデバイス認識処理を行うことでデバイス制御情報を設定し（Ｓ１９）、特定のデバイスのデバイス名とデバイス制御情報を含む初期化情報５００を初期化情報リスト３０３に登録する（Ｓ２０）。
【０１２６】
なお、特定のデバイスのデバイス名が記載されていない場合、図１０に移行する。図１０のＳ２１〜Ｓ２７の処理は、図６のＳ１０〜Ｓ１６の処理と同様のため説明を省略する。
【０１２７】
次に、本実施形態の効果について説明する。
【０１２８】
上述したように、本実施形態の情報処理装置においては、ＯＳの実行により実現される制御手段３００は、デバイス非初期化判定リスト３０９に制御手段３００における初期化処理の対象となるデバイスのデバイス名が記載されているかを判定することで、初期化情報格納領域２０１からデバイス情報４００を取得してデバイスの初期化処理を行うかを判定する構成となっている。
【０１２９】
これにより、第１および第２の実施形態の効果に加え、情報処理装置に接続されているデバイスの中から、デバイス情報４００を取得してデバイスの初期化処理を行うデバイスを取捨選択すること出来るという効果が得られる。
【実施例】
【０１３０】
以下に、具体的な実施例を用いて、本発明を実施するための最良の形態を説明する。
【０１３１】
図１１に、本実施例の情報処理装置の構成を示す。
【０１３２】
なお、本実施例は、図３に示した第２の実施形態を具体化したものであり、情報処理装置にＰＣＩを用いて接続されたＰＣＩデバイスの初期化処理において、本発明を適用した場合の動作を説明するものである。
【０１３３】
図１１に示すように、本実施例は、初期化手段１００の具体例としてＢＩＯＳ６００を、制御手段３００の具体例としてＬｉｎｕｘＯＳ８００を、主記憶手段２００の具体例として物理メモリ７００を、主記憶領域情報提供手段１０１の具体例としてＢＩＯＳ命令（０ｘ１５）６０１を、主記憶領域情報取得手段３０１の具体例としてｓｅｔｕｐ関数８０１を、主記憶領域情報３０２の具体例としてｂｉｏｓｍａｐ情報８０２を、初期化情報リスト３０３の具体例としてｐｃｉ＿ｄｅｖｉｃｅｓ構造体８０３を、デバイスドライバ初期化関数３０４の具体例としてｐｃｉ＿ｉｎｉｔ関数８０４を、デバイス認識手段３０５の具体例としてｐｃｉ＿ｅｎａｂｌｅ＿ｄｅｖｉｃｅ関数８０５を、それぞれ備えている。他の構成要素については第２の実施形態と同様であるため、図３と同様の符号を付し説明を省略する。
【０１３４】
ＢＩＯＳ命令とは、ＢＩＯＳ６００が提供する様々なサービスを利用するための命令である。ＣＰＵレジスタに指定された数値を設定し、ＢＩＯＳ命令を呼び出すことによって、ＣＰＵスピード情報を取得したり、物理メモリ７００のサイズ情報を取得したりすることが出来る。本実施例においては、ＢＩＯＳ命令のうち、ＢＩＯＳ６００が提供する物理アドレスマップ(ｂｉｏｓｍａｐ情報８０２)を取得するＢＩＯＳ命令（０ｘ１５）６０１を利用する。
【０１３５】
ｂｉｏｓｍａｐ情報８０２は、ＢＩＯＳ６００がデバイスの初期化処理の際に使用した物理メモリ７００上の各領域の位置情報を記録したものである。
【０１３６】
図１２に、ｂｉｏｓｍａｐ情報８０２の具体例を示す。図１２に示すように、ｂｉｏｓｍａｐ情報８０２は、各情報を格納した領域の、先頭アドレスと、最終アドレスと、その領域の利用方法と、の３つのエントリから構成される。本実施例においては、初期化情報格納手段１０３がｂｉｏｓｍａｐ情報８０２に初期化情報格納領域２０１の位置情報を追加することにより、デバイス情報適用手段３０６が初期化情報格納領域２０１の位置情報を取得し、主記憶手段上の初期化情報格納領域２０１の位置を特定出来るようにしている。
【０１３７】
ｓｅｔｕｐ関数８０１は、ＬｉｎｕｘＯＳ８００を実行するのに必要な環境を準備するための関数である。ＬｉｎｕｘＯＳ８００は、ｓｅｔｕｐ関数８０１を用いてＢＩＯＳ命令（０ｘ１５）６０１を呼び出し、ｂｉｏｓｍａｐ情報８０２を取得する。ＬｉｎｕｘＯＳ８００は、取得したｂｉｏｓｍａｐ情報８０２を物理メモリ７００の管理を行う際の参考情報として用いる。
【０１３８】
ｐｃｉ＿ｄｅｖｉｃｅｓ構造体８０３は、第２の実施形態における初期化情報５００を格納するｐｃｉ＿ｄｅｖ構造体９００のリストである。ｐｃｉ＿ｄｅｖｉｃｅｓ構造体８０３に格納されているｐｃｉ＿ｄｅｖ構造体９００は、第２の実施形態における初期化情報５００と同様に、デバイス名（ベンダーＩＤおよびデバイスＩＳ）と、Ｉ／Ｏポート番号と、ＩＲＱ番号と、その他デバイス固有の設定情報と、を格納している。
【０１３９】
ｐｃｉ＿ｉｎｉｔ関数８０４は、情報処理装置にｐｃｉを用いて接続されたｐｃｉデバイスためのデバイスドライバ３０７をＬｉｎｕｘＯＳ８００がロードする際に、最初に実行される関数である。ｐｃｉ＿ｉｎｉｔ関数８０４は、ｐｃｉ＿ｅｎａｂｌｅ＿ｄｅｖｉｃｅ関数８０５を呼び出すことで、ｐｃｉデバイスの初期化処理を行う。
【０１４０】
ｐｃｉ＿ｅｎａｂｌｅ＿ｄｅｖｉｃｅ関数８０５は、ｐｃｉデバイスの初期化処理を行い、有効化するための関数である。
【０１４１】
なお、本実施例においては、ｐｃｉ＿ｅｎａｂｌｅ＿ｄｅｖｉｃｅ関数８０５は、ｐｃｉ＿ｉｎｉｔ関数８０４により呼び出されると、まず、自身が対応する特定のデバイスの接続状況の確認し、特定のデバイスのデバイス名を取得し、その後、デバイス認識処理を行う前に、デバイス情報適用手段３０６を呼び出し、取得した特定のデバイス名と初期化情報格納領域２０１から取得したデバイス情報４００に含まれるデバイス名とが一致するかを判定させる。
【０１４２】
次に、図１３のフローチャートを参照して本実施例の動作について説明する。
【０１４３】
なお、ＢＩＯＳ６００における各手段の動作は、図５に示した第２の実施形態におけるファーウェア１００の実行により実現する初期化手段１００の対応する各手段の動作と同様であるため、ここでは説明を省略する。
【０１４４】
図１３のフローチャートは、ＬｉｎｕｘＯＳ８００の各手段の動作を示している。なお、これらの動作は、ＢＩＯＳ６００によるデバイスの初期化処理後、ＢＩＯＳ６００がＬｉｎｕｘＯＳ８００を物理メモリ７００にロードすることで実行し、ＬｉｎｕｘＯＳ８００がデバイスドライバ３０７を通してｐｃｉ＿ｉｎｉｔ関数８０４を実行した時に開始される。
【０１４５】
まず、ＬｉｎｕｘＯＳ８００は、デバイスドライバ３０７をロードすることで、ｐｃｉ＿ｅｎａｂｌｅ＿ｄｅｖｉｃｅ関数８０５を呼び出す。
【０１４６】
ｐｃｉ＿ｅｎａｂｌｅ＿ｄｅｖｉｃｅ関数８０５は呼び出されると、まず、情報処理装置にｐｃｉを用いて接続されているｐｃｉデバイスの接続状況の確認を行い、ｐｃｉデバイスからベンダーＩＤやデバイスＩＤなどの情報を取得しｐｃｉ＿ｄｅｖ構造体９００に格納する（Ｓ２８）。
【０１４７】
ここで、ベンダーＩＤとは、そのデバイスを作成した会社に対して世界で一意に与えられた識別子である。また、デバイスＩＤとは、各ベンダー内で作成した各デバイスに対して一意に与えられる識別子である。
【０１４８】
なお、このベンダーＩＤとデバイスＩＤは実質的なデバイス名として利用される。本実施例においてもベンダーＩＤとデバイスＩＤをデバイス名として使用するものとする。
【０１４９】
次に、ｐｃｉ＿ｅｎａｂｌｅ＿ｄｅｖｉｃｅ関数８０５は、デバイス情報適用手段３０６を呼び出す。
【０１５０】
次に、デバイス情報適用手段３０６は、ｂｉｏｓｍａｐ情報８０２から初期化情報格納領域２０１の位置情報を抽出する（Ｓ２９）。
【０１５１】
次に、デバイス情報適用手段３０６は、抽出した初期化情報格納領域２０１の位置情報を用いて初期化憶装置２００上の初期化情報格納領域２０１の位置を特定し、初期化情報格納領域２０１からデバイス情報４００を取得する（Ｓ３０）。
【０１５２】
次に、デバイス情報適用手段３０６は、ｐｃｉ＿ｅｎａｂｌｅ＿ｄｅｖｉｃｅ関数８０５が取得したｐｃｉデバイスのデバイス名が、デバイス情報４００に含まれるデバイス名と一致するかを判定する（Ｓ３１）。
【０１５３】
デバイス情報適用手段３０６は、デバイス名が一致する場合（Ｓ３１のＹＥＳ）、取得したデバイス情報４００を用いてｐｃｉ＿ｄｅｖ構造体９００に必要な情報を格納し、ｐｃｉ＿ｄｅｖ構造体９００をｐｃｉ＿ｄｅｖｉｃｅｓ構造体８０３に登録する（Ｓ３２）。
【０１５４】
一方、デバイス情報適用手段３０６は、デバイス名が一致しない場合（Ｓ３１のＮＯ）、初期化情報格納領域２０１に他のデバイス情報が残っているかを判定する（Ｓ３３）。
【０１５５】
デバイス情報適用手段３０６は、初期化情報格納領域２０１に他のデバイス情報４００が残っている場合（Ｓ３３のＹＥＳ）、初期化情報格納領域２０１から他のデバイス情報４００を取得し、特定のデバイスのデバイス名と他のデバイス情報４００に含まれるデバイス名とが一致するかの判定を繰り返す。
【０１５６】
デバイス情報適用手段３０６は、初期化情報格納領域２０１に他のデバイス情報４００が残っていない場合（Ｓ３３のＮＯ）、処理を終了し、ｐｃｉ＿ｅｎａｂｌｅ＿ｄｅｖｉｃｅ関数８０５を呼び出す。
【０１５７】
その後、ｐｃｉ＿ｅｎａｂｌｅ＿ｄｅｖｉｃｅ関数８０５はｐｃｉデバイスのデバイス認識処理を行うことでデバイス制御情報を設定し（Ｓ３４）、ｐｃｉデバイスのデバイス名とデバイス制御情報を含む情報をｐｃｉ＿ｄｅｖ構造体９００に格納し、ｐｃｉ＿ｄｅｖｉｃｅｓ構造体８０３に登録する（Ｓ３５）。
【０１５８】
なお、本発明の情報処理装置は、上述のようにファームウェアおよびＯＳの実行により実現されるもの以外に、ファームウェアおよびＯＳにその機能を実行させるためのプログラムを、情報処理装置で読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムを情報処理装置に読み込ませ、実行するものであってもよい。情報処理装置で読み取り可能な記録媒体とは、フロッピーディスク、光磁気ディスク、ＣＤ−ＲＯＭ等の記録媒体、情報処理装置に内蔵されるハードディスク装置等の記憶装置を指す。さらに、情報処理装置で読み取り可能な記録媒体は、インターネットを介してプログラムを送信する場合のように、短時間の間、動的に情報処理装置内手段の揮発性メモリのように一定時間プログラムを保持しているものを含む。
【図面の簡単な説明】
【０１５９】
【図１】本発明の第１の実施形態の情報処理装置の構成を示すブロック図である。
【図２】図１に示した情報処理装置の動作を説明するフローチャートである。
【図３】本発明の第２の実施形態の情報処理装置の構成を示すブロック図である。
【図４】図３に示した初期化情報格納領域の構造の具体例を示す図である。
【図５】図３に示した初期化手段におけるデバイスの初期化処理の動作を説明するフローチャートである。
【図６】図３に示した制御手段におけるデバイスの初期化処理の動作を説明するフローチャートである。
【図７】本発明の第３の実施形態の情報処理装置の構成を示すブロック図である。
【図８】図７に示したデバイス非初期化判定リストの具体例を示す図である。
【図９】図７に示した制御手段におけるデバイスの初期化処理の動作を説明するフローチャートである。
【図１０】図７に示した制御手段におけるデバイス初期化省略処理の動作を説明するフローチャートである。
【図１１】本発明の第２の実施形態を具体化した実施例の構成を示すブロック図である。
【図１２】図１１に示したｂｉｏｓｍａｐ情報の具体例を示す図である。
【図１３】図１１に示したＬｉｎｕｘＯＳにおけるデバイスの初期化処理の動作を説明するフローチャートである。
【図１４】特許文献１に記載のシステムの構成を説明するブロック図である。
【図１５】図１４に示したシステムにおけるメモリデバイスの初期化処理の動作を説明するフローチャートである。
【図１６】図１４に示したシステムにおけるドライブデバイスの初期化処理の動作を説明するフローチャートである。
【符号の説明】
【０１６０】
１００    初期化手段
１０１    主記憶領域情報提供手段
１０２    デバイス初期化手段
１０３    初期化情報格納手段
２００    主記憶手段
２０１    初期化情報格納領域
３００    制御手段
３０１    主記憶領域情報取得手段
３０２    主記憶領域情報
３０３    初期化情報リスト
３０４    デバイスドライバ初期化関数
３０５    デバイス認識手段
３０６    デバイス情報適用手段
３０７    デバイスドライバ
３０８    デバイス初期化判定手段
３０９    デバイス非初期化判定リスト
４００    デバイス情報
５００    初期化情報
６００    ＢＩＯＳ
６０１    ＢＩＯＳ命令（０ｘ１５）
７００    物理メモリ
８００    ＬｉｎｕｘＯＳ
８０１    ｓｅｔｕｐ関数
８０２    ｂｉｏｓｍａｐ情報
８０３    ｐｃｉ＿ｄｅｖｉｃｅｓ構造体
８０４    ｐｃｉ＿ｉｎｉｔ関数
８０５    ｐｃｉ＿ｅｎａｂｌｅ＿ｄｅｖｉｃｅ関数
９００    ｐｃｉ＿ｄｅｖ構造体
１０００    フラッシュＢＩＯＳ−ＲＯＭ
１００１    メモリ情報
１００２    ドライブ情報
【図１】
2009193301.tif 000003
【図２】
2009193301.tif 000004
【図３】
2009193301.tif 000005
【図４】
2009193301.tif 000006
【図５】
2009193301.tif 000007
【図６】
2009193301.tif 000008
【図７】
2009193301.tif 000009
【図８】
2009193301.tif 000010
【図９】
2009193301.tif 000011
【図１０】
2009193301.tif 000012
【図１１】
2009193301.tif 000013
【図１２】
2009193301.tif 000014
【図１３】
2009193301.tif 000015
【図１４】
2009193301.tif 000016
【図１５】
2009193301.tif 000017
【図１６】
2009193301.tif 000018