(58)【調査した分野】(Int.Cl.,DB名)
初期化処理を実行すべき周辺装置として設定された周辺装置の各々を特定する初期化候補特定パラメータと前記設定された周辺装置の各々に対応して実際に初期化処理を実行するか否かを特定する初期化対象特定パラメータとを不揮発的に記憶するパラメータ記憶手段と、
前記パラメータ記憶手段に記憶された初期化候補特定パラメータに対応する周辺装置のうち、対応する初期化対象特定パラメータの設定が初期化処理の実行を示すものとなっている周辺装置に対してのみ順に初期化処理を実行し、その時点で初期化処理の対象とされている周辺装置の初期化処理が正常に終了しなかった場合には、コンピュータを再起動し、対応する初期化対象特定パラメータの設定が初期化処理の実行を示すものとなっている周辺装置に対して改めて最初から順に初期化処理を実行する一方、初期化処理の対象とされている最後の周辺装置の初期化処理の完了を検知すると前記コンピュータのオペレーティング・システムの起動を許容する初期化処理実行手段と、
前記初期化処理実行手段による1つの周辺装置の初期化処理が正常に終了した場合には、この周辺装置に対応する初期化対象特定パラメータの値を初期化処理の実行を示すものに保持する一方、前記初期化処理実行手段による1つの周辺装置の初期化処理が正常に終了しなかった場合には、少なくともコンピュータの再起動前に、この周辺装置に対応する初期化対象特定パラメータの値を初期化処理の非実行を示すものに書き換えるパラメータ書換手段とを備え、
前記パラメータ書換手段は、前記初期化処理実行手段による初期化処理の開始に際し、その時点で初期化処理の対象となる周辺装置に対応する初期化対象特定パラメータの値を初期化処理の非実行を示すものに書き換え、前記初期化処理実行手段による初期化処理が正常に終了した場合に限って初期化処理の対象となった周辺装置に対応する初期化対象特定パラメータの値を初期化処理の実行を示すものに書き換えるように構成されていることを特徴とするコンピュータ起動システム。
前記コンピュータ起動システムがベイシック・インプット・アウトプット・システムに組み込まれ、前記パラメータ記憶手段は前記コンピュータのベイシック・インプット・アウトプット・システム用のCMOSメモリによって構成されていることを特徴とした請求項1または請求項2に記載のコンピュータ起動システム。
初期化処理を実行すべき周辺装置として設定された周辺装置の各々を特定する初期化候補特定パラメータと前記設定された周辺装置の各々に対応して実際に初期化処理を実行するか否かを特定する初期化対象特定パラメータとをコンピュータのパラメータ記憶手段に予め不揮発的に記憶させておき、
前記パラメータ記憶手段に記憶された初期化候補特定パラメータに対応する周辺装置のうち、対応する初期化対象特定パラメータの設定が初期化処理の実行を示すものとなっている周辺装置に対してのみ順に初期化処理を実行し、その時点で初期化処理の対象とされている周辺装置の初期化処理が正常に終了した場合には、この周辺装置に対応する初期化対象特定パラメータの値を初期化処理の実行を示すものに保持する一方、
その時点で初期化処理の対象とされている周辺装置の初期化処理が正常に終了しなかった場合には、この周辺装置に対応する初期化対象特定パラメータの値を初期化処理の非実行を示すものに書き換えてからコンピュータを再起動し、対応する初期化対象特定パラメータの設定が初期化処理の実行を示すものとなっている周辺装置に対して改めて最初から順に初期化処理を実行し、
初期化処理の対象とされている最後の周辺装置の初期化処理の完了を検知すると、前記コンピュータのオペレーティング・システムの起動を許容し、
初期化処理の開始に際し、その時点で初期化処理の対象となる周辺装置に対応する初期化対象特定パラメータの値を初期化処理の非実行を示すものに書き換え、初期化処理が正常に終了した場合に限って初期化処理の対象となった周辺装置に対応する初期化対象特定パラメータの値を初期化処理の実行を示すものに書き換えることを特徴としたコンピュータ起動方法。
【発明を実施するための形態】
【0015】
次に、本発明を実施するための形態について図面を参照して具体的に説明する。
【0016】
図1は本発明を適用した一実施形態のコンピュータ起動システムの構成について簡略化して示した機能ブロック図である。
【0017】
このコンピュータ起動システムAは、0≦i≦nの範囲にある整数iで表され、初期化処理を実行すべき周辺装置として設定されたn+1個の周辺装置M(i)の各々を特定する初期化候補特定パラメータ#(i)と周辺装置M(i)の各々に対応して実際に初期化処理を実行するか否かを特定する初期化対象特定パラメータF(i)とを不揮発的に記憶するパラメータ記憶手段Bを備える。
【0018】
また、コンピュータ起動システムAは、パラメータ記憶手段Bに記憶された初期化候補特定パラメータ#(i)に対応する周辺装置M(i)のうち、対応する初期化対象特定パラメータF(i)の設定が初期化処理の実行を示す値0となっている周辺装置M(i)に対してのみ順に初期化処理を実行し、その時点で初期化処理の対象とされている周辺装置M(i)の初期化処理が正常に終了しなかった場合には、コンピュータを再起動し、対応する初期化対象特定パラメータF(i)の設定が初期化処理の実行を示す値0となっている周辺装置M(i)に対して改めて最初から順に初期化処理を実行する一方、初期化処理の対象とされている最後の周辺装置M(i)の初期化処理の完了を検知するとオペレーティング・システムの起動を許容する初期化処理実行手段Cを備える。
但し、初期化処理の対象とされている最後の周辺装置M(i)が周辺装置M(n)であるとは限らない。初期化処理の実行順序はユーザによるカスタマイズが可能であるから、周辺装置M(n)の初期化処理の実行順序が最下位に設定されているという保証はなく、また、仮に周辺装置M(n)の初期化処理の実行順序が最下位に設定されていたとしても、周辺装置M(n)に対応する初期化対象特定パラメータF(n)に初期化処理の非実行を示す値1が設定されていれば、周辺装置M(n)は初期化処理の対象から外されるからである。
【0019】
コンピュータ起動システムAは、更に、初期化処理実行手段Cによる1つの周辺装置M(i)の初期化処理が正常に終了した場合に、この周辺装置M(i)に対応する初期化対象特定パラメータF(i)の値を初期化処理の実行を示す値0に保持する一方、初期化処理実行手段Cによる1つの周辺装置M(i)の初期化処理が正常に終了しなかった場合には、少なくともコンピュータの再起動前に、この周辺装置M(i)に対応する初期化対象特定パラメータF(i)の値を初期化処理の非実行を示す値1に書き換えるパラメータ書換手段Dを備える。
【0020】
この実施形態にあっては周辺装置M(i)は何れもUSB機器であり、USB機器M(i)の各々を特定する初期化候補特定パラメータ#(i)としては、USB機器M(i)を接続したポートのポート名称#(i)が利用されている。
【0021】
図2はコンピュータ起動システムAを備えたコンピュータの構成を簡略化して示したブロック図である。
【0022】
このコンピュータ1は、演算処理用のマイクロプロセッサ2と、コンピュータ1の起動や其のOSの起動に必要とされるBIOSプログラム等を格納したROM3、および、BIOSが利用する各種のパラメータ等を不揮発的に記憶するCMOSメモリ4と、OSやアプリケーション・プログラムの展開さらには演算データの一時記憶等に利用されるランダム・アクセス・メモリ5(以下、RAM5という)、ならびに、OSやアプリケーション・プログラムおよび各種のデータ等を格納する大容量記憶装置として機能するハードディスクドライブ6と、0≦i≦nの範囲にある整数iで表されるn+1個のUSB機器M(i)を始めとする各種の周辺装置やネットワーク等に接続するための入出力インターフェイス7を備え、マイクロプロセッサ2の入出力回路8には、マン・マシン・インターフェイスとして機能するキーボード9やマウス10およびディスプレイ11とプリンタ12等が接続されている。
【0023】
BIOSプログラムはROM3のブートブロックに格納され、BIOSプログラムの一部として、
図3に示されるようなコンピュータ起動プログラムが書き加えられている(
図3はBIOSプログラムの全貌を示すものではない)。
【0024】
CMOSメモリ4は
図1におけるパラメータ記憶手段Bとして機能するもので、このCMOSメモリ4には、初期化処理を実行すべき周辺装置として設定されたn+1個のUSB機器M(i)の各々を特定する初期化候補特定パラメータ#(i)つまりUSB機器M(i)を接続した入出力インターフェイス7のポート名称#(i)と、このポートに接続されたUSB機器M(i)に対して実際に初期化処理を実行するか否かを特定する初期化対象特定パラメータF(i)の値つまり0または1とが対応して不揮発的に記憶されている。
既に述べた通り、0は初期化処理の実行を示す値、また、1は初期化処理の非実行を示す値である。
【0025】
これらのパラメータを保存するためにCMOSメモリ4内に設けられたパラメータ記憶テーブル13の論理構造を
図4の概念図に示す。
【0026】
図4の例で言えば、例えば、パラメータ記憶テーブル13のアドレス0に登録されたポート名称#(0)のポートにUSB機器M(0)が接続され、USB機器M(0)に対応するポート名称#(0)に対応した初期化対象特定パラメータF(0)の値として0つまり初期化処理の実行を示す値が設定されていることになる。要するに、USB機器M(0)が初期化処理の対象とされており、USB機器M(0)が最初の初期化処理の対象として選択されているということである。
【0027】
既に述べた通り、初期化処理を実行すべき対象とするUSB機器M(i)を表すポート名称#(i)を選択してパラメータ記憶テーブル13に登録する処理、および、ポート名称#(i)のポートに接続されたUSB機器M(i)に対して初期化処理の実行順序を設定する処理等に関しては、ユーザによるカスタマイズが可能であり、
図4のパラメータ記憶テーブル13の例では、テーブルの上の欄から順にテーブルのアドレスに従って初期化処理が実行されるようにしている。
図4のパラメータ記憶テーブル13の例では最初に初期化処理の対象とされるのはアドレス0に登録されたポート名称#(0)のポートに接続されたUSB機器M(0)、その次に初期化処理の対象とされるのがアドレス1に登録されたポート名称#(1)のポートに接続されたUSB機器M(1)ということになるが、仮に、パラメータ記憶テーブル13の最上位の欄すなわちアドレス0にポート名称#(1)が登録され、その次の欄すなわちアドレス1にポート名称#(0)が登録されていたとした場合には、最初に初期化処理の対象とされるのがポート名称#(1)のポートに接続されたUSB機器、その次に初期化処理の対象とされるのがポート名称#(0)のポートに接続されたUSB機器となる。
この種のカスタマイズを行なうバイオスセットアップ(BIOS Setup)等のプログラムは既に公知である。
【0028】
コンピュータ1におけるコンピュータ起動システムAの主要部は、パラメータ記憶手段Bとして機能するCMOSメモリ4に保存されたパラメータ記憶テーブル13と、コンピュータ1のマイクロプロセッサ2と、このマイクロプロセッサ2を初期化処理実行手段Cおよびパラメータ書換手段Dとして機能させるためにROM3のブートブロックにBIOSプログラムの一部として書き込まれたコンピュータ起動プログラムとによって構成される。
【0029】
次に、
図3に示したコンピュータ起動プログラムのフローチャートを参照して、初期化処理実行手段Cおよびパラメータ書換手段Dとして機能するコンピュータ1のマイクロプロセッサ2の処理動作について具体的に説明する。
【0030】
コンピュータ1に電源が投入されると、マイクロプロセッサ2は、ROM3のブートブロックに格納されたBIOSプログラムおよびBIOSプログラムの一部としてROM3に書き込まれたコンピュータ起動プログラムをRAM5に読み込んで処理を開始する。
【0031】
そして、マイクロプロセッサ2は、まず、パラメータ記憶手段Bとして機能するCMOSメモリ4のパラメータ記憶テーブル13から初期化処理の対象とすべきUSB機器M(i)に対応するポート名称#(i)を順に選択する際に用いられるポート選択指標iの値を0に初期化する(ステップS1)。
【0032】
次いで、初期化処理実行手段Cとして機能するマイクロプロセッサ2が、ポート選択指標iの現在値で特定される第iアドレスの初期化対象特定パラメータF(i)の値をパラメータ記憶テーブル13から読み込み、その値が、初期化処理の実行を示す値0となっているのか初期化処理の非実行を示す値1となっているのかを判定する(ステップS2)。
なお、当初はi=0,1,2,3,・・・,nのn+1個のUSB機器M(i)の何れにも障害がないことを前提としてパラメータ記憶テーブル13が生成されるので、初期段階では、
図4に示されるように、i=0,1,2,3,・・・,nの全ての初期化対象特定パラメータF(i)に初期化処理の実行を示す値0が設定されている。
マイクロプロセッサ2とROM3およびCMOSメモリ4は同一ボード上に設置されて相互に内部バスで接続されているので、データの入出力のための格別な初期化処理は不要であり、ハードディスクドライブ6や入出力インターフェイス7の各ポートあるいは入出力回路8等に障害が生じているような状況下でも相互間のデータの入出力が保証される。
【0033】
ステップS2の判定結果が偽となって初期化対象特定パラメータF(i)に初期化処理の実行を示す値0が設定されていることが確認された場合には、パラメータ記憶テーブル13の第iアドレスに登録されているポート名称#(i)のポートに接続されたUSB機器M(i)に対して初期化処理を実行する必要があることを意味するので、初期化処理の開始に先立ち、まず、パラメータ書換手段Dとして機能するマイクロプロセッサ2が、この時点で初期化処理の対象となるUSB機器M(i)に対応した初期化対象特定パラメータF(i)の値を初期化処理の実行を示す値0から初期化処理の非実行を示す値1に書き換える(ステップS3)。
【0034】
次いで、マイクロプロセッサ2が、図示しない分周器等の信号に基づいて初期化処理の所要時間の計測を開始すると共に(ステップS4)、初期化処理実行手段Cとして機能するマイクロプロセッサ2が、ポート名称#(i)のポートに接続されたUSB機器M(i)に対する初期化処理を開始し(ステップS5)、初期化処理が正常に終了するか、もしくは、初期化処理の所要時間がエラー判定値に達するのを待つ待機状態に入る(ステップS6〜ステップS7)。
【0035】
この間にステップS6の判定結果が真となって初期化処理が正常に終了したことが確認された場合には、パラメータ書換手段Dとして機能するマイクロプロセッサ2が、初期化処理の対象となったUSB機器M(i)に対応する初期化対象特定パラメータF(i)に、初期化処理の実行を示す値0を改めて設定する(ステップS8)。
【0036】
次いで、初期化処理実行手段Cとして機能するマイクロプロセッサ2がポート選択指標iの値を1インクリメントし(ステップS9)、該指標iの現在値が、USB機器に対応したポート名称を記憶しているパラメータ記憶テーブル13の最終アドレスの値nを超えているか否かを判定する(ステッブS10)。
【0037】
ステップS10の判定結果が偽となってポート選択指標iの現在値がパラメータ記憶テーブル13の最終アドレスの値nを超えていないことが確認された場合には、初期化処理の対象の候補とされたUSB機器を接続したポートを表すポート名称#(i)が此の他にもパラメータ記憶テーブル13に記憶されていることを意味するので、マイクロプロセッサ2は、更新されたポート選択指標iの現在値に基いて、ステップS7もしくはステップS10の判定結果が真となるまで、前記と同様にしてステップS2〜ステップS10から成るループ処理を繰り返し実行する。
【0038】
ステップS2〜ステップS10のループ処理を繰り返し実行する間にステップS10の判定結果が真となった場合には、ステップS2〜ステップS10から成るループ処理が初回を含めてn+1回実行され、i=0,1,2,3,・・・,nのポート#(i)に接続されたi=0,1,2,3,・・・,nの全てのUSB機器M(i)がエラー判定値で特定される許容時間内に適切に初期化されたことを意味する。
【0039】
従って、この場合、初期化処理実行手段Cとして機能するマイクロプロセッサ2は、n+1回のループ処理におけるステップS9の処理でポート選択指標iの値がnからn+1にインクリメントされてステップS10の判定結果が真となった時点で、初期化処理の対象としてパラメータ記憶テーブル13にポート名称#(i)を登録された最後のUSB機器M(i)、つまり、この場合はUSB機器M(n)の初期化処理が完了したものと見做し、BIOSプログラムの他部たとえば他の周辺装置の初期化処理等を実行してからOSの起動を許容する。
【0040】
OSの起動処理に関しては既に公知であるから、ここでは特に説明しない。
【0041】
この実施形態にあっては、パラメータ書換手段Dとして機能するマイクロプロセッサ2が、初期化処理の開始に先立って、其の時点で初期化処理の対象とされているUSB機器M(i)に対応した初期化対象特定パラメータF(i)の値を初期化処理の実行を示す値0から初期化処理の非実行を示す値1に書き換える処理を実行するが、初期化処理実行手段Cとして機能するマイクロプロセッサ2によるUSB機器M(i)の初期化処理が成功した場合には初期化対象特定パラメータF(i)の値は初期化処理の実行を示す値0に必ず書き戻されるので、初期化処理が失敗しない限り、
図3に示すようなコンピュータ起動プログラムの実行前後で、パラメータ記憶テーブル13の設定内容に変化が生じることはない(ステップS3〜ステップS8,
図4参照)。
【0042】
一方、ステップS2〜ステップS10のループ処理を繰り返し実行する間にステップS7の判定結果が真となった場合には、その時点で初期化処理の対象とされていたUSB機器M(i)の初期化処理がエラー判定値で特定される許容時間内に完了しなかったこと、つまり、USB機器M(i)の初期化処理が失敗したことを意味する。
【0043】
この場合、初期化対象特定パラメータF(i)の値を初期化処理の実行を示す値0に書き戻すステップS8の処理は非実行とされるので、ステップS7の判定結果が真となった時点で、初期化処理の対象のUSB機器M(i)に対応した初期化対象特定パラメータF(i)の値は初期化処理の非実行を示す値1のままとなる。
【0044】
従って、例えば、初回のループ処理でパラメータ記憶テーブル13のアドレス0に登録されたポート名称#(0)のポートに接続されたUSB機器M(0)の初期化に成功し、更に、2回目のループ処理でパラメータ記憶テーブル13のアドレス1に登録されたポート名称#(1)のポートに接続されたUSB機器M(1)の初期化に成功した後、3回目のループ処理でパラメータ記憶テーブル13のアドレス2に登録されたポート名称#(2)のポートに接続されたUSB機器M(2)の初期化に失敗したとすれば、3回目のループ処理が完了してステップS7の判定結果が真となった時点で、パラメータ記憶テーブル13の設定内容は
図4のようなものから
図5のようなものに変化する。
【0045】
このようにしてステップS7の判定処理でUSB機器M(i)の初期化処理の失敗が確認された場合にあっては、初期化処理実行手段Cとして機能するマイクロプロセッサ2は其れ以上の初期化処理を実行することなく直ちにコンピュータ1を再起動させる(ステップS11)。
【0046】
USB機器M(i)の初期化に失敗した場合にあってはRAM5に読み込まれたプログラムや一時的なデータに損傷が生じる場合があるが、コンピュータ1の再起動に関わる処理はROM3のブートブロックに格納されたBIOSプログラムによって実行されるので、初期化処理の失敗による影響は受けない。
【0047】
また、RAM5に読み込まれたプログラムや一時的なデータに損傷が生じた場合にあっては次のUSB機器M(i+1)の初期化処理の実行はおろか初期化対象特定パラメータF(i)の値を書き換えるといった処理が困難となることもあるが、この実施形態にあっては、初期化処理の開始に先立って其の時点で初期化処理の対象とされているUSB機器M(i)に対応した初期化対象特定パラメータF(i)の値を初期化処理の実行を示す値0から初期化処理の非実行を示す値1に書き換え、USB機器M(i)の初期化が成功した場合に限って初期化対象特定パラメータF(i)の値を初期化処理の実行を示す値0に書き戻すといった処理を採用しているので、RAM5に読み込まれたプログラムや一時的なデータに初期化処理の失敗による影響があった場合でも、USB機器M(i)の初期化処理の失敗に関連する情報すなわち初期化対象特定パラメータF(i)=1の内容をCMOSメモリ4内のパラメータ記憶テーブル13に確実に保存して確保することができる。
【0048】
コンピュータ1が再起動されると、マイクロプロセッサ2は、ROM3のブートブロックに格納されたBIOSプログラムおよびBIOSプログラムの一部としてROM3に書き込まれたコンピュータ起動プログラムをRAM5に読み込んで前記と同様にして
図3に示したコンピュータ起動プログラムの処理を開始し、まず、最初にポート選択指標iの値を0に初期化して(ステップS1)、ステップS2〜ステップS10から成る初回のループ処理でパラメータ記憶テーブル13のアドレス0に登録されたポート名称#(0)のポートに接続されたUSB機器M(0)の初期化に成功し、更に、2回目のループ処理でパラメータ記憶テーブル13のアドレス1に登録されたポート名称#(1)のポートに接続されたUSB機器M(1)の初期化に成功し、2回目のループ処理におけるステップS9の処理でポート選択指標iの値が1から2へ更新される。
【0049】
そして、3回目のループ処理では、初期化処理実行手段Cとして機能するマイクロプロセッサ2が、ポート選択指標iの現在値2に基いて第2アドレスの初期化対象特定パラメータF(2)の値をパラメータ記憶テーブル13から読み込み、その値が、初期化処理の実行を示す値0となっているのか初期化処理の非実行を示す値1となっているのかを判定するが(ステップS2)、この場合は初期化対象特定パラメータF(2)の値が初期化処理の非実行を示す値1となっているので(
図5参照)、ステップS2の判定結果は真となり、ポート名称#(2)のポートに接続されたUSB機器M(2)に関連するステップS3〜ステップS7の処理つまり初期化処理が非実行とされる。
【0050】
つまり、パラメータ記憶テーブル13にポート名称#(i)を登録されたUSB機器M(i)、即ち、初期化処理の対象の候補とされたUSB機器M(i)のうち、実際に初期化処理の対象とされるのは、対応する初期化対象特定パラメータF(i)の設定が初期化処理の実行を示す値0となっているUSB機器M(i)のみであり、過去に初期化に失敗したUSB機器M(i)、要するに、初期化処理の失敗が再度発生する可能性のあるUSB機器M(i)に対する初期化処理がスキップされるので、システム上での障害を生じることなく次のUSB機器M(i+1)の初期化を確実に実行することが可能となる。
【0051】
次いで、初期化処理実行手段Cとして機能するマイクロプロセッサ2がポート選択指標iの値を1インクリメントし(ステップS9)、該指標iの現在値がパラメータ記憶テーブル13の最終アドレスの値nを超えているか否かを判定するが(ステッブS10)、この段階ではポート選択指標iの現在値は3であるからステップS10の判定結果は偽となり、次のループ処理つまり4回目のループ処理でパラメータ記憶テーブル13のアドレス3に登録されたポート名称#(3)のポートに接続されたUSB機器M(3)の初期化処理が実行されることになる。
【0052】
以下同様にして、パラメータ記憶テーブル13のアドレス4に登録されたポート名称#(4)のポートに接続されたUSB機器M(4)〜パラメータ記憶テーブル13のアドレスnに登録されたポート名称#(n)のポートに接続されたUSB機器M(n)に対して5回目〜n+1回目のループ処理が実行される。
【0053】
そして、n+1回目のループ処理におけるステップS10の判定結果が真となった時点で、初期化処理実行手段Cとして機能するマイクロプロセッサ2は、初期化処理の対象としてパラメータ記憶テーブル13にポート名称#(i)を登録された最後のUSB機器M(i)、つまり、この場合はUSB機器M(n)の初期化処理が完了したものと見做し、BIOSプログラムの他部たとえば他の周辺装置の初期化処理等を実行してからOSの起動を許容する。
但し、この場合はポート名称#(2)のポートに接続されたUSB機器M(2)は作動しない。
【0054】
以上に述べた通り、順次インクリメントされるポート選択指標iの現在値に基いて初期化処理の対象の候補とすべきUSB機器M(i)のポート名称#(i)がパラメータ記憶テーブル13から順に選択されることになるが、実際に初期化処理の実行対象となるのは初期化対象特定パラメータF(i)の値として初期化処理の実行を示す値0が設定されたものに制限されるので、初期化に一旦失敗したUSB機器M(i)がコンピュータ1の再起動あるいは通常の起動後に実行されるコンピュータ起動プログラムで初期化の対象とされることはなく、初期化処理におけるエラーの発生および其れに伴うシステム障害の発生が未然に防止され、コンピュータ1のOSを確実に起動させることができるようになる。
【0055】
また、例えば、前述した再起動後の初期化処理において、初回のループ処理でパラメータ記憶テーブル13のアドレス0に登録されたポート名称#(0)のポートに接続されたUSB機器M(0)の初期化に成功し、更に、2回目のループ処理でパラメータ記憶テーブル13のアドレス1に登録されたポート名称#(1)のポートに接続されたUSB機器M(1)の初期化に成功し、ポート名称#(2)のポートに接続されたUSB機器M(2)の初期化を当初の目的とした3回目のループ処理をスキップして、4回目〜n回目のループ処理でパラメータ記憶テーブル13のアドレス3〜アドレスn−1に登録されたポート名称#(3)〜ポート名称#(n−1)の各ポートに接続されたUSB機器M(3)〜USB機器M(n−1)の初期化に成功し、最後となるn+1回目のループ処理でパラメータ記憶テーブル13のアドレスnに登録されたポート名称#(n)のポートに接続されたUSB機器M(n)の初期化に失敗したとすれば、n+1回目のループ処理が完了してステップS7の判定結果が真となった時点で、パラメータ記憶テーブル13の設定内容は
図5のようなものから
図6のようなものに変化することになる。
【0056】
この場合はコンピュータ1が改めて再起動され、マイクロプロセッサ2は、ROM3のブートブロックに格納されたBIOSプログラムおよびBIOSプログラムの一部としてROM3に書き込まれたコンピュータ起動プログラムをRAM5に読み込んで前記と同様にして
図3に示したコンピュータ起動プログラムの処理を開始し、まず、最初にポート選択指標iの値を0に初期化して(ステップS1)、ステップS2〜ステップS10から成る初回のループ処理でパラメータ記憶テーブル13のアドレス0に登録されたポート名称#(0)のポートに接続されたUSB機器M(0)の初期化に成功し、更に、2回目のループ処理でパラメータ記憶テーブル13のアドレス1に登録されたポート名称#(1)のポートに接続されたUSB機器M(1)の初期化に成功し、2回目のループ処理におけるステップS9の処理でポート選択指標iの値が1から2へ更新される。
【0057】
そして、3回目のループ処理では、初期化処理実行手段Cとして機能するマイクロプロセッサ2が、ポート選択指標iの現在値2に基いて第2アドレスの初期化対象特定パラメータF(2)の値をパラメータ記憶テーブル13から読み込み、その値が、初期化処理の実行を示す値0となっているのか初期化処理の非実行を示す値1となっているのかを判定するが(ステップS2)、この場合は初期化対象特定パラメータF(2)の値が初期化処理の非実行を示す値1となっているので(
図6参照)、ステップS2の判定結果は真となり、ポート名称#(2)のポートに接続されたUSB機器M(2)に関連するステップS3〜ステップS7の処理つまり初期化処理が非実行とされる。
【0058】
次いで、初期化処理実行手段Cとして機能するマイクロプロセッサ2がポート選択指標iの値を1インクリメントし(ステップS9)、該指標iの現在値がパラメータ記憶テーブル13の最終アドレスの値nを超えているか否かを判定するが(ステッブS10)、この段階ではポート選択指標iの現在値は3であるからステップS10の判定結果は偽となり、次のループ処理つまり4回目のループ処理でパラメータ記憶テーブル13のアドレス3に登録されたポート名称#(3)のポートに接続されたUSB機器M(3)の初期化が実行されることになる。
【0059】
以下、同様にして、パラメータ記憶テーブル13のアドレス4に登録されたポート名称#(4)のポートに接続されたUSB機器M(4)〜パラメータ記憶テーブル13のアドレスn−1に登録されたポート名称#(n−1)のポートに接続されたUSB機器M(n−1)に対して5回目〜n回目のループ処理で初期化処理が実行され、n回目のループ処理におけるステップS9の処理でポート選択指標iの値がn−1からnへ更新される。
【0060】
そして、n+1回目のループ処理では、初期化処理実行手段Cとして機能するマイクロプロセッサ2が、ポート選択指標iの現在値nに基いて第nアドレスの初期化対象特定パラメータF(n)の値をパラメータ記憶テーブル13から読み込み、その値が、初期化処理の実行を示す値0となっているのか初期化処理の非実行を示す値1となっているのかを判定するが(ステップS2)、この場合は初期化対象特定パラメータF(n)の値が初期化処理の非実行を示す値1となっているので(
図6参照)、ステップS2の判定結果は真となり、ポート名称#(n)のポートに接続されたUSB機器M(n)に関連するステップS3〜ステップS7の処理つまり初期化処理が非実行とされる。
【0061】
次いで、初期化処理実行手段Cとして機能するマイクロプロセッサ2がポート選択指標iの値をnからn+1にインクリメントし(ステップS9)、該指標iの現在値がパラメータ記憶テーブル13の最終アドレスの値nを超えているか否かを判定するが(ステッブS10)、この段階ではポート選択指標iの現在値がn+1となっているからステップS10の判定結果は真となり、初期化処理実行手段Cとして機能するマイクロプロセッサ2は、BIOSプログラムの他部たとえば他の周辺装置の初期化処理等を実行してからOSの起動を許容する。
【0062】
この場合、ポート名称#(n)のポートに接続されたUSB機器M(n)に関連する初期化処理は非実行とされているので、ステップS10の判定処理は、初期化処理の対象の候補としてパラメータ記憶テーブル13にポート名称#(i)を登録されたUSB機器のうち、初期化対象特定パラメータF(i)に初期化処理の非実行を示す値1を設定された最後のUSB機器M(i)、つまり、USB機器M(n−1)の初期化処理の完了を判定するための処理として機能することになる。
なお、この場合はポート名称#(2)のポートに接続されたUSB機器M(2)とポート名称#(n)のポートに接続されたUSB機器M(n)が作動しないことになる。
【0063】
以上に述べた通り、この実施形態のコンピュータ起動システムAは、予め設定された順序、つまり、パラメータ記憶テーブル13にポート名称#(i)を登録された順序に従ってコンピュータ1の起動時にUSB機器M(i)の初期化処理を実行し、初期化処理の対象とされた全てのUSB機器M(i)、即ち、対応する初期化対象特定パラメータF(i)に初期化処理の実行を示す値0を設定された全てのUSB機器M(i)の初期化処理が正常に終了した場合に限ってコンピュータ1のOSを起動する。
また、初期化処理の対象とされたUSB機器M(i)の何れかの初期化処理が正常に終了しなかった場合には、初期化処理が正常に終了しなかったUSB機器M(i)のポート名称#(i)に対応した初期化対象特定パラメータF(i)の値を初期化処理の非実行を示す値1に書き換えてコンピュータ1を再起動し、パラメータ記憶テーブル13に登録された順序に従って再びUSB機器M(i)の初期化処理を繰り返し実行する。
この結果、再起動後に実行される初期化処理では初期化処理の失敗が再度発生する可能性のあるUSB機器M(i)の初期化処理がスキップされて自動的に非実行となり、初期化処理におけるエラーの発生および其れに起因したシステム上の障害発生が未然に防止されるので、他のUSB機器の初期化処理を確実に実行してコンピュータ1のOSを起動することができる。
【0064】
従って、障害の生じたUSB機器M(i)やポート#(i)を再起動の度に初期化しようとして初期化に失敗し、再起動が無意味に繰り返されるといった不都合も解消される。
【0065】
特に、この実施形態にあっては、初期化処理の開始に先立って其の時点で初期化処理の対象とされているUSB機器M(i)に対応した初期化対象特定パラメータF(i)の値を初期化処理の実行を示す値0から初期化処理の非実行を示す値1に一旦書き換え、USB機器M(i)の初期化が成功した場合に限って初期化対象特定パラメータF(i)の値を初期化処理の実行を示す値0に書き戻すといった処理を採用しているので、RAM5に読み込まれたプログラムや一時的なデータに初期化処理の失敗による影響があった場合でも、USB機器M(i)の初期化処理の失敗に関連する情報すなわち初期化対象特定パラメータF(i)=1の内容をCMOSメモリ4内のパラメータ記憶テーブル13に確実に保存して再起動の際の初期化処理に役立てることができる。
【0066】
しかも、パラメータ記憶テーブル13はパラメータ記憶手段Bとして機能するCMOSメモリ4内に配置されており、システム障害の発生やコンピュータ1の再起動によって不用意に内容が損傷することないので、初期化処理の対象の候補とされたUSB機器M(i)を特定するためのポート名称#(i)の登録情報やポート名称#(i)の各々に対応して設定された初期化処理の実行順序(パラメータ記憶テーブル13内のアドレス)といったユーザ設定によるカスタマイズ情報が失われてデフォルトの状態に戻ってしまうといった不都合が解消され、また、障害復旧専用の初期化プログラムと通常の初期化プログラムを異なるROMに分散して配置する必要もないので、ROMの複数化による製造コストの問題も発生しない。
【0067】
図3に示されるようなコンピュータ起動プログラムはBIOSプログラムの一部としてROM3のブートブロックに格納されており、コンピュータ1のOSが起動されていない状態つまりシステムコールが利用できない状態でも機能するので、OS起動前の初期化処理においてUSB機器M(i)やポート#(i)の異常を検知してコンピュータ1を再起動させることができる。
【0068】
ここでは、初期化処理開始後の経過時間や初期化処理の所要時間をエラー判定値と比較することでUSB機器M(i)やポート#(i)の初期化が適切に行なわれたか否かを判定する例について述べているが、初期化処理におけるエラー検知の技術は各種のものが公知であり、その方法は特に問わない。
【0069】
以上に開示した実施形態の一部または全部は、以下の付記に示す記載によって適切に表現され得るが、発明を実施するための形態や発明の技術思想は、これらのものに制限されるものではない。
【0070】
〔付記1〕
予め設定された順序に従ってコンピュータの起動時に周辺装置の初期化処理を実行し、初期化処理の対象とされた全ての周辺装置の初期化処理が正常に終了した場合にはコンピュータのオペレーティング・システムを起動する一方、何れかの初期化処理が正常に終了しなかった場合にはコンピュータを再起動して前記予め設定された順序に従って周辺装置の初期化処理を繰り返し実行するコンピュータ起動システムにおいて、
初期化処理を実行すべき周辺装置として設定された周辺装置の各々を特定する初期化候補特定パラメータと前記設定された周辺装置の各々に対応して実際に初期化処理を実行するか否かを特定する初期化対象特定パラメータとを不揮発的に記憶するパラメータ記憶手段と、
前記パラメータ記憶手段に記憶された初期化候補特定パラメータに対応する周辺装置のうち、対応する初期化対象特定パラメータの設定が初期化処理の実行を示すものとなっている周辺装置に対してのみ順に初期化処理を実行し、その時点で初期化処理の対象とされている周辺装置の初期化処理が正常に終了しなかった場合には、コンピュータを再起動し、対応する初期化対象特定パラメータの設定が初期化処理の実行を示すものとなっている周辺装置に対して改めて最初から順に初期化処理を実行する一方、初期化処理の対象とされている最後の周辺装置の初期化処理の完了を検知すると前記オペレーティング・システムの起動を許容する初期化処理実行手段と、
前記初期化処理実行手段による1つの周辺装置の初期化処理が正常に終了した場合には、この周辺装置に対応する初期化対象特定パラメータの値を初期化処理の実行を示すものに保持する一方、前記初期化処理実行手段による1つの周辺装置の初期化処理が正常に終了しなかった場合には、少なくともコンピュータの再起動前に、この周辺装置に対応する初期化対象特定パラメータの値を初期化処理の非実行を示すものに書き換えるパラメータ書換手段とを備えたことを特徴とするコンピュータ起動システム。
【0071】
〔付記2〕
前記パラメータ書換手段は、前記初期化処理実行手段による初期化処理の開始に際し、その時点で初期化処理の対象となる周辺装置に対応する初期化対象特定パラメータの値を初期化処理の非実行を示すものに書き換え、前記初期化処理実行手段による初期化処理が正常に終了した場合に限って初期化処理の対象となった周辺装置に対応する初期化対象特定パラメータの値を初期化処理の実行を示すものに書き換えるように構成されていることを特徴とした付記1記載のコンピュータ起動システム。
【0072】
〔付記3〕
前記周辺装置がUSB機器であって、前記初期化候補特定パラメータはUSB機器のポート名称であることを特徴とした付記1または付記2のうち何れか一項に記載のコンピュータ起動システム。
【0073】
〔付記4〕
前記コンピュータ起動システムがベイシック・インプット・アウトプット・システムに組み込まれ、前記パラメータ記憶手段は前記コンピュータのベイシック・インプット・アウトプット・システム用のCMOSメモリによって構成されていることを特徴とした付記1,付記2または付記3のうち何れか一項に記載のコンピュータ起動システム。
【0074】
〔付記5〕
予め設定された順序に従ってコンピュータの起動時に周辺装置の初期化処理を実行し、初期化処理の対象とされた全ての周辺装置の初期化処理が正常に終了した場合にはコンピュータのオペレーティング・システムを起動する一方、何れかの初期化処理が正常に終了しなかった場合にはコンピュータを再起動して前記予め設定された順序に従って周辺装置の初期化処理を繰り返し実行するコンピュータ起動システムに配備されたマイクロプロセッサを、
初期化処理を実行すべき周辺装置として設定された周辺装置の各々を特定する初期化候補特定パラメータと前記設定された周辺装置の各々に対応して実際に初期化処理を実行するか否かを特定する初期化対象特定パラメータとを不揮発的に記憶するパラメータ記憶手段に記憶された初期化候補特定パラメータに対応する周辺装置のうち、対応する初期化対象特定パラメータの設定が初期化処理の実行を示すものとなっている周辺装置に対してのみ順に初期化処理を実行し、その時点で初期化処理の対象とされている周辺装置の初期化処理が正常に終了しなかった場合には、コンピュータを再起動し、対応する初期化対象特定パラメータの設定が初期化処理の実行を示すものとなっている周辺装置に対して改めて最初から順に初期化処理を実行する一方、初期化処理の対象とされている最後の周辺装置の初期化処理の完了を検知すると前記オペレーティング・システムの起動を許容する初期化処理実行手段、および、
前記初期化処理実行手段による1つの周辺装置の初期化処理が正常に終了した場合には、この周辺装置に対応する初期化対象特定パラメータの値を初期化処理の実行を示すものに保持する一方、前記初期化処理実行手段による1つの周辺装置の初期化処理が正常に終了しなかった場合には、少なくともコンピュータの再起動前に、この周辺装置に対応する初期化対象特定パラメータの値を初期化処理の非実行を示すものに書き換えるパラメータ書換手段として機能させることを特徴とするコンピュータ起動プログラム。
【0075】
〔付記6〕
前記パラメータ書換手段は、前記初期化処理実行手段による初期化処理の開始に際し、その時点で初期化処理の対象となる周辺装置に対応する初期化対象特定パラメータの値を初期化処理の非実行を示すものに書き換え、前記初期化処理実行手段による初期化処理が正常に終了した場合に限って初期化処理の対象となった周辺装置に対応する初期化対象特定パラメータの値を初期化処理の実行を示すものに書き換えるように構成されていることを特徴とした付記5記載のコンピュータ起動プログラム。
【0076】
〔付記7〕
前記周辺装置がUSB機器であって、前記初期化候補特定パラメータはUSB機器のポート名称であることを特徴とした付記5または付記6のうち何れか一項に記載のコンピュータ起動プログラム。
【0077】
〔付記8〕
付記5,付記6または付記7のうち何れか一項に記載のコンピュータ起動プログラムがベイシック・インプット・アウトプット・システムのリード・オンリー・メモリのブートブロックに格納されると共に、前記パラメータ記憶手段が前記ベイシック・インプット・アウトプット・システム用のCMOSメモリによって構成されていることを特徴としたコンピュータ。
【0078】
〔付記9〕
予め設定された順序に従ってコンピュータの起動時に周辺装置の初期化処理を実行し、初期化処理の対象とされた全ての周辺装置の初期化処理が正常に終了した場合にはコンピュータのオペレーティング・システムを起動する一方、何れかの初期化処理が正常に終了しなかった場合にはコンピュータを再起動して前記予め設定された順序に従って周辺装置の初期化処理を繰り返し実行するコンピュータ起動方法において、
初期化処理を実行すべき周辺装置として設定された周辺装置の各々を特定する初期化候補特定パラメータと前記設定された周辺装置の各々に対応して実際に初期化処理を実行するか否かを特定する初期化対象特定パラメータとを前記コンピュータのパラメータ記憶手段に予め不揮発的に記憶させておき、
前記パラメータ記憶手段に記憶された初期化候補特定パラメータに対応する周辺装置のうち、対応する初期化対象特定パラメータの設定が初期化処理の実行を示すものとなっている周辺装置に対してのみ順に初期化処理を実行し、その時点で初期化処理の対象とされている周辺装置の初期化処理が正常に終了した場合には、この周辺装置に対応する初期化対象特定パラメータの値を初期化処理の実行を示すものに保持する一方、
その時点で初期化処理の対象とされている周辺装置の初期化処理が正常に終了しなかった場合には、この周辺装置に対応する初期化対象特定パラメータの値を初期化処理の非実行を示すものに書き換えてからコンピュータを再起動し、対応する初期化対象特定パラメータの設定が初期化処理の実行を示すものとなっている周辺装置に対して改めて最初から順に初期化処理を実行し、
初期化処理の対象とされている最後の周辺装置の初期化処理の完了を検知すると、前記オペレーティング・システムの起動を許容することを特徴としたコンピュータ起動方法。
【0079】
〔付記10〕
初期化処理の開始に際し、その時点で初期化処理の対象となる周辺装置に対応する初期化対象特定パラメータの値を初期化処理の非実行を示すものに書き換え、初期化処理が正常に終了した場合に限って初期化処理の対象となった周辺装置に対応する初期化対象特定パラメータの値を初期化処理の実行を示すものに書き換えることを特徴とした付記9記載のコンピュータ起動方法。
【0080】
〔付記11〕
前記周辺装置がUSB機器であって、前記初期化候補特定パラメータはUSB機器のポート名称であることを特徴とした付記9または付記10のうち何れか一項に記載のコンピュータ起動方法。
【0081】
〔付記12〕
前記パラメータ記憶手段として前記コンピュータのベイシック・インプット・アウトプット・システム用のCMOSメモリを利用することを特徴とした付記9,付記10または付記11のうち何れか一項に記載のコンピュータ起動方法。