(57)【要約】【課題】マイクロプロセッサに含まれるＲＡＭの変数領域及びスタック領域の全領域の破損チェックを行い、破損が確認された場合は安全に復帰させる。【解決手段】ＲＡＭ１２の変数領域とスタック領域を個別に破損チェックし、変数領域で破損が確認され、所定の処理ループの繰り返し回数が予め定められた回数以上になったとき、ＣＰＵ１１がＩ／Ｏ１３を介して警告信号を外部に出力する。ＬＥＤ２１がこの警告信号に応答して点灯する。スタック領域で破損が確認された場合は、スタック領域の内容が破壊されていることによるプログラムの暴走を防ぐために、直ちにリセット回路１４がマイクロプロセッサ１のリセットを行う。【選択図】図１
2010250707.tif 000002
【特許請求の範囲】
【請求項１】
変数領域及びスタック領域を有する記憶部(12)と、
前記変数領域の破損確認を行い、前記変数領域の破損が確認されなかった場合、前記スタック領域のデータを前記変数領域にコピーした後に前記スタック領域の破損確認を行う中央処理装置(11)と、
を備えたマイクロプロセッサ。
【請求項２】
前記中央処理装置(11)は、
前記変数領域の全領域に予め定められたデータを書き込んで、当該書き込まれたデータを読み出し、当該読み出したデータが前記予め定められたデータと一致していたら前記変数領域は正常、一致していなければ前記変数領域は破損していると判断する変数領域確認部(11)と、
前記変数領域の破損が確認されなかった場合、前記スタック領域の内容を前記変数領域にコピーした後に、前記スタック領域の全領域に予め定められたデータを書き込んで、当該書き込まれたデータを読み出し、当該読み出したデータが前記予め定められたデータと一致していたら前記スタック領域は正常、一致していなければ前記スタック領域は破損していると判断するスタック領域確認部(11)と、
を有する請求項１に記載のマイクロプロセッサ。
【請求項３】
前記スタック領域確認部(11)が前記スタック領域の破損を確認した場合、当該マイクロプロセッサ(1)を初期状態にリセットするリセット部(14)を更に備えた請求項１又は請求項２に記載のマイクロプロセッサ。
【請求項４】
前記変数領域確認部(11)は、前記変数領域の破損を確認した場合、前記変数領域の破損確認を繰り返し行うものであり、
前記変数領域の破損確認の繰り返し回数が予め定められた回数以上になったとき、前記変数領域が破損していることを報知する報知部(13)を更に備える請求項１乃至請求項３のいずれかに記載のマイクロプロセッサ。
【請求項５】
変数領域及びスタック領域を有する記憶部(12)のメモリ破損チェック方法であって、
前記変数領域の破損確認を行う変数領域確認ステップと、
前記変数領域の破損が確認されなかった場合、前記スタック領域のデータを前記変数領域にコピーした後に前記スタック領域の破損確認を行うスタック領域確認ステップと、
を有するメモリ破損チェック方法。
【請求項６】
前記変数領域確認ステップは、前記変数領域の全領域に予め定められたデータを書き込んで、当該書き込まれたデータを読み出し、当該読み出したデータが前記予め定められたデータと一致していたら前記変数領域は正常、一致していなければ前記変数領域は破損していると判断するステップであり、
前記スタック領域確認ステップは、前記変数領域の破損が確認されなかった場合、前記スタック領域の内容を前記変数領域にコピーした後に、前記スタック領域の全領域に予め定められたデータを書き込んで、当該書き込まれたデータを読み出し、当該読み出したデータが前記予め定められたデータと一致していたら前記スタック領域は正常、一致していなければ前記スタック領域は破損していると判断するステップである請求項５に記載のメモリ破損チェック方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、変数領域とスタック領域を有するＲＡＭとＣＰＵを備えるマイクロプロセッサ及びモリ破損チェック方法に関するものである。
【背景技術】
【０００２】
マイクロプロセッサに搭載されているＲＡＭ（Random Access Memory）は、プログラム実行時にデータを一時的に記憶する作業用領域である変数領域と、サブルーチン読み出しや割り込み処理を行う際にＣＰＵ（Central Processing Unit：中央処理装置）のレジスタの内容を一時的に退避させておくためのスタック領域に分けられる。
【０００３】
一般的には、マイクロプロセッサのリセット及びスタート時にＲＡＭの破損チェックが行われる。特にＲＡＭのスタック領域については、既にデータがスタックされている領域（スタック消費量）を調べ、使用されていないスタック領域のみが破損チェックの対象となっていた。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−００６２０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、スタック消費量は、プログラムに依存するために固定的ではない。従って、プログラムが変わる毎にスタック消費量を調べ、コード変更等を行う必要があった。また、スタック領域のうち使用されている領域は破損チェックが行われないため、スタック領域の使用されている領域に破損があった場合はその破損は検出されず、マイクロプロセッサが誤動作や暴走する懸念があった。
【０００６】
本発明は、上記の問題を解決するためになされたもので、ＲＡＭの変数領域及びスタック領域の全領域の破損チェックを行い、破損が確認された場合は安全に復帰できるようにすることを目的とする。
【課題を解決するための手段】
【０００７】
請求項１に記載の発明のマイクロプロセッサは、変数領域及びスタック領域を有する記憶部と、前記変数領域の破損確認を行い、前記変数領域の破損が確認されなかった場合、前記スタック領域の内容を前記変数領域にコピーした後に前記スタック領域の破損確認を行う中央処理装置と、を備える。
【０００８】
請求項５に記載の発明のメモリ破損チェック方法は、変数領域及びスタック領域を有する記憶部のメモリ破損チェック方法であって、前記変数領域の破損確認を行う変数領域確認ステップと、前記変数領域の破損が確認されなかった場合、前記スタック領域のデータを前記変数領域にコピーした後に前記スタック領域の破損確認を行うスタック領域確認ステップと、を有する。
【０００９】
従来、スタック領域のうち使用されている領域は破損確認が行われないため、スタック領域の使用されている領域に破損があった場合はその破損は検出されず、マイクロプロセッサが誤動作や暴走する原因となっていた。
【００１０】
しかし、スタック領域の内容を変数領域にコピーした後にスタック領域の破損確認を行うことで、変数領域とスタック領域の全領域の破損確認を行うことができ、スタック領域の破損によるマイクロプロセッサの誤動作や暴走を防ぐことができる。
【００１１】
請求項２に記載の発明は、請求項１に記載のマイクロプロセッサであって、前記中央処理装置は、
前記変数領域の全領域に予め定められたデータを書き込んで、当該書き込まれたデータを読み出し、当該読み出したデータが前記予め定められたデータと一致していたら前記変数領域は正常、一致していなければ前記変数領域は破損していると判断する変数領域確認部と、
前記変数領域の破損が確認されなかった場合、前記スタック領域の内容を前記変数領域にコピーした後に、前記スタック領域の全領域に予め定められたデータを書き込んで、当該書き込まれたデータを読み出し、当該読み出したデータが前記予め定められたデータと一致していたら前記スタック領域は正常、一致していなければ前記スタック領域は破損していると判断するスタック領域確認部と、を有する。
【００１２】
請求項６に記載の発明は、請求項５に記載のメモリ破損チェック方法であって、前記変数領域確認ステップは、前記変数領域の全領域に予め定められたデータを書き込んで、当該書き込まれたデータを読み出し、当該読み出したデータが前記予め定められたデータと一致していたら前記変数領域は正常、一致していなければ前記変数領域は破損していると判断するステップであり、
前記スタック領域確認ステップは、前記変数領域の破損が確認されなかった場合、前記スタック領域の内容を前記変数領域にコピーした後に、前記スタック領域の全領域に予め定められたデータを書き込んで、当該書き込まれたデータを読み出し、当該読み出したデータが前記予め定められたデータと一致していたら前記スタック領域は正常、一致していなければ前記スタック領域は破損していると判断するステップである。
【００１３】
これらの構成によれば、スタック領域の内容を変数領域にコピーした後にスタック領域の破損確認を行うことで、変数領域とスタック領域の全領域の破損確認を行うことができ、スタック領域の破損によるマイクロプロセッサの誤動作や暴走を防ぐことができる。
【００１４】
請求項３に記載の発明は、請求項１又は請求項２に記載のマイクロプロセッサであって、前記スタック領域確認部が前記スタック領域の破損を確認した場合、当該マイクロプロセッサを初期状態にリセットするリセット部を更に備える。
【００１５】
スタック領域で破損が確認された場合は、スタック領域の内容が破壊されている可能性が高く、プログラムの暴走が懸念される。従って、リセット部がマイクロプロセッサのリセットを行って記憶部の内容を初期状態に戻すことによって、マイクロプロセッサを安全に復帰させることができる。
【００１６】
請求項４に記載の発明は、請求項１乃至請求項３のいずれかに記載のマイクロプロセッサであって、前記変数領域確認部は、前記変数領域の破損を確認した場合、前記変数領域の破損確認を繰り返し行うものであり、前記変数領域の破損確認の繰り返し回数が予め定められた回数以上になったとき、前記変数領域が破損していることを報知する報知部を更に備える。
【００１７】
変数領域確認部は、変数領域の破損を確認した場合は再び破損確認を行うため、回復不能な破損である場合は破損確認が無限に繰り返されて行われることになる。しかし、技術者はマイクロプロセッサ内で破損確認が無限に繰り返されて行われていることに気付きにくい。そこで、破損確認の繰り返し回数が予め定められた回数以上になったときに報知部が報知することによって、簡単な構成で技術者に変数領域が破損していることを認識させることができる。
【発明の効果】
【００１８】
この発明によれば、スタック領域の内容を変数領域にコピーした後にスタック領域の破損確認を行うことで、変数領域とスタック領域の全領域の破損確認を行うことができ、スタック領域の破損によるマイクロプロセッサの誤動作や暴走を防ぐことができる。
【図面の簡単な説明】
【００１９】
【図１】マイクロプロセッサの機能ブロック図である。
【図２】ＲＡＭの破損チェック処理の流れを示したフローチャートである。
【図３】ＲＡＭの破損チェック処理の流れを示したフローチャートである。
【図４】ＲＡＭの破損チェック処理の流れを示したフローチャートである。
【図５】ＲＡＭの破損チェック処理の流れを示したフローチャートである。
【図６】ＲＡＭの破損チェック処理の流れを示したフローチャートである。
【図７】ＲＡＭの破損チェック処理の流れを示したフローチャートである。
【発明を実施するための形態】
【００２０】
以下、図面に基づいて本発明の一実施形態に係るマイクロプロセッサ及びモリ破損チェック方法を説明する。図１は、本実施の形態におけるマイクロプロセッサ１の機能ブロック図である。マイクロプロセッサ１は、ＣＰＵ１１、ＲＡＭ１２、入出力装置（以下「Ｉ／Ｏ」という）１３、リセット回路１４と、これらのデバイスを繋ぐバス１５によって構成されている。
【００２１】
ＣＰＵ１１は、Ｉ／Ｏ１３を介して取り込んだ指示信号等に応じて外部の記憶装置に記憶されたプログラムを読み出して処理を実行し、マイクロプロセッサ１と接続されている外部装置への指示信号の出力やデータ転送等を行うことにより、外部装置を制御するものである。
【００２２】
Ｉ／Ｏ１３は、ＣＰＵ１１と外部装置との間に介在し、ＣＰＵ１１から出力された指示信号やデータを取り込んで外部装置へ出力し、また、外部装置から出力された信号やデータを取り込んでＣＰＵ１１へ出力する。ＬＥＤ２１は、ＣＰＵ１１の指示によってＩ／Ｏ１３から出力される警告信号に応答して点灯する。
【００２３】
リセット回路１４は、ＣＰＵ１１の暴走時等にマイクロプロセッサ１全体を初期状態にリセットするためのものであり、例えば、パワーオンリセット回路とＣＰＵ１１の暴走を監視するためのウォッチドッグタイマ（以下、「ＷＤＴ」という）等を有する。ＣＰＵ１１の暴走は、ＷＤＴのタイマのオーバーフローによって検知され、この検知を受けて、パワーオンリセット回路がマイクロプロセッサ１のリセットを行う。
【００２４】
バス１５は、ＣＰＵ１１、ＲＡＭ１２、Ｉ／Ｏ１３及びリセット回路１４を電気的に接続するものであり、アドレスバス、データバス等を含む。
【００２５】
ＲＡＭ１２は、ＣＰＵ１１がプログラムを実行する際にデータやアドレス等を格納するためのワークメモリであり、プログラム実行時にデータを一時的に記憶する変数領域と、サブルーチン読み出しや割り込み処理を行う際にＣＰＵ１１のレジスタの内容を一時的に退避させておくためのスタック領域に分けられる。
【００２６】
ＲＡＭ１２は、一般的には、マイクロプロセッサ１のリセット及びスタート時に破損チェックが行われる。しかし、従来は、スタック領域については、既にデータがスタックされている領域（スタック消費量）を調べ、使用されていないスタック領域のみが破損チェックの対象となっていた。スタック消費量は、プログラムに依存するために固定的ではない。従って、プログラムが変わる毎にスタック消費量を調べ、コード変更等を行う必要があり、破損チェックを行うためのプログラムが複雑化するという問題があった。また、スタック領域の使用されている領域は破損チェックが行われないため、使用されている領域に破損があった場合はその破損は検出されず、マイクロプロセッサが誤動作や暴走する懸念があった。
【００２７】
そこで、本発明では、ＲＡＭ１２のスタック領域のデータを変数領域に一時退避させることにより、変数領域及びスタック領域の全領域について破損チェックを行う方法を提案する。図２〜７は、本実施の形態におけるＲＡＭ１２の破損チェック処理の流れを示したフローチャートである。破損チェック処理を示すプログラムは、スタック領域を消費しないようにするため、１つのプログラム内で行い、関数呼び出しは極力避け、プログラムの先頭で割り込み禁止処理を行うことが望ましい。
【００２８】
尚、図に示すフローチャートにおいて、pVariable及びpStackは変数である。(pVariable)は、ＲＡＭ１２におけるpVariableの示すアドレスの内容であり、(pStack)は、ＲＡＭ１２におけるpStackの示すアドレスの内容を指す。
【００２９】
まず、ＣＰＵ１１は、変数pVariableにＲＡＭ１２の変数領域開始アドレスを入力し（ステップＳ１１）、変数pVariableの示すアドレスに0x55555555を格納する（ステップＳ１２）。尚、0x55555555は一例であり、ＲＡＭ１２の破損チェックを行う為に有効な数値であれば、他でも良い。
【００３０】
次に、ＣＰＵ１１は変数pVariableに１加算し（ステップＳ１３）、変数pVariableが変数領域終了アドレスに達していなければ（ステップＳ１４；ＮＯ）、ステップＳ１２へ処理を移行する。こうして、ＣＰＵ１１はＲＡＭ１２における変数領域全てに0x55555555の数値を格納する。
【００３１】
変数pVariableが変数領域終了アドレスに達したら（ステップＳ１４；ＹＥＳ）、ＣＰＵ１１は変数pVariableに変数領域開始アドレスを入力し（ステップＳ１５）、変数pVariableの示すアドレスの内容が0x55555555であるか否かを判別する（ステップＳ１６）。変数pVariableの示すアドレスの内容が0x55555555でない場合（ステップＳ１６；ＮＯ）、変数領域が破損していると見なし、ＣＰＵ１１はステップＳ１１へ処理を移行する。変数pVariableの示すアドレスの内容が0x55555555である場合（ステップＳ１６；ＹＥＳ）、ＣＰＵ１１は変数pVariableに１加算し（ステップＳ１７）、変数pVariableが変数領域終了アドレスに達していなければ（ステップＳ１８；ＮＯ）、ステップＳ１６へ処理を移行する。
【００３２】
変数pVariableが変数領域終了アドレスに達したら（ステップＳ１８；ＹＥＳ）、ＣＰＵ１１は変数pVariableに変数領域開始アドレスを入力し（ステップＳ１９）、変数pVariableの示すアドレスに0xAAAAAAAAを格納する（ステップＳ２０）。尚、0xAAAAAAAAは0x55555555の各桁の論理を逆にした数値であり、ＲＡＭ１２の破損チェックを行う為に有効な数値であれば、他でも良い。
【００３３】
次に、ＣＰＵ１１は変数pVariableに１加算し（ステップＳ２１）、変数pVariableが変数領域終了アドレスに達していなければ（ステップＳ２２；ＮＯ）、ステップＳ２０へ処理を移行する。こうして、ＲＡＭ１２における変数領域全てに0xAAAAAAAAの数値を格納する。
【００３４】
変数pVariableが変数領域終了アドレスに達したら（ステップＳ２２；ＹＥＳ）、ＣＰＵ１１は変数pVariableに変数領域開始アドレスを入力し（ステップＳ２３）、変数pVariableの示すアドレスの内容が0xAAAAAAAAであるか否かを判別する（ステップＳ２４）。変数pVariableの示すアドレスの内容が0xAAAAAAAAでない場合（ステップＳ２４；ＮＯ）、変数領域が破損していると見なし、ＣＰＵ１１はステップＳ１１へ処理を移行する。変数pVariableの示すアドレスの内容が0xAAAAAAAAである場合（ステップＳ２４；ＹＥＳ）、ＣＰＵ１１は変数pVariableに１加算し（ステップＳ２５）、変数pVariableが変数領域終了アドレスに達していなければ（ステップＳ２６；ＮＯ）、ステップＳ２４へ処理を移行する。以上が変数領域の破損チェックに関する処理である。
【００３５】
尚、変数領域で破損が見つかった場合、ＣＰＵ１１はステップＳ１１へ処理を移行して、もう一度変数領域に0x55555555や0xAAAAAAAAを格納して、破損チェックを繰り返して行うことになる。つまり、回復不可能な破損である場合、ＣＰＵ１１はこの処理を無限に繰り返すことになり、技術者はＣＰＵ１１内でこの処理が無限に繰り返されていることに気付きにくい。
【００３６】
そこで、ＣＰＵ１１は変数領域の破損が見つかったことによるステップＳ１１へ処理移行の回数（繰り返し回数）をカウントし、その回数が予め定められた回数以上になったとき、Ｉ／Ｏ１３を介して警告信号を外部に出力する。ＬＥＤ２１がこの警告信号に応答して点灯することにより、簡単な構成で技術者に変数領域が破損していることを認識させることができる。尚、繰り返し回数の他に、変数領域の破損確認が始まると同時にタイマーをスタートさせ、タイマーが予め定められた時間に達した時点で、破損確認が繰り返し行われていると判断し、ＣＰＵ１１はＩ／Ｏ１３を介して警告信号をＬＥＤ２１へ出力するようにしてもよい。
【００３７】
次に、ＣＰＵ１１は、変数pVariableに変数領域開始アドレスを入力し（ステップＳ２７）、更に変数pStackにスタック領域開始アドレスを入力し（ステップＳ２８）、変数pVariableの示すアドレスに変数pStackの示すアドレスの内容を格納する（ステップＳ２９）。そして、ＣＰＵ１１は、変数pVariable及び変数pStackに１加算し（ステップＳ３０）、変数pStackがスタック領域終了アドレスに達していなければ（ステップＳ３１；ＮＯ）、ステップＳ２９へ処理を移行する。こうして、スタック領域の内容を変数領域に一時退避させる。
【００３８】
変数pStackがスタック領域終了アドレスに達したら（ステップＳ３１；ＹＥＳ）、ＣＰＵ１１は変数pStackにスタック領域開始アドレスを入力し（ステップＳ３２）、変数pStackの示すアドレスに0x55555555を格納する（ステップＳ３３）。次に、ＣＰＵ１１は変数pStackに１加算し（ステップＳ３４）、変数pStackがスタック領域終了アドレスに達していなければ（ステップＳ３５；ＮＯ）、ステップＳ３３へ処理を移行する。こうして、スタック領域全てに0x55555555の数値を格納する。
【００３９】
変数pStackがスタック領域終了アドレスに達したら（ステップＳ３５；ＹＥＳ）、ＣＰＵ１１は変数pStackにスタック領域開始アドレスを入力し（ステップＳ３６）、変数pStackの示すアドレスの内容が0x55555555であるか否かを判別する（ステップＳ３７）。変数pStackの示すアドレスの内容が0x55555555でない場合（ステップＳ３７；ＮＯ）、スタック領域が破損していると見なし、ＣＰＵ１１はリセット回路１４にパワーオンリセットを行わせるための指示信号を出力する（ステップＳ５７）。
【００４０】
変数pStackの示すアドレスの内容が0x55555555である場合（ステップＳ３７；ＹＥＳ）、ＣＰＵ１１は変数pStackに１加算し（ステップＳ３８）、変数pStackがスタック領域終了アドレスに達していなければ（ステップＳ３９；ＮＯ）、ステップＳ３７へ処理を移行する。
【００４１】
変数pStackがスタック領域終了アドレスに達していたら（ステップＳ３９；ＹＥＳ）、ＣＰＵ１１は変数pStackにスタック領域開始アドレスを入力し（ステップＳ４０）、変数pStackの示すアドレスに0xAAAAAAAAを格納する（ステップＳ４１）。続いて、ＣＰＵ１１は変数pStackに１加算し（ステップＳ４２）、変数pStackがスタック領域終了アドレスに達していなければ（ステップＳ４３；ＮＯ）、ステップＳ４１へ処理を移行する。こうして、スタック領域全てに0xAAAAAAAAの数値を格納する。
【００４２】
変数pStackがスタック領域終了アドレスに達していたら（ステップＳ４３；ＹＥＳ）、ＣＰＵ１１は変数pStackにスタック領域開始アドレスを入力し（ステップＳ４４）、変数pStackの示すアドレスの内容が0xAAAAAAAAであるか否かを判別する（ステップＳ４５）。変数pStackの示すアドレスの内容が0xAAAAAAAAでない場合（ステップＳ４５；ＮＯ）、スタック領域が破損していると見なし、ＣＰＵ１１はリセット回路１４にパワーオンリセットを行わせるための指示信号を出力する（ステップＳ５７）。
【００４３】
変数pStackの示すアドレスの内容が0xAAAAAAAAである場合（ステップＳ４５；ＹＥＳ）、ＣＰＵ１１は変数pStackに１加算し（ステップＳ４６）、変数pStackがスタック領域終了アドレスに達していなければ（ステップＳ４７；ＮＯ）、ステップＳ４５へ処理を移行する。以上がスタック領域の破損チェックに関する処理である。
【００４４】
そして、ＣＰＵ１１は、変数pVariableに変数領域開始アドレスを入力し（ステップＳ４８）、更に変数pStackにスタック領域開始アドレスを入力し（ステップＳ４９）、変数pStackの示すアドレスに変数pVariableの示すアドレスの内容を格納する（ステップＳ５０）。そして、ＣＰＵ１１は、変数pVariable及び変数pStackに１加算し（ステップＳ５１）、変数pStackがスタック領域終了アドレスに達していなければ（ステップＳ５２；ＮＯ）、ステップＳ５０へ処理を移行する。こうして、変数領域に一時退避されていた内容が、再びスタック領域に格納される。
【００４５】
尚、スタック領域で破損が見つかった場合、（１）変数領域にコピーしたスタック領域の内容が既に破壊されている、（２）変数領域にコピーしたスタック領域の内容は正しくても、変数領域からスタック領域に格納した時点で内容が破壊される、（３）外乱にて異常を検出した後、次の破損チェック時に正常と判断した場合に、変数領域にコピーしたスタック領域の内容が破壊されている、ことが懸念される。従って、スタック領域の内容を常に正しいものとするために、スタック領域で破損が見つかった場合は直ちにマイクロプロセッサ１のパワーオンリセットを行う。尚、リセットの方法は、パワーオンリセット以外であってもよい。
【００４６】
続いて、ＣＰＵ１１は、変数pVariableに変数領域開始アドレスを入力し（ステップＳ５３）、変数pVariableの示すアドレスに0x00000000を格納する（ステップＳ５４）。次に、ＣＰＵ１１は変数pVariableに１加算し（ステップＳ５５）、変数pVariableが変数領域終了アドレスに達していなければ（ステップＳ５６；ＮＯ）、ステップＳ５４へ処理を移行する。こうして、ＲＡＭ１２における変数領域全てをゼロクリアする。
【００４７】
なお、上記0x55555555及び0xAAAAAAAAは、特許請求の範囲でいう予め定められたデータの一例である。
【００４８】
また、上記において、ＣＰＵ１１が、特許請求の範囲でいう変数領域確認部及びスタック領域確認部として機能する。
【００４９】
以上、説明したように、ＲＡＭ１２の変数領域とスタック領域を個別に破損チェックし、変数領域で破損が確認され、所定の処理ループの繰り返し回数が予め定められた回数以上になったとき、ＣＰＵ１１がＩ／Ｏ１３を介して警告信号を外部に出力する。ＬＥＤ２１がこの警告信号に応答して点灯することにより、簡単な構成で技術者に変数領域が破損していることを認識させることができる。
【００５０】
そして、スタック領域で破損が確認された場合は、スタック領域の内容が破壊されていることによるプログラムの暴走を防ぐために、直ちにリセット回路１４がマイクロプロセッサ１のリセットを行うことによって、マイクロプロセッサ１を安全に復帰させることができる。
【００５１】
尚、本実施の形態では、本発明に係る報知部を、警告信号を出力するＩ／Ｏ１３としたが、報知部をＬＥＤ２１とし、マイクロプロセッサ１としてＬＥＤ２１を含めた構成としてもよい。
【符号の説明】
【００５２】
１    マイクロプロセッサ
１１  ＣＰＵ（中央処理装置）
１２  ＲＡＭ（記憶部）
１３  Ｉ／Ｏ（報知部）
１４  リセット回路（リセット部）
１５  バス
２１  ＬＥＤ（報知部）
【図１】
2010250707.tif 000003
【図２】
2010250707.tif 000004
【図３】
2010250707.tif 000005
【図４】
2010250707.tif 000006
【図５】
2010250707.tif 000007
【図６】
2010250707.tif 000008
【図７】
2010250707.tif 000009