(57)【要約】【目的】本発明は、ＣＰＵで制御を行う端末の暴走を防止する端末フェールセーフシステムおよび端末フェールセーフ方法に関し、ＣＰＵを含む端末の静電気等による予期せぬ誤動作が連続しても当該端末の暴走を防止し、システムの安定性の向上を図ることを目的としている。【構成】  端末で予期せぬ障害が発生して検出された例外の通知を受けるＣＰＵと、ＣＰＵが通知に従い該当ＲＯＭから例外処理を行うプログラムを読み込んだときに当該プログラムの先頭あるいは先頭の近傍でＣＰＵ基本設定の設定を行い、例外処理が繰り返されたときに常にＣＰＵ基本設定を繰り返して暴走を防止する手段とを備え、例外処理を行った後にＣＰＵのスタック退避、エラーログ取得、スタック復旧、リスタートするようにしている。【選択図】        図１
2005284329.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵで制御を行う端末の暴走を防止する端末フェールセーフシステムにおいて、
前記端末で予期せぬ障害が発生して検出された例外の通知を受けるＣＰＵと、
前記ＣＰＵが前記通知に従い該当ＲＯＭから例外処理を行うプログラムを読み込んだときに当該プログラムの先頭あるいは先頭の近傍でＣＰＵ基本設定の設定を行い、当該例外処理が繰り返されたときに常にＣＰＵ基本設定を繰り返して暴走を防止する手段とを備え、
当例外処理を行った後にＣＰＵのスタック退避、エラーログ取得、スタック復旧、リスタートすることを特徴とする端末フェールセーフシステム。
【請求項２】
ＣＰＵで制御を行う端末の暴走を防止する端末フェールセーフシステムにおいて、
前記端末で予期せぬ障害が発生して検出された例外の通知を受けるＣＰＵと、
前記ＣＰＵが前記通知に従いＲＯＭから読み取ったプログラムに従いハードウェアから例外通知と判明したときにソフトウェアリセットすると共に併せて当該ハードウェアからの例外通知および他の例外通知のときのいずれでもソフトウェアリセットする手段と
を備え、
ハードウェアからの例外通知およびソフトウェアからの例外通知されたときの両方でソフトウェアリセットして暴走を防止することを特徴とする端末フェールセーフシステム。
【請求項３】
ＣＰＵで制御を行う端末の暴走を防止する端末フェールセーフ方法において、
前記端末で予期せぬ障害が発生して検出された例外をＣＰＵに通知するステップと、
前記ＣＰＵが前記通知に従い該当ＲＯＭから例外処理を行うプログラムを読み込んだときに当該プログラムの先頭あるいは先頭の近傍でＣＰＵ基本設定の設定を行い、当該例外処理が繰り返されたときに常にＣＰＵ基本設定を繰り返して暴走を防止するステップとを有し、
当例外処理を行った後にＣＰＵのスタック退避、エラーログ取得、スタック復旧、リスタートすることを特徴とする端末フェールセーフ方法。
【請求項４】
ＣＰＵで制御を行う端末の暴走を防止する端末フェールセーフ方法において、
前記端末で予期せぬ障害が発生して検出された例外をＣＰＵに通知するステップと、
前記ＣＰＵが前記通知に従いＲＯＭから読み取ったプログラムに従いハードウェアから例外通知と判明したときにソフトウェアリセットすると共に併せて当該ハードウェアからの例外通知および他の例外通知のときのいずれでもソフトウェアリセットするステップと
を有し、
ハードウェアからの例外通知およびソフトウェアからの例外通知されたときの両方でソフトウェアリセットして暴走を防止することを特徴とする端末フェールセーフ方法。
【請求項５】
端末で予期せぬ障害が発生して検出された例外の通知をＣＰＵに通知する手段と、
前記ＣＰＵが前記通知に従い該当ＲＯＭから例外処理を行うプログラムを読み込んだときに当該プログラムの先頭あるいは先頭の近傍でＣＰＵ基本設定の設定を行い、当該例外処理が繰り返されたときに常にＣＰＵ基本設定を繰り返して暴走を防止する手段と
して機能させ、例外処理を行った後にＣＰＵのスタック退避、エラーログ取得、スタック復旧、リスタートさせるための端末フェールセーフプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵで制御を行う端末の暴走を防止する端末フェールセーフシステム、端末フェールセーフ方法および端末フェールセーフプログラムに関するものである。
【背景技術】
【０００２】
従来，ＰＣ（パソコン）やＰＤＡ、携帯電話機などの端末において、静電気などによる内部のプロセッサ（ＣＰＵ）に対する予期せぬ誤動作を防止するために、筐体や基板のグランドを強化したり、電源制御回路へのノイズ除去回路を追加したり、更に、プログラム暴走によりＲＡＭ上のデータが消えても、復旧できるようにハードディスクや不揮発半導体にデータを保持したりするようにしている。
【０００３】
また、端末にＦＬＡＳＨメモリやＳＤカードを接続し、これら専用の手順によるデータの読み出し書き込むを行うのでメモリ上のデータ破壊される可能性が低い。しかし、特に、端末の外部バスにバックアップ電池つきのＳＲＡＭを使用した場合には、ＦＬＡＳＨメモリなどと異なり専用の手順が不要でＣＰＵが簡単にアクセスでき、予期せぬ誤動作によりメモリ上のデータが破壊されて、障害発生する。このため、通常は、予期せぬ誤動作（例えばデータアポート例外（許可されていない領域をアクセス）、未定義命令例外（未定義アドレスモードを指定しようとしたときに発生する例外）、プリフェッチアボート（無効命令を実行しようとしたときに発生する例外））を検出して端末をリセットして最初からブートしてメモリ上のデータ破壊などを防止するようにしている。
【０００４】
また、データ処理装置の動作開始時にハードウェア的な初期化動作において、動作モード情報を自動的に読み込み、当該動作モードを内部のレジスタ手段に自動的に取り込んで、当該モード設定に必要であった外部設定端子を少なくする技術がある（特許文献１）。
【特許文献１】特開平０８−０６３４４５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述したバックアップ電池付のメモリを装置の外部バスなどに接続して使用した場合には、予期せぬ誤動作が単に発生した場合には、これら予期せぬ誤動作を検出して例外としてＣＰＵに割り込みで通知し、ＣＰＵが装置リセットして再起動することで端末を正常復帰させることができる。
【０００６】
しかし、予期せぬ誤動作が発生して装置リセットして例外処理を行い再起動し、例えば上記例外を検出するためのＯＳが起動する前に当該誤動作が連続発生した場合などには、例外を検出する機能が動作せず、予期せぬ動作する（例えばスタップポインタが不正な値になってメモリ上のデータを破壊する）という問題があった。
【０００７】
また、装置リセットされて例外処理時に、予期せぬ誤動作が連続した場合などに暴走して外部メモリ上のデータを破壊してしまうという問題があった。
【０００８】
また、予期せぬ誤動作が連続して発生した場合などに、外部バスが不安定になって外部パス依存のプログラムが暴走してしまうという問題もあった。
【０００９】
また、端末の外部バスに接続されたメモリについて、システムが不安定な場合に当該メモリ上のデータが破壊されてしまう問題もあった。
【００１０】
また、上述した特許文献１では、何らかの異常発生や更に連続異常発生時が考慮されていなく、しかも単に動作モードの設定を自動で行って外部設定端子数を削減するのみで、スタックポインタなどの再設定を行って異常発生を未然に防止することができないという問題があった。
【課題を解決するための手段】
【００１１】
本発明は、これらの問題を解決するため、端末で例外発生時の例外処理の先頭でＣＰＵ基本設定（チップセレクト／スタックポインタなど）を再設定したり、当該ＣＰＵ基本設定をアセンブラで書いて外部メモリへのアクセスを最小限にしたり、外部バス依存のプログラム暴走を回避するためにハードとソフトによる再リセットを可能にしたり、外部バスに接続されるメモリを必要なときのみソフトからアクセス可能な回路を設けたりするようにしている。
【００１２】
従って、ＣＰＵを含む端末の静電気等による予期せぬ誤動作が連続しても当該端末の暴走を防止し、システムの安定性の向上を図ることを目的としている。
【発明の効果】
【００１３】
本願発明は、ＣＰＵを含む端末の静電気等による予期せぬ誤動作が連続しても当該端末の暴走を防止し、システムの安定性の向上を図ることが可能となる。
【発明を実施するための最良の形態】
【００１４】
本発明は、端末で例外発生時の例外処理の先頭でＣＰＵ基本設定（チップセレクト／スタックポインタなど）を再設定したり、当該ＣＰＵ基本設定をアセンブラで書いて外部メモリへのアクセスを最小限にしたり、外部バス依存のプログラム暴走を回避するためにハードとソフトによる再リセットを可能にしたり、外部バスに接続されるメモリを必要なときのみソフトからアクセス可能な回路を設けたりし、ＣＰＵを含む端末の静電気等による予期せぬ誤動作が連続しても当該端末の暴走を防止し、システムの安定性の向上を実現した。
【実施例１】
【００１５】
図１は、本発明のシステム構成図を示す。
図１において、システムＬＳＩ１は、ＣＰＵ１１がプログラムに従い各種処理を実行するものであって、ここでは、ＣＰＵ１１，ＣＰＵリセット制御回路１２、ＭＭＵ１３，ＷＤタイマ１４、ソフトＲＳＴ回路１５、ブートＲＯＭ１７、キャッシュメモリ１９、内蔵ＲＡＭ２０、制御レジスタ群２１などから構成されるものである。
【００１６】
ＣＰＵ１１は、プロセッサ（マイクロプロセッサ）であって、ＣＰＵリセット制御回路１２からのＣＰＵリセット信号でリセットされて再起動したり、メモリ（ＭＭＵ１３，ブートＲＯＭ１７，内蔵ＲＡＭ２０，更に、外部接続の不揮発ＲＡＭ４，揮発ＲＡＭ５，不揮発ＲＯＭ６など）から読み込んだプログラムに従い、各種初期設定した後、ソフトウェアによる業務処理などを行うものである。
【００１７】
ＣＰＵリセット制御回路１２は、例外（例えば、（１）電源リセット、（２）ＷＤリセット、（３）ソフトリセットなどによる例外）の信号が入力されたときに、ＣＰＵリセット信号をＣＰＵ１１に出力して当該ＣＰＵ１１をリセットするものである。
【００１８】
ＭＭＵ１３は、メモリのアクセスなどを管理するものである。
ＷＤタイマ１４は、ソフトウェアから所定時間毎のリセットがされなく、ソフトウェアが動作しなくなって所定時間経過したときに例外（（２）ＷＤＴリセット）の信号をＣＰＵリセット制御回路１２に出力するものである。
【００１９】
ソフトＲＳＴ回路１５は、ソフトウェアからＲＳＴ（リセット）してＣＰＵリセット制御回路１２に例外（（３）ソフトリセット）の信号を出力するものであって、制御レジスタ１６などを内部に持つものである。
【００２０】
制御レジスタ１６は、各種状態を設定するものであって、ここでは、ソフトウェアが例外（異常発生してＣＰＵ１１のリセットするという例外）を発生させたいときにリセットする制御レジスタであって、リセットされると（３）ソフトリセット信号をＣＰＵリセット制御回路１２に出力し、ＣＰＵ１１をリセットするためのものである。
【００２１】
ブートＲＯＭ１７は、ＣＰＵ１１がブートするときに使用するプログラム（ブート処理プログラム）をＲＯＭ（読み出し専用メモリ）に書き込んだものであって、ブート処理１８などから構成されるものである。
【００２２】
ブート処理１８は、ＣＰＵ１１がブートＲＯＭ１７からプログラムを読み込んで行われる処理（ブート処理）である。
【００２３】
キャッシュメモリ１９は、データ、プログラムなどを記憶するものである。
内蔵ＲＡＭ２０は、データやプログラムを格納したり、読み出したりなどするメモリである。
【００２４】
制御レジスタ群２１は、各種制御レジスタであって、ここでは、ＷＤＴフラグ２２を設定するものである。
【００２５】
ＷＤＴフラグ２２は、ＷＤＴ（ウオッチ  ドッグ  タイマ）がタイムオーバしたとき（ソフトウェアから所定時間毎にリセットがなく、当該ソフトウェアが動作しなくなったことが検出されたとき）に設定するフラグである。
【００２６】
電源ＲＳＴデバイス３は、ＬＳＩシステム１の電源をリセットするデバイス（例えば電源リセットスイッチ）などであって、電源リセットされると（１）電源リセット信号をＣＰＵリセット制御回路１２に出力するものである。
【００２７】
不揮発ＲＡＭ４は、ＣＰＵ１１の外部バスに接続されたバックアップ電池つきのＲＡＭ（メモリ）である。
【００２８】
揮発ＲＡＭ５は、ＣＰＵ１１の外部バスに接続されたＲＡＭ（メモリ）である。
不揮発ＲＯＭ６は、読み出し専用のＲＯＭであって、ここでは、ＣＰＵ１１が外部バスを経由して当該不揮発ＲＯＭ６内のプログラムを読み込んで実行しバス不定区間ソフトウェアリセット処理７、ＣＰＵ基本設定再設定処理８として動作するものである。
【００２９】
バス不定区間ソフトウェアリセット処理７は、バス不定区間とならないようにソフトウェアでリセットするものである（図３、図４参照）。
【００３０】
ＣＰＵ基本設定再設定処理８は、ＣＰＵ基本設定を再設定するものである（図３参照）。
【００３１】
ＬＣＤ９は、液晶表示デバイスである。
各種デバイス１０は、各種の入出力などのデバイスである。
【００３２】
次に、図２のタイムチャートを用いて図１の構成の全体の動作を説明する。
図２は、本発明のシステム立ち上げ時のタイムチャートを示す。ここでは、横軸（横側）は時間ｔを表し、縦軸は（ａ）ソフトウェア処理、（ｂ）アドレスバスがアクセスするメモリ（ＦｌＡＳＨ  ＲＯＭ，ＢＯＯＴ  ＲＯＭなど）を表し、（ｃ）データバスはアクセスするデータの様子を示し、（ｄ）ＣＰＵリセットはＣＰＵ１１がリセットされる様子を示す。
【００３３】
図２において、（ａ）ソフトウェア処理は、ＣＰＵ１１が電源投入され起動されて処理開始するときの処理の内容の流れを右方向に記載したように、
・通常処理
・（１）ＣＰＵ基本設定再設定処理（図３参照）
・（２）ＣＰＵ例外処理（図３、図４参照）
・（３）ＢＯＯＴ処理（図４参照）
・（４）バス不定区間ソフトウェアリセット処理（図４）
・（３）ＢＯＯＴ処理（図４参照）
・（４）バス不定区間ソフトウェアリセット処理（図４）
・通常処理
のように遷移する。これに対応して、（ｂ）アドレスバスが図示のようにＦｌａｓｈ  ＲＯＭ（図１の不揮発ＲＯＭ６），ＢＯＯＴ  ＲＯＭ（ブートＲＯＭ１７）から読み出したプログラムに従い、（１）から（４）、更に、通常処理を順次実行する。
【００３４】
また、（ｃ）のデータバスはそれぞれのメモリにアクセスしてプログラム、データなどを読み出したりなどする。
【００３５】
また、（ｄ）ＣＰＵリセットは、図示では、ソフトウェアリセット（図４の（４）ソフトウェアリセット）が実行される様子（タイミング）を示す。
【００３６】
以下順次詳細に説明する。
図３は、本発明の例外処理のフェールセーフ概要説明図を示す。
【００３７】
図３において、Ｓ１は、静電気などによりＣＰＵにリセットがかかり、クロックサイクル／チップセレクト領域が初期状態に戻る、スタックポインタのずれなどが発生する。
【００３８】
Ｓ２は、Ｓ１により、（２）ＣＰＵ例外が発生する。ＣＰＵ例外としては、
・アボート例外：データアクセスが許可されていない空間にアクセスした時に発生する例外。
【００３９】
・未定義例外：未定義アドレシングモードまたは違法な組合せのアドレッシングモードを指定した時に発生する例外。
【００４０】
・プリフェッチアボート例外：ＣＰＵ１１が無効な命令を実行しようとした時に発生する例外。
などがある。
【００４１】
Ｓ３は、（１）ＣＰＵ基本設定再設定処理を示し、Ｓ３１、Ｓ３２から構成されるものである。尚、（１）ＣＰＵ基本設定再設定処理を行うプログラムについて、アセンブラ言語で記述し、スタック領域へのアクセスを行わない処理とすることにより、不要な外部メモリへのアクセスを最小限とし、不安定な状態における外部メモリへのアクセスによる異常発生やメモリのデータ破壊を防止する。
【００４２】
Ｓ３１は、クロックサイクル、チップセレクト領域の設定を行う。
Ｓ３２は、スタックポインタの設定を行う。これらＳ３１、Ｓ３２は、異常発生（例外発生）し、ブート処理の前にクロックサイクル、チップセレクト領域の設定、更に、スタックポインタの設定を行い、たとえ異常が連続発生しても、常にＢＯＯＴ処理の前でクロックサイクル、チップセレクト、スタックポインタの設定を行い、例外が連続発生してスタックが積み重なり、スタック領域をオーバーして不揮発ユーザデータを破壊して暴走する事態を防止することが可能となる（図６とその説明参照）。
【００４３】
Ｓ４は、スタック退避する。これは、ＣＰＵ１１の現在状態を表すスタックの内容を退避する。
【００４４】
Ｓ５は、エラーＬＯＧ取得する。これは、Ｓ４でＣＰＵ１１の現在状態を退避した後、各種ステータス、データなどを外部メモリなどに保存する。
【００４５】
Ｓ６は、スタック復旧する。Ｓ４で退避した内容を復旧する。
Ｓ７は、リスタートする。これにより、ＣＰＵ１１はブート処理などを開始する。
【００４６】
以上によって、静電気などでＣＰＵ例外が発生すると、ＣＰＵ１１はＳ３１、Ｓ３２の（１）ＣＰＵ基本設定再設定処理でクロックサイクル、チップセレクタ領域の設定、スタックポインタの設定をブート処理の前で当該例外発生毎に行うことで、例外が連続して発生しても、常に次のＢＯＯＴ処理に進むときにはクロックサイクル、チップセレクト領域の設定、スタックポインタの設定が初期値に再設定されるため、従来のようにスタックが積み重なってスタック領域をオーバーしてデータ領域をアクセスてデータ破壊を完全に防止することが可能となる。この際に、（１）ＣＰＵ基本設定再設定処理をアセンブラ記述で外部メモリを可及的にアクセスしないようにして当該外部メモリの不安定による異常発生（データ破壊）を最小限に低減することが可能となる。
【００４７】
図４は、本発明の障害発生時の処理ルート（ＢＯＯＴ〜ＦＬＡＳＨ）のフローチャートを示す。
【００４８】
図４において、Ｓ１１は、障害発生（ＷＤＴオーバーフロー）あるいはＣＰＵ例外が発生を契機に、Ｓ１２以降の処理を実行する。
【００４９】
Ｓ１２は、ＢＯＯＴ処理を行う。これは、既述した図２の通常処理、（１）ＣＰＵ基本設定再設定処理、（２）ＣＰＵ例外処理（Ｓ１１）に続く（３）ＢＯＯＴ処理を行う（図１のブートＲＯＭ１７からブートプログラムを読み込んで既知のブート処理を行う）。そして、Ｓ１３以降の処理に進む。
【００５０】
Ｓ１３は、ＦＬＡＳＨ  ＲＯＭへジャンプする。そして、ＣＰＵ１１がＦＬＡＳＨ  ＲＯＭ６からプログラムを読み込んで当該プログラムに従い、Ｓ１４以降の処理を実行する（（４）バス不定区間ソフトウェアリセット処理などを実行する）。
【００５１】
Ｓ１４は、ＷＤＴフラグ２２がセットされている（ＷＤタイマがタイムオーバーしている）か判別する。ＹＥＳの場合には、ＷＤＴタイマ１４がタイムオーバーしてＣＰＵ例外が発生したと判明したので、Ｓ１５以降の処理を実行する。一方、Ｓ１４のＮＯの場合には、ＷＴＤフラグ２２がＯＦＦで、ＣＰＵ例外が発生したと判明したので、Ｓ１５からＳ１７をスキップし、Ｓ１８に進む。
【００５２】
Ｓ１５は、Ｓ１４のＹＥＳでＷＴＤフラグ２２がＯＮで、ＷＴＤオーバーのＣＰＵ例外が発生したと判明したので、ＷＤＴフラグをクリアする。
【００５３】
Ｓ１６は、電池つきＲＡＭ（不揮発ＲＡＭ４）の特定番地（ａ）にデータ”０ｘＦＦ００  ５５ＡＡ”をライトして当該ＷＴＤフラグ＝ＯＮの旨を記録しておく。
【００５４】
Ｓ１７は、（４）ソフトリセットを行う。これにより、図１のソフトＲＳＴ１５内の制御レジスタ１６がＯＮにセットされ、ＣＰＵリセット制御回路１２を経由し、ＣＰＵ１１がリセットされる（ソフトウェアリセットという）。そして、Ｓ１２に戻り、２回目にはＳ１４でＷＤＴフラグがＯＦＦ（Ｓ１５でＷＴＤフラグをクリアしたのでＯＦＦ）で、Ｓ１８に進む。
【００５５】
以上のＳ１１からＳ１７により、ＷＤＴフラグ＝ＯＮのとき（ＷＤＴリセット発生時）には、当該ＷＴＤリセットによるハードウェアで１回のリセット、更に、Ｓ１６でソフトウェアリセットで１回のリセットが行われ、結果として、ハードウェアおよびソフトウェアで１回づつのリセットを行い、システムがスタック状態になるなどの事態を更に最小限に低減することが可能となる。
【００５６】
Ｓ１８は、電池つきＲＡＭ（不揮発ＲＡＭ４）の特定番地（ｂ）＝０ｘＦＦ００  ５５ＡＡ  か判別する。これは、前回にＣＰＵ１１を起動したときには、電池つきＲＡＭ（不揮発ＲＡＭ４）の特定番地（ｂ）＝０ｘＦＦ００  ５５ＡＡに書き込まれているので、ＹＥＳとなり、Ｓ１９で電池つきＲＡＭ（不揮発ＲＡＭ４）の特定番地（ｂ）＝０ｘＦＦＦＦ  ＦＦＦＦに書き込んで、Ｓ１７でソフトウェアリセットを行い、次のＳ１８のときに当該Ｓ１８ＮＯとなり、Ｓ２０に進む。これにより、ＣＰＵ例外のときにソフトウェアリセットが必ず実行されることとなる。
【００５７】
Ｓ２０は、電池つきＲＡＭ（不揮発ＲＡＭ４）の特定番地（ｂ）＝０ｘＦＦ００  ５５ＡＡに書き込む。
【００５８】
Ｓ２１は、ＷＤＴリセット信号をインアクティブに設定する（動作状態に設定する）。以降はＷＤＴタイ１４によるソフトウェアの動作状態が監視され、所定時間経過してもリセットされないと、ＷＤＴリセット（ＣＰＵ例外）が発生する。
【００５９】
Ｓ２２は、電池つきＲＡＭ（不揮発ＲＡＭ４）の特定番地（ａ）＝０ｘＦＦ００  ５５ＡＡか判別する。ＹＥＳの場合には、Ｓ１６で特定番地（ａ）＝ＯｘＦＦ００  ５５ＡＡに書き込み、ＷＤＴフラグ＝ＯＮの状態が記憶されいたので、ソフトウェア障害発生とし、デバッグ処理起動する。一方、ＮＯの場合には、ＷＤＴフラグ＝ＯＦＦと判明したので、ＦＬＡＳＨ  ＲＯＭ上の処理続行し、通常の処理を実行し、ＣＰＵ１１を立ち上げ、ソフトウェアによる業務処理実行可能にする。
【００６０】
以上によって、障害発生時にハードウェアによるリセットに加えてソフトウェアによるソフトリセット（Ｓ１７）を確実に実行し、システムがスタック状態になるなどを防止してシステム安定性をより向上させることが可能となる。
【００６１】
図５は、本発明のＲＡＭチップ・セレクトのガード回路例を示す。ここで、システムＬＳＩ１，ＣＰＵ１１，ＣＰＵリセット制御回路１２、ＭＭＵ１３，ソフトＲＳＴ制御レジスタ１５、電源ＲＳＴデバイス３、不揮発ＲＡＭ（バックアップ電池つき）４は、図１の同一番号と同じであるので説明を省略する。
【００６２】
図５において、アドレスでコーダ２３は、ＣＰＵ１１からのアドレスバス上のアドレスをデコードし、不揮発ＲＡＭ４をアクセスする、ＷＥ（ライトイネーブル）信号、ＣＳ（チップセレクト）信号を生成するものであって、ＯＲ回路２４経由でＣＳ信号を不揮発ＲＡＭ４に入力するものである。これにより、
・ソフトウェアが不揮発ＲＡＭ４の使用時には、ソフトＲＳＴ制御レジスタ１５にＯＮ（例えば１）を書き込むと、ＯＲ回路２４がアドレスでコーダ２３からのＣＳ信号をそのままスルーで通過させて不揮発ＲＡＭ４に入力してアクセスできるが、
・ソフトウェアが不揮発ＲＡＭ４の不使用時には、ソフトＲＳＴ制御レジスタ１５にＯＦＦ（例えば０）を書き込むと、ＯＲ回路２４がアドレスでコーダ２３からのＣＳ信号を抑止し、不揮発ＲＡＭ４に伝達できず、アクセス不可となり、データ破壊を防止できる。
【００６３】
・電源投入中、ＣＰＵリセット中は、ＣＰＵリセット制御回路１２からソフトＲＳＴ制御レジスタ１５を強制的にＯＦＦにし、ＯＲ回路によりＣＳ信号を抑止し、不揮発ＲＡＭ４のアクセスを不可にし、データ破壊を防止できる。
【００６４】
従って、電源投入中、ＣＰＵリセット中、更に、ソフトウェアが不揮発ＲＡＭ４へのアクセスが必要となりソフトＲＳＴ制御レジスタ１５にＯＮを設定しない限り、不揮発ＲＡＭ４へのアクセスを不可とし、システムの不安定状態のときの当該不揮発ＲＡＭ（電池バックアップ付）４のデータ破壊を防止し、システムの安定性を向上させることが可能となる。
【００６５】
尚、図６を用い、問題発生のメカニズムを簡単に説明する。
図６において、Ｓ３１は、静電気などによりＣＰＵがリセットされ、クロックサイクル／チップセレクト領域が初期状態に戻る、スタックポインタのずれなどが発生する。
【００６６】
Ｓ３２は、Ｓ３１によって、ＣＰＵ例外が発生する。例外としては、アボート例外、未定義例外、プリフェッチアボートなどが発生する。
【００６７】
Ｓ３３は、スタック退避する。この際、静電気の影響でメモリの設定が異常のままになり正常にスタック退避できないことが発生する場合がある。
【００６８】
Ｓ３４は、エラーＬＯＧ取得する。
Ｓ３５は、スタック復旧する。これにより、Ｓ３３で退避した元の状態に、ＣＰＵ１１の状態が戻ることとなる。しかし、Ｓ３６で２バイトずれたアドレスに戻り、アドレスとして復旧させるため、また例外が発生する（その他の退避データはスタックに積み上げられる）。これにより、Ｓ３７に記載するように、例外が連続して発生するためスタックが積み重なり、スタック領域をオーバーして不揮発ユーザデータを破棄する。例えばＳ３８に記載したように、スタック領域をオーバーし、連続して例外が発生したことでスタックが積み重なり、不揮発ユーザーデータ領域に積み上げてしまいデータ破壊が発生する。
【００６９】
以上のように、例外が連続して発生すると、リスタート処理までたどりつくことができなく（Ｓ３９）、スタックが積み重なりスタック領域をオーバーしてユーザ領域のデータを破壊する事態が発生する問題点があった。本願発明は、既述した図３で連続して例外発生してもその都度、（１）ＣＰＵ基本設定再設定処理（Ｓ３１、Ｓ３２）でクロックサイクル、チップセレクト領域の設定、スタックポインタの設定を行い、スタックが積み重なる事態を無くし、システムの安定性を大幅に向上させることができる。
【００７０】
（付記１）
ＣＰＵで制御を行う端末の暴走を防止する端末フェールセーフシステムにおいて、
前記端末で予期せぬ障害が発生して検出された例外の通知を受けるＣＰＵと、
前記ＣＰＵが前記通知に従い該当ＲＯＭから例外処理を行うプログラムを読み込んだときに当該プログラムの先頭あるいは先頭の近傍でＣＰＵ基本設定の設定を行い、当該例外処理が繰り返されたときに常にＣＰＵ基本設定を繰り返して暴走を防止する手段とを備え、
当例外処理を行った後にＣＰＵのスタック退避、エラーログ取得、スタック復旧、リスタートすることを特徴とする端末フェールセーフシステム。
【００７１】
（付記２）
前記ＣＰＵ基本設定を行う際に、外部メモリへのアクセスを最小限にしたことを特徴とする付記１記載の端末フェールセーフシステム。
【００７２】
（付記３）
ＣＰＵで制御を行う端末の暴走を防止する端末フェールセーフシステムにおいて、
前記端末で予期せぬ障害が発生して検出された例外の通知を受けるＣＰＵと、
前記ＣＰＵが前記通知に従いＲＯＭから読み取ったプログラムに従いハードウェアから例外通知と判明したときにソフトウェアリセットすると共に併せて当該ハードウェアからの例外通知および他の例外通知のときのいずれでもソフトウェアリセットする手段と
を備え、
ハードウェアからの例外通知およびソフトウェアからの例外通知されたときの両方でソフトウェアリセットして暴走を防止することを特徴とする端末フェールセーフシステム。
【００７３】
（付記４）
前記ＣＰＵの外部バスに接続されたメモリについて、ソフトウェアから当該メモリをアクセスするときにメモリのアクセスを可にし、アクセスしないときにアクセス不可にする回路を設けたことを特徴とする付記１から付記３のいずれかに記載の端末フェールセーフシステム。
【００７４】
（付記５）
ＣＰＵで制御を行う端末の暴走を防止する端末フェールセーフ方法において、
前記端末で予期せぬ障害が発生して検出された例外をＣＰＵに通知するステップと、
前記ＣＰＵが前記通知に従い該当ＲＯＭから例外処理を行うプログラムを読み込んだときに当該プログラムの先頭あるいは先頭の近傍でＣＰＵ基本設定の設定を行い、当該例外処理が繰り返されたときに常にＣＰＵ基本設定を繰り返して暴走を防止するステップとを有し、
当例外処理を行った後にＣＰＵのスタック退避、エラーログ取得、スタック復旧、リスタートすることを特徴とする端末フェールセーフ方法。
【００７５】
（付記６）
ＣＰＵで制御を行う端末の暴走を防止する端末フェールセーフ方法において、
前記端末で予期せぬ障害が発生して検出された例外をＣＰＵに通知するステップと、
前記ＣＰＵが前記通知に従いＲＯＭから読み取ったプログラムに従いハードウェアから例外通知と判明したときにソフトウェアリセットすると共に併せて当該ハードウェアからの例外通知および他の例外通知のときのいずれでもソフトウェアリセットするステップと
を有し、
ハードウェアからの例外通知およびソフトウェアからの例外通知されたときの両方でソフトウェアリセットして暴走を防止することを特徴とする端末フェールセーフ方法。
【００７６】
（付記７）
端末で予期せぬ障害が発生して検出された例外の通知をＣＰＵに通知する手段と、
前記ＣＰＵが前記通知に従い該当ＲＯＭから例外処理を行うプログラムを読み込んだときに当該プログラムの先頭あるいは先頭の近傍でＣＰＵ基本設定の設定を行い、当該例外処理が繰り返されたときに常にＣＰＵ基本設定を繰り返して暴走を防止する手段と
して機能させ、例外処理を行った後にＣＰＵのスタック退避、エラーログ取得、スタック復旧、リスタートさせるための端末フェールセーフプログラム。
【産業上の利用可能性】
【００７７】
本発明は、端末で例外発生時の例外処理の先頭でＣＰＵ基本設定（チップセレクト／スタックポインタなど）を再設定したり、当該ＣＰＵ基本設定をアセンブラで書いて外部メモリへのアクセスを最小限にしたり、外部バス依存のプログラム暴走を回避するためにハードとソフトによる再リセットを可能にしたり、外部バスに接続されるメモリを必要なときのみソフトからアクセス可能な回路を設けたりし、ＣＰＵを含む端末の静電気等による予期せぬ誤動作が連続しても当該端末の暴走を大幅に改善することが可能となる。
【図面の簡単な説明】
【００７８】
【図１】本発明のシステム構成図である。
【図２】本発明のシステム立ち上げ時のタイムチャートである。
【図３】本発明の例外処理のフェールセーフ概要説明図である。
【図４】本発明の障害発生時の処理ルートのフローチャートである。
【図５】本発明のＲＡＭチップ・セレクトのガード回路例である。
【図６】問題発生のメカニズムである。
【符号の説明】
【００７９】
１：システムＬＳＩ
１１：ＣＰＵ
１２：ＣＰＵリセット制御回路
１３：ＭＭＵ
１４：ＷＤタイマ
１５：ソフトＲＳＴ回路
１６：制御レジスタ
１７：ブートＲＯＭ
１８：ブート処理
１９：キャッシュメモリ
２０：内蔵ＲＡＭ
２１：制御レジスタ群
２２：ＷＤＧフラグ
３：電源ＲＳＴデバイス
４：不揮発ＲＡＭ（バックアップ電池つき）
５：揮発ＲＡＭ
６：不揮発ＲＯＭ（ＦＬＡＳＨ  ＲＯＭ）
７：バス不定区間ソフトウェアリセット処理
８：ＣＰＵ基本設定再設定処理
９：ＬＣＤ
１０：各種デバイス
３１：外部バス
２４：ＯＲ回路
【図１】
2005284329.tif 000003
【図２】
2005284329.tif 000004
【図３】
2005284329.tif 000005
【図４】
2005284329.tif 000006
【図５】
2005284329.tif 000007
【図６】
2005284329.tif 000008