(57)【特許請求の範囲】
【請求項１】
稼働用ＢＩＯＳ(Basic Input Output System)を利用してのコンピュータの起動不良が所定回数以上連続して発生した後に、前記稼働用ＢＩＯＳの実行に伴うテストプログラムで発生したエラーコードを出力するエラーコード出力装置であって、
前記稼働用ＢＩＯＳの実行に伴うテストプログラムで発生したエラーコードを記憶するエラーコード記憶手段と、
前記エラーコード記憶手段に記憶されているエラーコードを出力するために必要な命令群しか含まないリカバリ用ＢＩＯＳと、
前記稼働用ＢＩＯＳを利用してのコンピュータの起動不良が所定回数以上連続して発生した時に、前記稼働用ＢＩＯＳに替えて前記リカバリ用ＢＩＯＳを利用してコンピュータを起動させる切替手段と、
を備え、
前記稼働用ＢＩＯＳを利用してのコンピュータの起動不良が所定回数以上連続して発生してから、前記リカバリ用ＢＩＯＳを利用して起動されたコンピュータは、少なくとも前記エラーコード記憶手段に記憶されているエラーコードを出力することを特徴とするエラーコード出力装置。
【請求項２】
請求項１に記載のエラーコード出力装置であって、
前記切替手段は、ハードウェアにより構成されることを特徴とするエラーコード出力装置。
【請求項３】
請求項１又は２に記載のエラーコード出力装置であって、
前記エラーコードを出力する際に、これに対応するエラーメッセージも出力することを特徴とするエラーコード出力装置。
【請求項４】
請求項１乃至３の何れか１項に記載のエラーコード出力装置であって、
前記稼働用ＢＩＯＳを利用してのコンピュータの起動不良が所定回数以上連続して発生したことを、コンピュータの起動時に起動され、前記稼働用ＢＩＯＳの終了部の命令で停止されるウォッチ・ドッグ・タイマがタイムアウトした回数に基づいて検出する手段を更に備えることを特徴とするエラーコード出力装置。
【請求項５】
請求項１乃至４の何れか１項に記載のエラーコード出力装置であって、
前記リカバリ用ＢＩＯＳの起動時に画面表示に必要な内容を有するＰＯＳＴ(Power On Self Test)を実行することを特徴とするエラーコード出力装置。
【請求項６】
請求項１乃至５の何れか１項に記載のエラーコード出力装置であって、
前記リカバリ用ＢＩＯＳから起動されたＯＳ(Operating System)から起動された修復プログラムが、前記稼働用ＢＩＯＳを修復することを特徴とするエラーコード出力装置。
【請求項７】
稼働用ＢＩＯＳ(Basic Input Output System)を利用してのコンピュータの起動不良が所定回数以上連続して発生した後に、前記稼働用ＢＩＯＳの実行に伴うテストプログラムで発生したエラーコードを出力するエラーコード出力方法であって、
稼働用ＢＩＯＳの実行に伴うテストプログラムで発生したエラーコードを記憶するエラーコード記憶ステップと、
前記稼働用ＢＩＯＳを利用してのコンピュータの起動不良が所定回数以上連続して発生した時に、前記稼働用ＢＩＯＳに替えて、前記エラーコード記憶ステップで記憶したエラーコードを出力するために必要な命令群しか含まないリカバリ用ＢＩＯＳを利用してコンピュータを起動させる切替ステップと、
を備え、
前記稼働用ＢＩＯＳを利用してのコンピュータの起動不良が所定回数以上連続して発生してから、前記リカバリ用ＢＩＯＳを利用してコンピュータが起動した後に、少なくとも前記エラーコード記憶ステップで記憶したエラーコードを出力することを特徴とするエラーコード出力方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テストプログラムで発生したエラーコードを出力するエラーコード出力装置及びエラーコード出力方法に関し、特に、ＢＩＯＳ  ＲＯＭ(Basic Input Output System Read Only Memory)を多重化してＰＯＳＴ(Power On Self Test)不具合をリカバリする際に好適なエラーコード出力装置及び方法に関するものである。
【背景技術】
【０００２】
従来のコンピュータ装置の主な構成を図３に示す。ＢＩＯＳ  ＲＯＭ９０４には装置のＢＩＯＳが記録されている。電源を投入すると、ＣＰＵ(Central Processing Unit)９０１はＢＩＯＳ  ＲＯＭ９０４からＢＩＯＳを読み込み、ＢＩＯＳにより各種のデバイスの初期化が行われる。ハードウェア障害が発生するとＰＯＳＴで停止するが、従来は致命的なハードウェア障害の場合、起動する方法はない。なお、図３において、９０２は制御回路、９０３はＲＡＭ(Random Access Memory)、９０５は補助記憶装置を示す。
【０００３】
一方、ＢＩＯＳプログラムの破壊対策としては、例えば、特許文献１に記載されているようにＲＯＭに２つのＢＩＯＳプログラムを用意し、一方のＢＩＯＳプログラムのブートブロックが壊れると、他方のＢＩＯＳプログラムを起動させてシステムの起動ができるようにしたものがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−０３８５２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来は、一般的に図３のような構成でＣＰＵ９０１、制御回路９０２が接続されているが、この構成においてはＢＩＯＳ  ＲＯＭ９０４が破壊された場合やその他ハードウェアに問題が発生した場合の復旧手段はない。
【０００６】
ＢＩＯＳ起動時にＰＯＳＴで起動不具合が発生した際の復旧手段としては、ウォッチ・ドッグ・タイマを使用し、システムリセットを出力する方法がある。しかし、ＢＩＯＳが格納されているＲＯＭ破壊やハードウェア不具合が発生していた場合に関しては復旧することはできない。
【０００７】
ＢＩＯＳが格納されているＲＯＭ破壊の対策としては、例えば、特許文献１等に記載されているようにＢＩＯＳを２つ実装する方法がある。しかし、２つのＢＩＯＳ  ＲＯＭには同一のＢＩＯＳプログラムが記録されているため、ＢＩＯＳ  ＲＯＭ破壊以外のハードウェア要因によりＰＯＳＴで停止している場合には復旧することはできない。
【０００８】
また、起動するＢＩＯＳ  ＲＯＭは自動的に変更できなかったり、起動不具合が発生した時にユーザによる操作が必要の場合がある。そのような場合には、ＢＩＯＳでＲＯＭ変更処理を行っているため、ＢＩＯＳが全く動作しない場合にはＲＯＭの変更が出来ないこともある。ＰＯＳＴでの起動不具合で起動不能となった装置は回路規模が大きく、原因の特定が難航するため、ユーザはメモリを含んだ形でマザーボード交換を行う以外の方法はなかった。
【０００９】
本発明の目的は、ＢＩＯＳを利用しての起動不良が発生し、ＢＩＯＳに伴うＰＯＳＴで生ずるエラーコードを通常ならば出力できない場合であっても、そのエラーコードを出力することを可能とするエラーコード出力装置及び方法を提供することにある。
【課題を解決するための手段】
【００１０】
本発明に係るエラーコード出力装置は、稼働用ＢＩＯＳ(Basic Input Output System)を利用してのコンピュータの起動不良が所定回数以上連続して発生した後に、前記稼働用ＢＩＯＳの実行に伴うテストプログラムで発生したエラーコードを出力するエラーコード出力装置であって、前記稼働用ＢＩＯＳの実行に伴うテストプログラムで発生したエラーコードを記憶するエラーコード記憶手段と、前記エラーコード記憶手段に記憶されているエラーコードを出力するために必要な命令群しか含まないリカバリ用ＢＩＯＳと、前記稼働用ＢＩＯＳを利用してのコンピュータの起動不良が所定回数以上連続して発生した時に、前記稼働用ＢＩＯＳに替えて前記リカバリ用ＢＩＯＳを利用してコンピュータを起動させる切替手段と、を備え、前記稼働用ＢＩＯＳを利用してのコンピュータの起動不良が所定回数以上連続して発生してから、前記リカバリ用ＢＩＯＳを利用して起動されたコンピュータは、少なくとも前記エラーコード記憶手段に記憶されているエラーコードを出力することを特徴とする。
【００１１】
また、本発明に係るエラーコード出力方法は、稼働用ＢＩＯＳ(Basic Input Output System)を利用してのコンピュータの起動不良が所定回数以上連続して発生した後に、前記稼働用ＢＩＯＳの実行に伴うテストプログラムで発生したエラーコードを出力するエラーコード出力方法であって、稼働用ＢＩＯＳの実行に伴うテストプログラムで発生したエラーコードを記憶するエラーコード記憶ステップと、前記稼働用ＢＩＯＳを利用してのコンピュータの起動不良が所定回数以上連続して発生した時に、前記稼働用ＢＩＯＳに替えて、前記エラーコード記憶ステップで記憶したエラーコードを出力するために必要な命令群しか含まないリカバリ用ＢＩＯＳを利用してコンピュータを起動させる切替ステップと、を備え、前記稼働用ＢＩＯＳを利用してのコンピュータの起動不良が所定回数以上連続して発生してから、前記リカバリ用ＢＩＯＳを利用してコンピュータが起動した後に、少なくとも前記エラーコード記憶ステップで記憶したエラーコードを出力することを特徴とする。
【発明の効果】
【００１２】
本発明によれば、ＢＩＯＳを利用しての起動不良が発生し、ＢＩＯＳに伴うＰＯＳＴで生ずるエラーコードを通常ならば出力できない場合であっても、そのエラーコードを出力することが可能であるので、通常ならばユーザが起動不良の原因がわからない場合であっても、ユーザが起動不良の原因を知ることができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の一実施形態を示すブロック図である。
【図２】図１の動作を説明するフローチャートである。
【図３】従来例のコンピュータ装置を示すブロック図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明を実施するための形態について詳細に説明する。まず、本発明に係るエラーコード出力装置（以下の実施形態では、本発明をＢＩＯＳ  ＲＯＭ多重化によるＰＯＳＴ不具合リカバリシステムに適用した例を説明する）は、演算を行う演算装置（ＣＰＵ）１０１、基本入出力プログラムであるＢＩＯＳを記録している稼働用ＲＯＭ１０４、基本入出力プログラムのうちの画面表示に必要な部分のみ又は画面表示に必要な部分及び入力装置有効化に必要な部分のみからなるリカバリ用ＢＩＯＳを記録しているリカバリ用ＲＯＭ１０７、補助記憶装置１０５等を制御する制御回路（チップセット）１０２、ＢＩＯＳの  ＰＯＳＴ  ＣＯＤＥをデコードするＰＯＳＴ  ＣＯＤＥデコード回路１０９、デコードされたＰＯＳＴ  ＣＯＤＥを保存する領域を有するＲＡＭ１１０とそれをデコードするデコード回路、稼働用ＢＩＯＳ  ＲＯＭ１０４又はリカバリ用ＢＩＯＳ  ＲＯＭ１０７を選択するＢＩＯＳ  ＲＯＭセレクタ回路１０６、稼働用ＢＩＯＳの実行が正常に行われたか否かを判断するためのウォッチ・ドッグ・タイマ１０８等を有する。
【００１５】
本発明では、起動不良により連続的にウォッチ・ドッグ・タイマがタイムアウトした際に利用するＢＩＯＳを稼働用ＢＩＯＳからリカバリ用ＢＩＯＳに切り替える。ＲＯＭの選択はＢＩＯＳ  ＲＯＭが破壊した場合を考慮し、ＢＩＯＳの処理で行うのではなくハードウェアで行う。リカバリ用ＢＩＯＳではＰＯＳＴでのハードウェアチェックは最小限の初期化処理（画面表示を可能にするための処理又は画面表示を可能にして入力装置を有効化するための処理）のみを行う。リカバリ用ＢＩＯＳのＢＩＯＳスプラッシュ画面では稼働用ＢＩＯＳ  ＲＯＭで起動に失敗した際に最後に出力したＰＯＳＴ  ＣＯＤＥ（エラーコード）とそのエラーコードに対応するエラーメッセージを画面出力し、ユーザへハードウェア障害が発生している旨のアラーム通知を行う。ユーザーはこのエラーコード又はエラーコード及びエラーメッセージによりハードウェア不具合箇所の特定を行う。
【００１６】
本発明によるＢＩＯＳ  ＲＯＭ多重化によるＰＯＳＴ不具合リカバリシステムは、ＢＩＯＳを格納するＲＯＭやハードウェア問題でＰＯＳＴでの起動不具合が生じた時の自動リカバリを可能とすることを特徴とする。一般的にＢＩＯＳを格納したＲＯＭはチップセットと接続され、電源投入時にこのＲＯＭからＢＩＯＳプログラムを読み込み、ＢＩＯＳによりＰＯＳＴでのハードウェアの初期化及びハードウェアチェック後にＯＳ(Operating System)を起動する。本実施形態ではこのＢＩＯＳを格納するＲＯＭを多重化し、異なる内容（稼働用、リカバリ用）のＢＩＯＳプログラムを使用する。
【００１７】
ＢＩＯＳ  ＲＯＭやマザーボードのハードウェアに何らかの問題が発生した場合にはＯＳブート処理まで進まず、ＢＩＯＳのＰＯＳＴで停止して起動不具合が発生する。単発的なハードウェア障害の場合にはマザーボードのシステムにウォッチ・ドッグ・タイマ等のような機能を持たせて一定時間後にリセットを発行する処理を追加することで復旧が可能である。
【００１８】
しかし、この起動不具合の原因がＢＩＯＳ  ＲＯＭ破壊の場合やハードウェアに致命的な不具合が発生している場合には、ウォッチ・ドッグ・タイマによる復旧に失敗し、リセットを繰り返し続けることとなる。
【００１９】
そこで、本実施形態では、異なるＢＩＯＳバイナリプログラムを記録した、稼働用ＢＩＯＳ  ＲＯＭとリカバリ用ＢＩＯＳ  ＲＯＭを実装する。また、稼働用ＢＩＯＳが動作していた際の稼働用ＢＩＯＳのエラーコードを取得するため、稼働用ＢＩＯＳのＰＯＳＴ  ＣＯＤＥを記録する回路とそれを記録するＲＡＭ領域を有する。
【００２０】
稼働用ＢＩＯＳ  ＲＯＭには通常動作する際に使用される一般的なＢＩＯＳが格納されている。リカバリ用ＢＩＯＳ  ＲＯＭには稼働用ＢＩＯＳ  ＲＯＭからの起動に連続的に失敗した時に起動されるリカバリ用ＢＩＯＳが格納されている。リカバリ用ＢＩＯＳは、稼働用ＢＩＯＳではＯＳを起動できない時に、エラーコードを出力することと、入力装置を有効化することと、ＯＳを起動することを目的としており、メモリチェック等の稼働用ＢＩＯＳで行うハードウェアテストを省略し、画面表示と入力装置の有効化とＯＳ起動に必要な必要最低限のハードウェアの初期設定のみを行う。但し、入力装置の有効化は省略してもよい。
【００２１】
ここで、ＲＯＭ選択はＢＩＯＳの処理ではなく、ハードウェアで行うと説明したが、これは、ＲＯＭの選択をＢＩＯＳの処理で行うと、ＢＩＯＳのバイナリコードが破壊されている場合には、正しく動作せず、起動不具合が発生する恐れがあるからである。そこで、ＢＩＯＳ  ＲＯＭセレクタ回路１０６にカウンタ回路とセレクタ回路の機能を持たせている。ＢＩＯＳ  ＲＯＭセレクタ回路１０６をウォッチ・ドッグ・タイマ１０８に接続し、ウォッチ・ドッグ・タイマ１０８のタイムアウト回数をカウントする。ある一定回数のウォッチ・ドッグ・タイマのタイムアウトを検出すると、ＢＩＯＳ  ＲＯＭセレクタ回路１０６がセレクタ信号を稼働用ＢＩＯＳ  ＲＯＭ１０４からリカバリ用ＢＩＯＳ  ＲＯＭ１０７へ切り替える。
【００２２】
また、リカバリ用ＢＩＯＳ１０７から起動して、ＢＩＯＳスプラッシュ画面等のようにＢＩＯＳで画面出力する時に、稼働用ＢＩＯＳ  ＲＯＭ１０４から起動した時にＰＯＳＴが発生したＰＯＳＴ  ＣＯＤＥ（エラーコード）とそれに対応するエラーメッセージを画面出力し、ハードウェア障害が発生している旨と、エラー内容をユーザへ知らせ、ハードウェア障害を迅速にユーザへ認識させることを可能とする。
【００２３】
ここで、稼働用ＢＩＯＳ１０４はどのようなこと（ＰＯＳＴの内容）を行うのか、以下に一例を示す（これは一部である）。
・ＣＰＵの認識、初期化。
・ＣＰＵ／ＣＨＩＰ  ＳＥＴ  ＩＦ(CPU/Chip set interface)  初期化。
・ＣＨＩＰＳＥＴ（制御回路）の初期化。
・メモリの初期化。
・各ＩＦ(interface)の初期化（ＵＳＢ(Universal serial bus)、ＰＣＩ(Peripheral Component Interface)等）。
・接続デバイス（ＰＣＩ等）のサーチ及び初期化。
・Ｄｉｓｐｌａｙの初期化。
・メモリテスト。
・補助記憶装置（ブートデバイス）のサーチ及び認識。
・補助記憶装置からのＯＳブート。
【００２４】
図１は本発明に係るシステムの一実施形態を示すブロック図である。図１を参照すると、本発明に係るシステムは、ＣＰＵ１０１、制御回路１０２、ＲＡＭ１０３（メインメモリ）、稼働用ＢＩＯＳ用ＲＯＭ１０４、補助記憶装置１０５、ＢＩＯＳ  ＲＯＭセレクタ回路１０６、リカバリ用ＢＩＯＳ  ＲＯＭ１０７、ＰＯＳＴ  ＣＯＤＥデコード回路１０９、ＰＯＳＴ  ＣＯＤＥを記録するＲＡＭ１１０（解析用）によって構成されている。
【００２５】
稼働用ＢＩＯＳ  ＲＯＭ１０４及びリカバリ用ＢＩＯＳ  ＲＯＭ１０７は、ＥＥＰＲＯＭ(Electrically Erasable and Programmable Read Only Memory)などの書き換え可能なＲＯＭである。
【００２６】
上記の構成のマザーボードにて、稼働用ＢＩＯＳ  ＲＯＭ１０４には基本制御を行う一般的なＢＩＯＳバイナリプログラムが記録されている。電源を投入するとＣＰＵ１０１が稼働用ＢＩＯＳ  ＲＯＭ１０４に記録されているＢＩＯＳを読み込み、それを元に各デバイスの初期化及びメモリデバイスのチェックを行い、それらの入出力装置をＯＳ等が利用できるようにする。ハードディスクのような一般的な補助記憶装置１０５や周辺機器は一般的にそれぞれ異なるバスに接続されているため、これらを制御する制御回路１０２に接続されている。
【００２７】
また、本発明では、リカバリ用ＢＩＯＳ  ＲＯＭ１０７、ＢＩＯＳ  ＲＯＭを選択するＢＩＯＳ  ＲＯＭセレクタ回路１０６、ＢＩＯＳの起動不具合を検出するウォッチ・ドッグ・タイマ１０８、ＢＩＯＳに伴うＰＯＳＴが出力するＰＯＳＴ  ＣＯＤＥをデコードするためのＰＯＳＴ  ＣＯＤＥデコード回路１０９、デコードされたＰＯＳＴ  ＣＯＤＥを記録するＲＡＭ１１０を追加している。
【００２８】
ＲＡＭ１１０は、ＢＩＯＳが処理の節目に出力するＰＯＳＴ  ＣＯＤＥ（エラーコード）を記録するための領域と、ＰＯＳＴ  ＣＯＤＥに対応したエラーメッセージを記録するための領域を有する。稼働用ＢＩＯＳ  ＲＯＭ１０４からの起動に複数回連続して失敗し、リカバリ用ＢＩＯＳ  ＲＯＭ１０７から起動した場合には、最後に稼働用ＢＩＯＳを実行した時にＲＡＭ１１０に記録されたＰＯＳＴ  ＣＯＤＥとエラーメッセージをスプラッシュとして画面に出力する。また、ＰＯＳＴ  ＣＯＤＥとエラーメッセージを記録しているＲＡＭへは、ＯＳやＯＳから起動されたアプリケーションからもアクセス可能である。なお、ＲＡＭ１１０にはエラーメッセージを記録せず、ＰＯＳＴ  ＣＯＤＥに対応したエラーメッセージをリカバリ用ＢＩＯＳに埋め込んだり、ＯＳに埋め込んだり、アプリケーションに埋め込んでもよい。
【００２９】
次に、図１の装置構成の動作を説明する。図１において、ＣＰＵ１０１は、稼働用ＢＩＯＳ  ＲＯＭ１０４からＢＩＯＳプログラムを読み込み、周辺機器の初期設定を行う。その際、ＢＩＯＳはＰＯＳＴと呼ばれる動作チェックを行う。ＰＯＳＴでは、各処理の節目にＰＯＳＴ  ＣＯＤＥを出力するため、そのＰＯＳＴ  ＣＯＤＥを基にＢＩＯＳがどのような処理を行ったかを調べることが可能である。
【００３０】
このＰＯＳＴ  ＣＯＤＥは、一般的にＩ／Ｏアドレスの０ｘ８０ｈに対して出力される。例えば、メインメモリの初期化が終わった際にはＰＯＳＴ  ＣＯＤＥ  ０ｘ０１を出力、ビデオ関係の初期化が終了した時は、ＰＯＳＴ  ＣＯＤＥ  ０ｘ０２を出力、…、等のように各処理の節目にＰＯＳＴ  ＣＯＤＥの出力が行われ、ＰＯＳＴ  ＣＯＤＥからＢＩＯＳの処理のうち終了した処理を大まかに確認することが可能である。
【００３１】
図１に示すような構成のマザーボードが正常である時には、ＢＩＯＳ  ＲＯＭセレクタ回路１０６は稼働用ＢＩＯＳ  ＲＯＭ１０４を選択し、通常の制御手順で立ち上がる。ＢＩＯＳ  ＲＯＭセレクタ回路１０６はＰＯＳＴ  ＣＯＤＥデコード回路１０９をＥｎａｂｌｅ設定とする。ＢＩＯＳが出力するＰＯＳＴ  ＣＯＤＥはＰＯＳＴ  ＣＯＤＥデコード回路１０９によりＲＡＭ１１０のＩｎｔｅｒｆａｃｅに合うように変換され、ＲＡＭ１１０に記録される。
【００３２】
また、起動不具合を検出するためのウォッチ・ドッグ・タイマ１０８は電源投入直後にＥｎａｂｌｅ状態に設定され、ＢＩＯＳに伴うＰＯＳＴの最後の処理でこの機能をＤｉｓａｂｌｅ設定にされる。（ＯＳ起動状態ではウォッチ・ドッグ・タイマ１０８は起動不良の検出が必要ないため無効設定にする）。上記構成でＰＯＳＴでの起動不具合が発生し、ウォッチ・ドッグ・タイマがタイムアウトした時は、ウォッチ・ドッグ・タイマ１０８によりシステムリセットが発行される。タイムアウトしたウォッチ・ドッグ・タイマ１０８からのシステムリセットの回数はＢＩＯＳ  ＲＯＭセレクタ回路１０６でカウントされる。
【００３３】
ＢＩＯＳ  ＲＯＭの切り替えは、所定回数連続的にウォッチ・ドッグ・タイマ１０８のタイムアウトによりシステムリセットが出力された時のみ行う。ウォッチ・ドッグ・タイマ１０８のタイムアウトによるシステムリセットの回数（カウント）はリカバリＢＩＯＳに伴うＰＯＳＴの最後の処理でクリアする。また、稼働用ＢＩＯＳに伴うＰＯＳＴでの起動不具合が発生した場合において、ＰＯＳＴで停止箇所を特定するために停止時のＰＯＳＴ  ＣＯＤＥをＲＡＭ１１０に記録する。
【００３４】
ＲＡＭ１１０のＰＯＳＴ  ＣＯＤＥの記憶領域は、それぞれウォッチ・ドッグ・タイマ１０８のタイムアウトの各回数毎に予め決めておき、ウォッチ・ドッグ・タイマ１０８のタイムアウトによるリセットが発行される度にＰＯＳＴ  ＣＯＤＥを別々の記憶領域に記録することを可能にする。ウォッチ・ドッグ・タイマ１０８が所定回数連続してタイムアウトすることにより、リセットカウント値が所定回数に対応する値となり、リカバリＢＩＯＳから起動する時はこの記憶領域からタイムアウト直前のＰＯＳＴ  ＣＯＤＥを読み出し、更に、各ＰＯＳＴ  ＣＯＤＥとそれに対応したエラーメッセージとが対応付けられているテーブルから読み出したＰＯＳＴ  ＣＯＤＥに対応するエラーメッセージを読み出し、読み出したＰＯＳＴ  ＣＯＤＥとエラーメッセージをスプラッシュ画面に表示し、ユーザへアラーム通知を行う。なお、各ＰＯＳＴ  ＣＯＤＥとそれに対応したエラーメッセージとが対応付けられているテーブルは、上述したようにリカバリ用ＢＩＯＳに埋め込んでもよいが、例えば、ＲＯＭのＢＩＯＳ領域以外の領域に設けてもよい。また、上述したように、ＰＯＳＴ  ＣＯＤＥをＲＡＭ１１０に記録する際に、ＰＯＳＴ  ＣＯＤＥに対応するエラーメッセージもＲＡＭ１１０に記録してもよい。
【００３５】
ハードウェアの単発的な不具合の場合には、システムリセットを受けて再起動で復旧する。この時には稼働用ＢＩＯＳ処理となり、ＢＩＯＳ画面でエラー内容の表示を行わないが、ＯＳ又はＯＳから起動されるアプリケーションがＲＡＭ１１０のＰＯＳＴ  ＣＯＤＥ記録領域を参照することにより単発的な起動不具合が発生していることを確認することが可能となる。
【００３６】
ＢＩＯＳ  ＲＯＭ破壊等の致命的なハードウェア問題はシステムリセットで復旧しない場合がある。本実施形態では、ウォッチ・ドッグ・タイマ１０８のタイムアウトによって連続的に発生したシステムリセットの回数をカウントし、予め決めた回数のウォッチ・ドッグ・タイマ１０８のタイムアウトによるシステムリセットが発行された場合には、ＢＩＯＳ  ＲＯＭセレクタ回路１０６が稼働用ＢＩＯＳ  ＲＯＭ１０４からリカバリ用ＢＩＯＳ  ＲＯＭ１０７へ切り替えを行い、リカバリ用ＢＩＯＳから起動する。この時、ＰＯＳＴでの処理は、画面表示を可能にして、入力装置をＯＳから使えるようにして、ＯＳを起動するために必要最小限の処理とする。但し、リカバリ用ＢＩＯＳがＰＯＳＴ  ＣＯＤＥ又はＰＯＳＴ  ＣＯＤＥ及びこれに対応したエラーメッセージを表示することだけで十分なのであれば、ＰＯＳＴでの処理は、画面表示を可能にするために必要最小限の処理としてもよい。
【００３７】
リカバリ用ＢＩＯＳの必要最小限の処理とは、全ての処理を省略することはできないため起動する必要最低限の処理をいう。本実施形態における必要最低限の処理の一例を以下に示す。
・ＣＰＵの認識、初期化（省略不可）。
・ＣＰＵ／ＣＨＩＰＳＥＴ  ＩＦの初期化（省略不可）。
・ＣＨＩＰＳＥＴ（制御回路）の初期化（一部省略及び固定値を設定）。
・制御回路に接続されるＩＦのうち起動するために必要な箇所のみ設定（また、アクセス速度を落とすことが可能な場合はアクセス速度を落とす）。
・メモリの初期化（通常はＤＩＭＭ(Dual Inline Memory Module)へアクセスし最適なアクセス速度を設定するが、リカバリモードではサポートしている最も遅い速度を設定する（固定値）。ＤＩＭＭ認識のためのアクセスを行わない。
・各ＩＦの初期化（ＵＳＢ、ＰＣＩ等）（接続されているＰＣＩデバイスの不良が想定されるため基本的には行わない）。但し、ＵＳＢ等のように動作速度を落としても動作するものに関しては動作速度を落とす。また、ＵＳＢ ２．０コントローラは使用せず、ＵＳＢ １.１コントローラを使用する。外部接続デバイス（ＰＣＩ等）のサーチ及び初期化（基本的には行わない）。
・Ｄｉｓｐｌａｙの初期化（省略不可）。（画面表示が行われない場合操作が行えないため実施する）。
・メモリテスト（省略）（メモリ不良で停止している可能性があるため）。
・補助記憶装置（ブートデバイス）のサーチ及び認識（ブートデバイスが予め固定化されている場合は省略し、最も遅い速度に設定する（固定値））。例えば、ＰＡＴＡのＨＤＤが接続されている場合には、ＰＩＯモードで動作するように設定する。
・補助記憶装置からのＯＳブート（省略不可）。
【００３８】
リカバリ用ＢＩＯＳでは画面表示、入力装置有効化、ＯＳ起動を行うための必要最低限の初期化を行った後、ＢＩＯＳスプラッシュ画面等のような画面表示を行う際にＰＯＳＴ  ＣＯＤＥを記録しているＲＡＭ１１０に対してアクセスし、起動不具合が発生した時のＰＯＳＴ  ＣＯＤＥ（エラーコード）及びそのエラーコードに対応するエラーメッセージを表示し、ユーザへアラーム通知を行う。
【００３９】
起動不具合の原因はＢＩＯＳ  ＲＯＭ内容の破壊によることが原因であることも考えられるため、ＯＳをブートする際にＢＩＯＳ  ＲＯＭセレクタ回路１０６はリカバリ用ＢＩＯＳ  ＲＯＭ１０７から稼働用ＢＩＯＳ  ＲＯＭ１０４への切り替えを行う。
【００４０】
そのため、ＯＳ起動が可能な場合、ユーザは通常のハードウェアベンダが提供しているＢＩＯＳ書き換えプログラム（これは、ＯＳから起動される。）を利用し、稼働用ＢＩＯＳ  ＲＯＭ１０４のデータを正常なＢＩＯＳに書き換えることが可能となる。リカバリ用ＢＩＯＳは稼働用ＢＩＯＳと異なるため、リカバリ用ＢＩＯＳ  ＲＯＭ１０７の書き換えは行えないようにする。但し、リカバリ用ＢＩＯＳ１０７に致命的な不具合があり、これを書き換える必要がある場合には、ＢＩＯＳ書き換えツールにより、リカバリ用ＢＩＯＳ  ＲＯＭ１０７のデータを正常なリカバリ用ＢＩＯＳに書き換える。
【００４１】
図２は、図１に示す本発明の実施形態によるエラーコード出力回路を含む回路の動作を示すフローチャートである。
【００４２】
まず、ウォッチ・ドッグ・タイマ１０８のタイムアウトの回数をカウントし（Ｓ２０１）、タイムアウト回数が所定回数ｘ（例えば５回）未満であれば正常、所定回数ｘ以上であれば異常と判断する。
【００４３】
正常である場合には、Ｓ２０２に進み、ウォッチ・ドッグ・タイマ１０８をスタートした後（Ｓ２０２）、稼働用ＢＩＯＳ  ＲＯＭ１０４を選択し（Ｓ２０３）、ＰＯＳＴ  ＣＯＤＥデコード回路１０９をオンする（Ｓ２０４）。次いで、稼働用ＢＩＯＳ  ＲＯＭ１０４からＢＩＯＳプログラムを読み込み（Ｓ２０５）、ＰＯＳＴをスタートする（Ｓ２０６）。
【００４４】
稼働用ＢＩＯＳとこれに伴うＰＯＳＴは、ハードウェアの初期化やハードウェアのチェックを行い（Ｓ２０７）、スプラッシュ画面を表示する（Ｓ２０８）。続いて、ウォッチ・ドッグ・タイマ１０８をストップし（Ｓ２０９）、ＰＯＳＴを終了して（Ｓ２１０）、オペレーティングシステムを起動する（Ｓ２１１）。
【００４５】
但し、ステップＳ２１１まで進むのは、稼働用ＢＩＯＳが正常である場合である。稼働用ＢＩＯＳが正常でない場合には、ステップＳ２０９よりも前で、動作が滞り、ウォッチ・ドッグ・タイマ１０８がステップＳ２０９でストップされないため、ウォッチ・ドッグ・タイマ１０８がタイムアウトし、これによりコンピュータはリセットされ、再起動する。
【００４６】
再起動が繰り返され、Ｓ２０１においてウォッチ・ドッグ・タイマ１０８のタイムアウト回数が所定回数ｘ以上であった場合には、Ｓ２２１に進み、ウォッチ・ドッグ・タイマ１０８をスタートする。次に、今度はリカバリ用ＢＩＯＳ  ＲＯＭ１０７を選択し（Ｓ２２２）、リカバリ用ＢＩＯＳ  ＲＯＭ１０７からＢＩＯＳプログラムを読み込み（Ｓ２２３）、ＰＯＳＴをスタートする（Ｓ２２４）。
【００４７】
ＰＯＳＴではテストのみならず設定も行うため、リカバリ用ＢＩＯＳで起動したときにも、ＰＯＳＴを実行することが必要である。但し、リカバリ用ＢＩＯＳで起動したときに実行するＰＯＳＴは、必要最低限の命令を持ったものとする。ここで、必要最低限の命令とは、画面表示のために必要な命令である。但し、ＯＳを起動してＯＳ上で実行される修復プログラムにより稼働用ＢＩＯＳを修復する場合、必要最低限の命令は入力装置を動作可能にするための命令も含む。
【００４８】
次いで、エラーコード出力（スプラッシュ画面での表示）に必要なハードウェアを初期化し（Ｓ２２５）、ＲＡＭ１１０からＰＯＳＴ  ＣＯＤＥ（エラーコード）を取得する（Ｓ２２６）。続いて、ＢＩＯＳのスプラッシュ（上述のようにエラーコード及びそのエラーコードに対応するエラーメッセージを表示）を行い（Ｓ２２７）、ウォッチ・ドッグ・タイマ１０８をストップする（Ｓ２２８）。その後、稼働用ＢＩＯＳ  ＲＯＭ１０４を選択し（Ｓ２２９）、ＰＯＳＴを終了させる（Ｓ２３１）。
【００４９】
次いで、ＯＳを起動し（Ｓ２３３）、修復プログラムを実行する（Ｓ２３５）。即ち、上述のようにＯＳ上で実行される修復プログラムが稼働用ＢＩＯＳを修復する。稼働用ＢＩＯＳの修復とは、稼働用ＢＩＯＳを格納しているメモリのデータを正しい稼働用ＢＩＯＳに書き換えることである。
【００５０】
ここで、図２ではリカバリ用ＢＩＯＳによるＰＯＳＴの実行後、ＯＳをブートする前に稼働用ＢＩＯＳに切り替えている。その際、リカバリ用ＢＩＯＳから起動している場合には、ＢＩＯＳ  ＲＯＭ破壊やハードウェアの不良が発生していることが考えられる。リカバリ用ＢＩＯＳからのＯＳ起動時に不良の切り分けとしてＢＩＯＳの書き換えを行いたい時にＲＯＭがリカバリ用ＢＩＯＳを選択している場合には、リカバリ用ＢＩＯＳ  ＲＯＭを書き換えてしまうこととなるため、ここで切り替えを行うことを想定している。
【００５１】
また、本実施形態では、リカバリ用ＢＩＯＳによる必要最小限の処理を行ってでもＯＳを起動している。これは、例えば、ユーザに稼働用ＢＩＯＳの不良が発生していることを通知するためや、稼働用ＢＩＯＳの書換えを促すためにＯＳを起動させる必要があるからである。更に、迅速にハードウェアの不具合箇所の特定を行うためにＰＯＳＴ  ＣＯＤＥのデコード結果を保持するメモリ領域へのアクセスを行うためにＯＳを起動させる必要があるからである。
【００５２】
なお、以上の実施形態では、ＰＯＳＴ  ＣＯＤＥとそれに対応するメッセージを画面に表示することとしたが、それらを読んだ声をスピーカから出力したり、それらに対応する予め定めたパターン音をブザーを用いて出力（ビープ出力）してもよい。
【００５３】
以上説明したように、本実施形態においては、以下に記載するような効果を奏する。
【００５４】
第１の効果は、稼働用ＢＩＯＳを利用してのコンピュータの起動不良が所定回数以上連続して発生した後に稼働用ＢＩＯＳの実行に伴うテストプログラムで発生したエラーコードを出力、即ち、スプラッシュ画面に表示することにより、ユーザは起動不良の原因を知ることができることである。
【００５５】
第２の効果は、リカバリ用ＢＩＯＳの起動時に画面表示に必要な内容を有するＰＯＳＴを実行するが、リカバリ用ＢＩＯＳから起動されたＯＳから起動された修復プログラムにより稼働用ＢＩＯＳを修復することである。稼働用ＢＩＯＳの修復とは、上述のように稼働用ＢＩＯＳを格納しているメモリのデータを正しい稼働用ＢＩＯＳに書き換えることをいう。
【００５６】
上記実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限らない。
【００５７】
（付記１）稼働用ＢＩＯＳ(Basic Input Output System)を利用してのコンピュータの起動不良が所定回数以上連続して発生した後に、前記稼働用ＢＩＯＳの実行に伴うテストプログラムで発生したエラーコードを出力することを特徴とするエラーコード出力装置。
【００５８】
（付記２）付記１に記載のエラーコード出力装置であって、
稼働用ＢＩＯＳ(Basic Input Output System)の実行に伴うテストプログラムで発生したエラーコードを記憶するエラーコード記憶手段と、
前記エラーコード記憶手段に記憶されているエラーコードを出力するために必要な命令群しか含まないリカバリ用ＢＩＯＳと、
前記稼働用ＢＩＯＳを利用してのコンピュータの起動不良が所定回数以上連続して発生した時に、前記稼働用ＢＩＯＳに替えて前記リカバリ用ＢＩＯＳを利用してコンピュータを起動させる切替手段と、
を備え、
前記稼働用ＢＩＯＳを利用してのコンピュータの起動不良が所定回数以上連続して発生してから、前記リカバリ用ＢＩＯＳを利用して起動されたコンピュータは、少なくとも前記エラーコード記憶手段に記憶されているエラーコードを出力することを特徴とするエラーコード出力装置。
【００５９】
（付記３）付記２に記載のエラーコード出力装置であって、
前記切替回路は、ハードウェアにより構成されることを特徴とするエラーコード出力装置。
【００６０】
（付記４）付記１乃至３の何れか１に記載のエラーコード出力装置であって、
前記エラーコードを出力する際に、これに対応するエラーメッセージも出力することを特徴とするエラーコード出力装置。
【００６１】
（付記５）付記１乃至４の何れか１に記載のエラーコード出力装置であって、
前記稼働用ＢＩＯＳを利用してのコンピュータの起動不良が所定回数以上連続して発生したことを、コンピュータの起動時に起動され、前記稼働用ＢＩＯＳの終了部の命令で停止されるウォッチ・ドッグ・タイマがタイムアウトした回数に基づいて検出する手段を更に備えることを特徴とするエラーコード出力装置。
【００６２】
（付記６）付記２乃至５の何れか１に記載のエラーコード出力装置であって、
前記リカバリ用ＢＩＯＳの起動時に画面表示に必要な内容を有するＰＯＳＴを実行することを特徴とするエラーコード出力装置。
【００６３】
（付記７）付記２乃至６の何れか１に記載のエラーコード出力装置であって、
前記リカバリ用ＢＩＯＳから起動されたＯＳから起動された修復プログラムが、前記稼働用ＢＩＯＳを修復することを特徴とするエラーコード出力装置。
【００６４】
（付記８）稼働用ＢＩＯＳ(Basic Input Output System)を利用してのコンピュータの起動不良が所定回数以上連続して発生した後に、前記稼働用ＢＩＯＳの実行に伴うテストプログラムで発生したエラーコードを出力することを特徴とするエラーコード出力方法。
【００６５】
（付記９）付記８に記載のエラーコード出力方法であって、
稼働用ＢＩＯＳ(Basic Input Output System)の実行に伴うテストプログラムで発生したエラーコードを記憶するエラーコード記憶ステップと、
前記稼働用ＢＩＯＳを利用してのコンピュータの起動不良が所定回数以上連続して発生した時に、前記稼働用ＢＩＯＳに替えて、前記エラーコード記憶ステップで記憶したエラーコードを出力するために必要な命令群しか含まないリカバリ用ＢＩＯＳを利用してコンピュータを起動させる切替ステップと、
を備え、
前記稼働用ＢＩＯＳを利用してのコンピュータの起動不良が所定回数以上連続して発生してから、前記リカバリ用ＢＩＯＳを利用して起動されたコンピュータは、少なくとも前記エラーコード記憶手段に記憶されているエラーコードを出力することを特徴とするエラーコード出力方法。
【００６６】
（付記１０）付記８又は９に記載のエラーコード出力方法であって、
前記エラーコードを出力する際に、これに対応するエラーメッセージも出力することを特徴とするエラーコード出力方法。
【００６７】
（付記１１）付記８乃至１０の何れか１に記載のエラーコード出力方法であって、
前記稼働用ＢＩＯＳを利用してのコンピュータの起動不良が所定回数以上連続して発生したことを、コンピュータの起動時に起動され、前記稼働用ＢＩＯＳの終了部の命令で停止されるウォッチ・ドッグ・タイマがタイムアウトした回数に基づいて検出するステップを更に備えることを特徴とするエラーコード出力方法。
【００６８】
（付記１２）付記８乃至１１の何れか１に記載のエラーコード出力方法であって、
前記リカバリ用ＢＩＯＳの起動時に画面表示に必要な内容を有するＰＯＳＴを実行することを特徴とするエラーコード出力方法。
【００６９】
（付記１３）付記８乃至１２の何れか１に記載のエラーコード出力方法であって、
前記リカバリ用ＢＩＯＳから起動されたＯＳから起動された修復プログラムが、前記稼働用ＢＩＯＳを修復することを特徴とするエラーコード出力方法。
【符号の説明】
【００７０】
１０１  ＣＰＵ
１０２  制御回路
１０３  ＲＡＭ
１０４  稼働用ＢＩＯＳ  ＲＯＭ
１０５  補助記憶装置
１０６  ＢＩＯＳ  ＲＯＭセレクタ回路
１０７  リカバリ用ＢＩＯＳ  ＲＯＭ
１０８  ウォッチ・ドッグ・タイマ
１０９  ＰＯＳＴ  ＣＯＤＥデコード回路
１１０  ＲＡＭ
【図１】
0005305473.tif 000002
【図２】
0005305473.tif 000003
【図３】
0005305473.tif 000004