(57)【要約】【課題】本発明は、通常実行される制御プログラムに何らかの障害が発生した場合に、緊急用に用意された別の制御プログラムを自動的に実行することのできる、制御プログラム切替え装置及びその方法を提供することを目的とする。【解決手段】ＣＰＵをブートするためのブートプログラムと、前記ブートプログラムで起動される動作可能な複数の制御プログラムとを保持する保持手段と、前記制御プログラムの少なくとも１つの整合性を検証する手段と、前記検証手段で前記制御プログラムの少なくとも１の整合性が検証されなかった場合、前記保持手段に保持された複数の制御プログラムのうち他の制御プログラムに切り替える切替え手段とを有することにより上述の課題を実現する。【選択図】        図２
2004348546.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵをブートするためのブートプログラムと、前記ブートプログラムで起動される動作可能な複数の制御プログラムとを保持する保持手段と、前記制御プログラムの少なくとも１つの整合性を検証する手段と、前記検証手段で前記制御プログラムの少なくとも１の整合性が検証されなかった場合、前記保持手段に保持された複数の制御プログラムのうちの他の制御プログラムに切り替える切替え手段とを有することを特徴とする制御プログラム切替え装置。
【請求項２】
前記保持手段はＲＯＭであることを特徴とする請求項１に記載の制御プログラム切替え装置。
【請求項３】
前記保持手段に保持された複数の制御プログラムのうち、１つは通常使用される既定制御プログラムであることを特徴とする請求項１に記載の制御プログラム切替え装置。
【請求項４】
前記保持手段に保持された複数の制御プログラムは、前記既定制御プログラムと前記既定制御プログラムが機能しない場合にのみ使用される、冗長制御プログラムとを含むことを特徴とする請求項１に記載のプログラム切替え装置。
【請求項５】
前記ブートプログラムは、前記制御プログラムの整合性を検証する手段を実行し、前記既定制御プログラムの整合性が保証されない場合に、前記プログラム切替え手段を実行し、前記冗長制御プログラムを実行することを特徴とする請求項１に記載の制御プログラム切替え装置。
【請求項６】
前記保持手段は、前記複数の制御プログラムにおける、それぞれの実行開始アドレスを保持することを特徴とする請求項１に記載の制御プログラム切替え装置。
【請求項７】
前記制御プログラム切替え手段は、前記整合性を検証する手段の実行結果により、保持された前記実行開始アドレスを前記ＣＰＵのプログラムカウンタに書き込むことで制御プログラムを実行することを特徴とする請求項１に記載の制御プログラム切替え装置。
【請求項８】
前記制御プログラム切替え手段は、前記既定制御プログラムの整合性が保証された場合であっても、前記既定制御プログラムの前回の実行結果により、前記冗長制御プログラムに切り替えることを特徴とする請求項１に記載の制御プログラム切替え装置。
【請求項９】
前記ブートプログラムに対して、複数の制御プログラムを保持し、前記ブートプログラムにより制御プログラムの整合性検証を行い、検証結果に基づいて適切な制御プログラムを選択し、切り替えて実行することを特徴とする制御プログラム切替え方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は制御プログラム切替え装置及びその方法に関し、例えば複数の制御プログラムを備えたシステムにおける制御プログラム切替え装置及びその方法に関する。
【０００２】
【従来の技術】
従来のＣＰＵを備えるシステムにおける制御プログラムは、ＲＯＭ領域内で単一しか保持されず、ブートプログラムからは既定の制御プログラムが実行されていた。
【０００３】
【発明が解決しようとしている課題】
しかしながら、何らかの原因により制御プログラムに障害が発生した場合、代替手段が存在しないため、そのシステムは動作不可能な状態に陥ってしまう。
【０００４】
その場合、ＲＯＭに保持された制御プログラムを書き換えることが必要となるが、ＲＯＭライターで書き換える場合にはＲＯＭを取り外す必要があり、基板上に実装されたＲＯＭであれば取り外しに多くの労力が必要となる。仮にＲＯＭの取り外しを予め想定するのであれば、取り外しの容易なソケット上にＲＯＭを取り付ける方法が考えられるが、この場合基盤のコストが上昇するという問題がある。
【０００５】
もしＲＯＭライターを使用せずに障害に対処しようとした場合には、基盤の交換が必要となってしまい、システムの修復に要するコストはさらに増大することとなる。
【０００６】
本発明は上述した課題を解決するためになされたものであり、通常実行される制御プログラムに何らかの障害が発生した場合に、緊急用に用意された別の制御プログラムを自動的に実行することのできる、制御プログラム切替え装置及びその方法を提供することを目的とする。
【０００７】
【問題を解決するための手段】
上述した目的を達成するため、本発明は、即ち、ＣＰＵをブートするためのブートプログラムと、前記ブートプログラムにより動作可能な複数の制御プログラムとを保持する保持手段と、前記制御プログラムの整合性を検証する手段と、前記保持手段に保持された複数の制御プログラムを切り替える切替え手段とを有することを特徴とする。
【０００８】
上述した目的を達成するため、本発明は、例えば、前記保持手段はＲＯＭであることを特徴とする。
【０００９】
上述した目的を達成するため、本発明は、例えば、前記保持手段に保持された制御プログラムのうち、１つは通常使用される既定制御プログラムであることを特徴とする。
【００１０】
上述した目的を達成するため、本発明は、例えば、前記保持手段に保持された制御プログラムのうち、前記既定制御プログラムを除いたうちの１つは前記既定制御プログラムが機能しない場合にのみ使用される、冗長制御プログラムであることを特徴とする。
【００１１】
上述した目的を達成するため、本発明は、例えば、前記ブートプログラムは、前記制御プログラムの整合性を検証する手段を実行し、前記既定制御プログラムの整合性が保証されない場合に、前記プログラム切替え手段を実行し、前記冗長制御プログラムを実行することを特徴とする。
【００１２】
上述した目的を達成するため、本発明は、例えば、前記保持手段は、前記複数の制御プログラムにおける、それぞれの実行開始アドレスを保持することを特徴とする。
【００１３】
上述した目的を達成するため、本発明は、例えば、前記制御プログラム切替え手段は、前記整合性を検証する手段の実行結果により、保持された前記実行開始アドレスを前記ＣＰＵのプログラムカウンタに書き込むことで制御プログラムを実行することを特徴とする。
【００１４】
上述した目的を達成するため、本発明は、前記制御プログラム切替え手段は、前記既定制御プログラムの整合性が保証された場合であっても、前記既定制御プルグラムの前回の実行結果により、前記冗長制御プログラムに切り替えることを特徴とする。
【００１５】
上述した目的を達成するため、本発明は、例えば、単一のブートプログラムに対して、複数の制御プログラムを保持し、ブートプログラムにより制御プログラムの整合性検証を行い、検証結果に基づいて適切な制御プログラムを選択し、切り替えて実行することを特徴とする。
【作用】
以上の構成により、通常実行される制御プログラムに何らかの障害が発生した場合に、別の制御プログラムを自動的に実行し、同等の機能を実現する、もしくは機能を制限した緊急用プログラムを実行し、最低限の機能を実現することが可能となる。
【００１６】
【実施例】
以下、図面を参照して本発明に係る一実施例を詳細に説明する。
（第一の実施例）
図１は本発明を実現するために必要なハードウェア構成のブロック図である。
【００１７】
図１において、ＣＰＵ  １０１はメモリに記憶されているプログラムに基づいて制御・処理を実行する。ＦＬＡＳＨ  ＲＯＭ  １０２は、プログラムなどを記憶する。ＲＡＭ  １０３ａ、ＲＡＭ  １０４ｂは、プログラムやデータなどを記憶する。それぞれは、バスを介して接続されていおり、ＦＬＡＳＨ  ＲＯＭ  １０２は論理アドレス０ｈに割り当てられている。ＲＡＭ  １０３ａ及びＲＡＭ  １０４ａは、ＣＰＵ  １０１からは連続した１個の領域として認識され、論理アドレスＣ００００００ｈに割り当てられているものとする。ＣＰＵ  １０１はプログラムを実行し、ＦＬＡＳＨ  ＲＯＭ  １０２にはシステムの制御に必要な各種プログラム及び後述する図３，４、６に示すフローに対応するブートプログラムが格納されている。
ＲＡＭ  １０３ａ、ＲＡＭ  １０３ｂは、ＣＰＵ  １０１が前述のプログラムを実行する際のワークメモリとして使用される他、ＦＬＡＳＨ  ＲＯＭ  １０２と比較してアクセス速度が高速なことから、ＦＬＡＳＨ  ＲＯＭ  １０２に格納された前述のプログラムをコピーしておくことでプログラムのＲｅａｄ／Ｗｒｉｔｅに必要な時間を短縮し、システムを高速に動作させる役割も持つ。
【００１８】
本実施例においては１個のＣＰＵ、１個のＦＬＡＳＨ  ＲＯＭ、２個のＲＡＭを備えているが、本発明を適用するシステムの規模により、その個数は変動する場合がある。尚、図１においては本実施例に関係する構成のみを抜粋しており、例えば画像を記録するプリンタのようなシステムに本発明を適用する場合には、これらの他に、画像保持用メモリ、モータ及びモータドライバ、各種センサ、記録用ヘッド、ホストＰＣとのインターフェース制御部等の各種デバイスが必要となる。
【００１９】
図２はＦＬＡＳＨ  ＲＯＭ  １０２の物理アドレスに対するプログラムの格納状態を示したメモリマップである。本実施例におけるシステムには２ＭＢｙｔｅのＦＬＡＳＨ  ＲＯＭが装備されているものとする。ＦＬＡＳＨ  ＲＯＭ  １０２のボトム部（物理アドレス：０ｈ）には３２ＫＢｙｔｅのブートプログラム２０１が、物理アドレス６０００ｈからは２２４ＫＢｙｔｅの非常用制御プログラム２０２が、物理アドレス４００００ｈからは１７９２ＫＢｙｔｅの通常用制御プログラム２０３が格納されている。各プログラムの容量、格納アドレスについてはシステムにより異なり、この他に各種の設定情報を記録しておくための箇所を追加してもよい。各プログラムの先頭物理アドレスは、ブートプログラム２０１内にテーブルとして保存されており、ブートプログラム実行中はいつでも参照することが可能である。
【００２０】
ブートプログラム２０１は、起動処理に必要なＣＰＵ  １０１のＩ／Ｏポート、メモリコントローラの初期化、ＦＬＡＳＨ  ＲＯＭ  １０２の内容をＲＡＭへコピーする機能、各制御プログラムのＳＵＭチェック機能、及びブートプログラム２０１から通常用制御プログラム２０３、もしくは非常用制御プログラム２０２に処理を移行させる機能等を持つ。
【００２１】
通常用制御プログラム２０３はシステム全体の制御を行う、いわばメインのプログラムである。先ほどと同様にプリンタに本発明を適用したとして説明すると、センサの監視、モータ制御、記録ヘッド制御等、プリンタとしての機能を実現するためのプログラムは全て通常用制御プログラム２０３に収められている。
【００２２】
非常用制御プログラム２０２は、ＦＬＡＳＨ  ＲＯＭ１０２の容量に十分余裕がある場合には通常用制御プログラム２０３と全く同じ内容で良いが、本実施例においては容量の制限から、障害の発生している通常用制御プログラム２０３を書き換えるだけの機能を持つものとする。これが例えばプリンタの場合であれば、ホストＰＣと通信可能な状態になる程度にハードウェアを初期化し、ホストＰＣから受信した通常用制御プログラムのデータをＦＬＡＳＨ  ＲＯＭ  １０２に書き込む機能と説明することができる。
【００２３】
本実施例においてＦＬＡＳＨ  ＲＯＭ  １０２はＣＰＵ  １０１の論理アドレス０ｈに割り当てられており、システムの電源が投入され、ＣＰＵ  １０１が動作を開始すると自動的にブートプログラム２０１が実行される。
【００２４】
以上の構成からなる実施例の動作を図３を参照して説明する。
【００２５】
図３のフローチャートを用いて、システム電源投入後の起動処理について説明する。起動処理は全てブートプログラムが実行する処理である。
ＣＰＵ  １０１の起動後、まず、ＣＰＵ１０１は、最初に各種Ｉ／Ｏポート及びバスの初期化を行う（３０２）。ＣＰＵ  １０１がメモリコントローラを搭載する場合には、このときにメモリコントローラのレジスタ設定も行い、ＲＡＭ  １０３ａ及びＲＡＭ  １０４ａにアクセスすることが可能な状態としておく。
【００２６】
次にＣＰＵ１０１は、ＲＡＭ  １０３ａ、ＲＡＭ  １０３ｂのＲｅａｄ／Ｗｒｉｔｅチェックを行う（３０３）。これは、ＲＡＭ上の任意のアドレスに特定のデータを書き込み、その後同じアドレスのデータを読み込むという処理を繰り返す。書き込んだデータと読み込んだデータが同じであれば、ＲＡＭの書き込みと読み込みが正しく行われていることが確認できる。
【００２７】
ＲＡＭ  １０３ａ、ＲＡＭ  １０３ｂの正常なＲｅａｄ／Ｗｒｉｔｅが確認できたら、ＦＬＡＳＨ  ＲＯＭ  １０２内のプログラムを全てＲＡＭにコピーする（３０４）。ＲＡＭ上で実行するのは通常用制御プログラム２０３、もしくは非常用制御プログラム２０２であるため、ＲＡＭ容量に余裕の無い場合はブートプログラム２０１はコピーしなくてもよい。また、実際に実行されるのは通常用制御プログラム２０３、もしくは非常用制御プログラム２０２のどちらか一方であることから、より使用ＲＡＭ容量を減らすため、あるいは起動処理時間を短縮するためには、実行する方の制御プログラムのみをコピーするという方法も考えられる。しかしながらこの後、各制御プログラムの整合性を確認するためチェックＳＵＭの算出を行うため、制御プログラム全体に対してＲｅａｄを行わなければならない。このときＣＰＵ  １０１は、制御プログラムの容量と同数のＲｅａｄを繰り返すため、ＦＬＡＳＨ  ＲＯＭ  １０２よりアクセス速度の速いＲＡＭ  １０３ａ、ＲＡＭ  １０３ｂに一度全制御プログラムをコピーしておいたほうが、結果的に起動処理時間を短縮することができるのである。本実施例においてはＲＡＭ容量に余裕があり、また起動処理を単純化してデバッグの効率化を図る目的のもと、ＦＬＡＳＨ  ＲＯＭ  １０２の内容を全てＲＡＭにコピーしておくものとする。
【００２８】
次に、以下の方法により通常用制御プログラム２０３のチェックＳＵＭを算出する（３０５）。チェックサムの詳細を図４に示す。同図に示すように、以下のステップがある。
アドレスＣ０４００００ｈを変数ａに記憶する（４０２）。
チェックＳＵＭ記憶用の変数ｂを用意し、０クリアしておく（４０３）。
ａのアドレスが示す１Ｂｙｔｅのデータを読み込み変数ｂに加算する（４０４）。
変数ａを１増分する（４０５）。
変数ａがＣ２０００００ｈになったら終了、満たなければ３に戻る（４０６）。
チェックＳＵＭが算出できたら、次にその値が適正であるかどうかをＣＰＵにより判断する（３０６）。
【００２９】
ＳＵＭ値は通常、０等の既定値、もしくは書き込まれたプログラムのバージョンと同値になるよう調整され、ＦＬＡＳＨ  ＲＯＭ  １０２に書き込まれている。本実施例では、各制御プログラムのＳＵＭ値は０になるよう調整されており、算出したＳＵＭ値が０であるかどうかで、制御プログラムの整合性を確認することができる。もしＳＵＭ値が０以外であった場合、ＦＬＡＳＨ  ＲＯＭ  １０２中の通常用制御プログラム２０３領域に何らかの障害が発生し、書き込まれたデータが失われた、あるいは素子の不良によりＲｅａｄ／Ｗｒｉｔｅに不具合が発生したと判断することができる。
【００３０】
ＳＵＭ値が０となり、通常用制御プログラム２０３の整合性が確認できた場合には、ＣＰＵ  １０１のプログラムカウンタをＣ０４００００ｈに書き換えることにより（３０７）、ＲＡＭ上の通常用制御プログラム２０３を実行し、システム全体を起動する（３０９）。仮にシステムをプリンタと仮定した場合、メカ初期化、ホストＰＣとの通信等を開始し、受信データを印刷するといったプリンタとしての機能が、通常用制御プログラム２０３の実行によりはじめて利用できるようになる。
【００３１】
もしＳＵＭ値が０以外の値となり、通常用制御プログラム２０３の整合性が確認できない場合には、プログラムカウンタをＣ００６０００ｈに書き換え（３０８）、ＲＡＭ上から非常用制御プログラムを実行する（６１０）。この時、システムの操作者に通常用制御プログラム２０３が実行不可能であることを、ＬＥＤ表示、ＬＣＤ表示、ブザー共鳴等、何らかの形で通知することが望ましい。
【００３２】
前述のように、非常用制御プログラム２０２は、必要最小限のハードウェア初期化機能と、ＦＬＡＳＨ  ＲＯＭ  １０２内の通常用制御プログラム２０３領域（４０００ｈ〜１ＦＦＦＦＦｈ）を書き換える機能しか備わっていないため、正しい通常用制御プログラムを外部から受信する必要がある。データ受信のためには、基板上にシリアル通信ポートを装備するか、もしくはプリンタのように元々外部からデータを受信する手段が備わっていなければならない。例えばシステムがプリンタであった場合、非常用制御プログラム２０２の実行によりＵＳＢ、ＩＥＥＥ１２８４等のプリンタ−ホストＰＣ間インターフェースの初期化を行い、ホストＰＣとデータ送受信が可能な状態にする。次にホストＰＣ上で動作する制御プログラム転送用ソフトウェアを用意し、正しい制御プログラムをシステムに転送する。受信したデータはＲＡＭ  １０３ａ、ＲＡＭ  １０３ｂ上に展開し、チェックＳＵＭ等を用いて受信データを検証、通常用制御プログラム２０３領域を受信データで書き換える。その後システムを再起動することにより、ブートプログラム２０１を実行、通常用制御プログラム２０３のＳＵＭチェックをパスできれば、外装の取り外し、基板交換、ＦＬＡＳＨ  ＲＯＭ  １０２の物理的交換等を行うことなく、システムを復旧させることが可能となる。
【００３３】
また、プリンタ等のシステムであれば、出荷後に不具合を修正する必要に迫られたり、市場の要望により機能を追加したりすることがありうるが、こういった場合には通常用制御プログラム２０３を書き換えることで対応することが多い。このような制御プログラムの書き換えは前述のように、
ホストＰＣから制御プログラムを受信。
ＲＡＭ上に展開しＳＵＭチェックを実行。
書き換えるＦＬＡＳＨ  ＲＯＭの領域を消去。
消去した領域に受信データを書き込み。
行われる。
【００３４】
例えばＦＬＡＳＨ  ＲＯＭの消去終了後、受信データ書き込み前に、停電もしくは人為的ミスにより電源が断たれたような場合、制御プログラムが格納されているべき領域は空白となり、システムの動作が不可能な状態になってしまう。
このときシステムに本発明を適用していたのであれば、通常用制御プログラムが完全に消去されたとしても、非常用制御プログラムの実行により通常用制御プログラムを復旧することが可能になるのである。
（第二の実施例）
次にその他の実施例を説明する、上述した第一の実施例におけるハードウェア構成と同様であるため、図１を参照して説明する。
【００３５】
図５はＦＬＡＳＨ  ＲＯＭ  １０２の物理アドレスに対するプログラムの格納状態を示したメモリマップである。本実施例におけるシステムは２ＢｙｔｅのＦＬＡＳＨ  ＲＯＭが装備されているものとする。ＦＬＡＳＨ  ＲＯＭ  １０２のボトム部（物理アドレス：０ｈ）には１２８ＫＢｙｔｅのブートプログラム５０１が、物理アドレス２００００ｈからは９６０ＫＢｙｔｅの第一制御プログラム５０２が、物理アドレス１１００００ｈからは第二制御プログラム５０３が格納されている。各プログラムの容量、格納アドレスについては、第一の実施例と同様、システムにより異なり、この他に各種の設定情報を記録しておくための箇所を追加してもよい。各プログラムの先頭物理アドレスは、ブートプログラム５０１内にテーブルとして保存されており、ブートプログラム実行中はいつでも参照することが可能である。
【００３６】
ブートプログラム５０１は、起動処理に必要なＣＰＵ  １０１のＩ／Ｏポート、メモリコントローラの初期化、ＦＬＡＳＨ  ＲＯＭ  １０２の内容をＲＡＭへコピーする機能、各制御プログラムのＳＵＭチェック機能、及びブートプログラム５０１から第一制御プログラム５０２、もしくは第二制御プログラム５０３に処理を移行させる機能等を持つ。
【００３７】
第一制御プログラム５０２はシステム全体の制御を行う、いわばメインのプログラムであり、第一の実施例における通常用制御プログラム２０３と同様のものであるため、説明を省略する。
【００３８】
第二制御プログラム５０３は、第一制御プログラムと全く同じ内容であり、通常は使用されず、第一制御プログラムに障害が発生した場合にのみ起動する、いわばバックアッププログラムである。
【００３９】
以上の構成からなる実施例の動作を図６を参照して説明する。
図６のフローチャートを用いて、システム電源投入後の起動処理について説明する。起動処理は全てブートプログラムが実行する処理である。  システム電源投入後の起動処理について説明するが、アドレス、制御プログラム名が異なるのみで、内容については第一の実施例における図３と同様であるため、詳細については省略する。
【００４０】
ＣＰＵ  １０１の起動後、各種Ｉ／Ｏポート及びバスの設定を行う（６０２）。
ＲＡＭ  １０３ａ、ＲＡＭ  １０３ｂのＲｅａｄ／Ｗｒｉｔｅチェックを行い（６０３）、ＦＬＡＳＨ  ＲＯＭ  １０２の内容を全てＲＡＭにコピーする（６０４）。
第一の実施例と同様の方法で第一制御プログラム５０２のＳＵＭチェックを行い（６０５）、ＳＵＭ値が０であるかどうかで第一制御プログラム５０２の整合性を確認する（６０６）。
【００４１】
第一制御プログラム５０２の整合性が確認できた場合、ＣＰＵ  １０１のプログラムカウンタをＣ０２００００ｈに書き換え（６０７）、ＲＡＭ上の第一制御プログラム５０２を実行し、システム全体を起動する（６０９）。第一制御プログラム５０２はメインのプログラムであり、仮にシステムをプリンタと仮定した場合、第一制御プログラム５０２の実行により、プリンタとして全ての機能を利用できるようになる。
【００４２】
もしＳＵＭ値が０以外の値となり、第一制御プログラム５０２の整合性が確認できない場合には、プログラムカウンタをＣ０２００００ｈに書き換え（６０８）、ＲＡＭ上から第二制御プログラム５０３を実行する（６１０）。
【００４３】
第二制御プログラム５０３は、前述のように第一制御プログラム５０２と全く同じ内容である。このため、何らかの障害発生により第一制御プログラム５０２が実行不能になったとしても、第二制御プログラム５０３の実行により通常通り、システムの全機能を利用することができるのである。
【００４４】
ただし、この後第二制御プログラム５０３にも障害が発生してしまった場合は、システム全体が動作不能となってしまうので、第二制御プログラム５０３に処理が移行した時点で、システム操作者に何らかの方法で警告を与え、第一制御プログラム５０２の書き換えを促すことが望ましい。
【００４５】
第一の実施例と同様、プリンタ等のシステムの場合、制御プログラムの更新を行わなければならない事態は十分ありえるのであるが、更新の度、ＦＬＡＳＨ  ＲＯＭ  １０２の書き換え失敗によりシステムが動作不能に陥る危険を伴う。
【００４６】
こういったときに本発明を適用していれば、仮にＦＬＡＳＨ  ＲＯＭの書き換えに失敗してしまっても、バックアッププログラムの存在により、再度ＦＬＡＳＨ  ＲＯＭの書き換えを行うことが可能となる。
（第三の実施例）
上述した第一の実施例、及び第二の実施例におけるハードウェア構成と同様であるため、図１を参照して説明する。
【００４７】
また本実施例におけるＦＬＡＳＨ  ＲＯＭ  １０２のメモリマップ、及び起動処理の内容についても第一の実施例と同様であるため、図２、図３を使用することで説明する
本実施例における通常用制御プログラム２０３は、処理の実行結果をブートプログラム２０１の領域中にログとして保存しておくことを特徴としている。
通常用制御プログラム２０３は、ＣＰＵ  １０１のウォッチドッグタイマを監視する処理を定期的に行っており、制御プログラムの暴走等により、システムがフリーズするような状態に陥ると、そのログをＦＬＡＳＨ  ＲＯＭ  １０２のブートプログラム２０１領域に書き出しておく。
【００４８】
システムがフリーズしてしまった場合には再起動を行い復旧させることになるが、そのときブートプログラム２０１領域のログを確認し、システムの正常な起動が不可能と判断した場合には、ＳＵＭチェックにより通常用制御プログラム２０３の整合性が確認できたとしても、強制的に非常用制御プログラム２０２を実行する。
【００４９】
これにより、制御プログラムのバグにより操作不能に陥ってしまった場合でも、非常用制御プログラム２０２の機能により通常用制御プログラム２０３の領域を書き換えることが可能となる。
【００５０】
【発明の効果】
以上説明したように本発明によれば、例えば、ブートプログラムに対して、複数の制御プログラムを保持し、ブートプログラムにより制御プログラムの整合性検証を行い、検証結果に基づいて適切な制御プログラムを選択し、切り替えて実行することが可能となる。
【図面の簡単な説明】
【図１】実施例におけるハードウェア構成を示すブロック図
【図２】実施例におけるＦＬＡＳＨ  ＲＯＭ  １０２のメモリマップを示す図
【図３】実施例における起動処理を表すフローチャート
【図４】実施例におけるチェックＳＵＭ算出方法を現すフローチャート
【図５】第二の実施例におけるＦＬＡＳＨ  ＲＯＭ  １０２のメモリマップを示す図。
【図６】第二の実施例における起動処理を表すフローチャート
【符号の説明】
１０１              ＣＰＵ
１０２              ＦＬＡＳＨ  ＲＯＭ
１０３ａ              ＲＡＭ
１０３ｂ              ＲＡＭ
２０１    ブートプログラム
２０２    非常用制御プログラム
２０３    通常用制御プログラム
３０１    処理開始
３０２    ＣＰＵ  Ｉ／Ｏポート初期化処理
３０３    ＲＡＭ  Ｒｅａｄ／Ｗｒｉｔｅチェック処理
３０４    制御プログラム  ＲＡＭコピー処理
３０５    通常用制御プログラムＳＵＭ算出処理
３０６    ＳＵＭ値確認処理
３０７    通常用制御プログラム移行処理
３０８    非常用制御プログラム移行処理
３０９    通常用制御プログラム実行処理
３１０    非常用制御プログラム実行処理
【図１】
2004348546.tif 000003
【図２】
2004348546.tif 000004
【図３】
2004348546.tif 000005
【図４】
2004348546.tif 000006
【図５】
2004348546.tif 000007
【図６】
2004348546.tif 000008