(57)【要約】【課題】ウォッチドッグタイマの機能をソフトウェアで拡張し暴走検出精度を上げることにより、システムの障害検出率を上げることができる方法を提供する。【解決手段】マイクロプログラム暴走検出方法は、プログラムを実行する中央演算装置とタイマとを有するマイクロプログラム暴走検出システムにおいて、タイマを制御管理する第１のプログラムと第２のプログラムとを用意する。第２のプログラムが第１の設定時間として第１のプログラムへ通知するステップと、第１のプログラムが第１の設定時間をタイマに設定するステップと、第２のプログラムが第１の設定時間を通知してから当該第１の設定時間が経過する前に第２の設定時間を通知するステップと、第１のプログラムが第２の設定時間をタイマに設定するステップと、第１の設定時間と第２の設定時間との通知状況に基づいて、中央演算装置をリセットするステップとを中央演算装置に実行させる。【選択図】図４
2007287096.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを実行する中央演算装置と、設定された計時時間を計時するタイマとを有するマイクロプログラム暴走検出システムにおいて、
前記プログラムとして、前記タイマを制御管理する第１のプログラムと、前記第１のプログラムに時間に関する制御情報を送信する第２のプログラムとを用意し、
前記中央演算装置により前記プログラムが実行されるときに、
前記第２のプログラムが、前記時間に関する制御情報を第１の設定時間として、前記第１のプログラムへ通知するステップと、
前記第１のプログラムが、前記第１の設定時間を取得すると、当該第１の設定時間を前記タイマに設定するステップと、
前記第２のプログラムが、前記第１の設定時間を通知してから当該第１の設定時間が経過する前に、第２の設定時間を前記第１のプログラムへ通知するステップと、
前記第１のプログラムが、前記第２の設定時間を取得すると、当該第２の設定時間を前記タイマに設定するステップと、
前記第１のプログラムが、前記第１の設定時間と前記第２の設定時間との通知状況に基づいて、前記中央演算装置をリセットするステップとを前記中央演算装置に実行させることを特徴とするマイクロプログラム暴走検出方法。
【請求項２】
前記中央演算装置をリセットするステップは、前記第１の設定時間が経過する前に前記第２の設定時間が設定されない場合に、前記タイマの割り込み信号をトリガとして前記中央演算装置をリセットするステップを備えたことを特徴とする請求項１に記載のマイクロプログラム暴走検出方法。
【請求項３】
前記中央演算装置をリセットするステップは、前記第１のプログラムが前記第１の設定時間を前記タイマに設定してから、前記第２のプログラムから前記第２の設定時間が通知されるまでの時間間隔を計時するステップと、
当該時間間隔を第１の時間間隔として記憶するステップと、
前記第２の設定時間を前記タイマに設定してから、前記第２のプログラムから次の設定時間が通知されるまでの時間間隔を計時するステップと、
当該時間間隔を第２の時間間隔として記憶するステップとを備え、
前記第１の時間間隔と前記第２の時間間隔とを比較するステップと、
前記第１の時間間隔と前記第２の時間間隔とが等しい場合に、連続して等しい時間間隔が得られた回数に基づいて、前記中央演算装置をリセットするステップとを備えたことを特徴とする請求項１に記載のマイクロプログラム暴走検出方法。
【請求項４】
前記中央演算装置をリセットするステップは、前記第１のプログラムが通知された前記第１の設定時間と前記第２の設定時間とが等しい場合に、連続して等しい設定時間が得られた回数に基づいて、前記中央演算装置をリセットするステップを備えたことを特徴とする請求項１に記載のマイクロプログラム暴走検出方法。
【請求項５】
前記中央演算装置をリセットするステップは、前記第１のプログラムが前記第１の設定時間を前記タイマに設定してから、前記第２のプログラムから前記第２の設定時間が通知されるまでの時間間隔を計時するステップと、
当該時間間隔を第１の時間間隔として記憶するステップと、
前記第２の設定時間を前記タイマに設定してから、前記第２のプログラムから次の設定時間が通知されるまでの時間間隔を計時するステップと、
当該時間間隔を第２の時間間隔として記憶するステップとを備え、
前記第１の時間間隔と前記第２の時間間隔とを比較するステップと、
前記第１の時間間隔と前記第２の時間間隔とが等しい場合に、連続して等しい時間間隔が得られた回数、又は、前記第１のプログラムが通知された前記第１の設定時間と前記第２の設定時間とが等しい場合に、連続して等しい設定時間が得られた回数の少なくとも一方に基づいて、前記中央演算装置をリセットするステップとを備えたことを特徴とする請求項１に記載のマイクロプログラム暴走検出方法。
【請求項６】
前記第１のプログラムは、ウォッチドッグタイマドライバであって、前記第２のプログラムは、アプリケーションプログラムでなる請求項１乃至５のいずれか１項に記載のマイクロプログラム暴走検出方法。
【請求項７】
前記第２の設定時間は、前記第１の設定時間と異なることを特徴とする請求項１乃至６のいずれか１項に記載のマイクロプログラム暴走検出方法。
【請求項８】
プログラムを実行する中央演算装置と、設定された計時時間を計時するタイマとを有するマイクロプログラム暴走検出システムにおいて、
前記プログラムとして、前記タイマを制御管理する第１のプログラムと、前記第１のプログラムに時間に関する制御情報を送信する第２のプログラムとを用意し、
前記中央演算装置により前記プログラムが実行されるときに、
前記第２のプログラムが、前記時間に関する制御情報を第１の設定時間として、前記第１のプログラムへ通知する手順と、
前記第１のプログラムが、前記第１の設定時間を取得すると、当該第１の設定時間を前記タイマに設定する手順と、
前記第２のプログラムが、前記第１の設定時間を通知してから当該第１の設定時間が経過する前に、第２の設定時間を前記第１のプログラムへ通知する手順と、
前記第１のプログラムが、前記第２の設定時間を取得すると、当該第２の設定時間を前記タイマに設定する手順と、
前記第１のプログラムが、前記第１の設定時間と前記第２の設定時間との通知状況に基づいて、前記中央演算装置をリセットする手順とを前記中央演算装置に実行させることを特徴とするマイクロプログラム暴走検出プログラム。
【請求項９】
前記中央演算装置をリセットする手順は、前記第１の設定時間が経過する前に前記第２の設定時間が設定されない場合に、前記タイマの割り込み信号をトリガとして前記中央演算装置をリセットする手順を備えたことを特徴とする請求項８に記載のマイクロプログラム暴走検出プログラム。
【請求項１０】
前記中央演算装置をリセットする手順は、前記第１のプログラムが前記第１の設定時間を前記タイマに設定してから、前記第２のプログラムから前記第２の設定時間が通知されるまでの時間間隔を計時する手順と、
当該時間間隔を第１の時間間隔として記憶する手順と、
前記第２の設定時間を前記タイマに設定してから、前記第２のプログラムから次の設定時間が通知されるまでの時間間隔を計時する手順と、
当該時間間隔を第２の時間間隔として記憶する手順とを備え、
前記第１の時間間隔と前記第２の時間間隔とを比較する手順と、
前記第１の時間間隔と前記第２の時間間隔とが等しい場合に、連続して等しい時間間隔が得られた回数に基づいて、前記中央演算装置をリセットする手順とを備えたことを特徴とする請求項８に記載のマイクロプログラム暴走検出プログラム。
【請求項１１】
前記中央演算装置をリセットする手順は、前記第１のプログラムが通知された前記第１の設定時間と前記第２の設定時間とが等しい場合に、連続して等しい設定時間が得られた回数に基づいて、前記中央演算装置をリセットする手順を備えたことを特徴とする請求項８に記載のマイクロプログラム暴走検出プログラム。
【請求項１２】
前記中央演算装置をリセットする手順は、前記第１のプログラムが前記第１の設定時間を前記タイマに設定してから、前記第２のプログラムから前記第２の設定時間が通知されるまでの時間間隔を計時する手順と、
当該時間間隔を第１の時間間隔として記憶する手順と、
前記第２の設定時間を前記タイマに設定してから、前記第２のプログラムから次の設定時間が通知されるまでの時間間隔を計時する手順と、
当該時間間隔を第２の時間間隔として記憶する手順とを備え、
前記第１の時間間隔と前記第２の時間間隔とを比較する手順と、
前記第１の時間間隔と前記第２の時間間隔とが等しい場合に、連続して等しい時間間隔が得られた回数、又は、前記第１のプログラムが通知された前記第１の設定時間と前記第２の設定時間とが等しい場合に、連続して等しい設定時間が得られた回数の少なくとも一方に基づいて、前記中央演算装置をリセットする手順とを備えたことを特徴とする請求項８に記載のマイクロプログラム暴走検出プログラム。
【請求項１３】
前記第１のプログラムは、ウォッチドッグタイマドライバであって、前記第２のプログラムは、アプリケーションプログラムでなる請求項８乃至１２のいずれか１項に記載のマイクロプログラム暴走検出プログラム。
【請求項１４】
前記第２の設定時間は、前記第１の設定時間と異なることを特徴とする請求項８乃至１３のいずれか１項に記載のマイクロプログラム暴走検出プログラム。
【請求項１５】
プログラムを実行する中央演算装置と、設定された計時時間を計時するタイマとを有するマイクロプログラム暴走検出システムにおいて、
前記プログラムとして、前記タイマを制御管理する第１のプログラムと、前記第１のプログラムに時間に関する制御情報を送信する第２のプログラムとを用意し、
前記第１のプログラムが、前記第１の設定時間を取得すると、当該第１の設定時間を前記タイマに設定する手段と、
前記第２の設定時間を取得すると、当該第２の設定時間を前記タイマに設定する手段と、
前記第１の設定時間と前記第２の設定時間との通知状況に基づいて、前記中央演算装置をリセットする手段とを備え、
前記第２のプログラムが、前記時間に関する制御情報を第１の設定時間として前記第１のプログラムへ通知する手段と、
前記第１の設定時間を通知してから当該第１の設定時間が経過する前に、第２の設定時間を前記第１のプログラムへ通知する手段と
を備えたことを特徴とするマイクロプログラム暴走検出システム。
【請求項１６】
タイマを制御管理するウォッチドッグタイマドライバにおいて、
前記タイマに設定する設定時間を取得すると、取得した順番に前記タイマに前記設定時間を設定する手段と、
前記設定時間と、取得した順番により隣接する設定時間との設定状況に基づいて、前記タイマの割り込み信号を通知することを特徴とするウォッチドッグタイマドライバ。
【請求項１７】
ウォッチドッグタイマドライバに時間に関する制御情報を順番に送信するアプリケーションプログラムにおいて、
前記時間に関する制御情報を設定時間として、順番に前記設定時間を前記ウォッチドッグタイマドライバへ通知する手段、
を備えたことを特徴とするアプリケーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピューターシステムの自動障害検出方法に関し、特に自動復旧可能なシステムに関するものである。
【背景技術】
【０００２】
従来から、マイクロコンピュータで制御されている装置のプログラム暴走検出方法として、ウォッチドッグタイマと呼ばれる方式が一般的に使用されている。
【０００３】
この方式は、常に時間カウントを行うタイマ（インターバルタイマ）をプログラムの中で頻繁にリセット（クリア）することにより、通常のプログラム動作ではタイマオーバーフローを発生させないように制御する。
【０００４】
一方、プログラムが暴走状態になると、タイマリセットのルーチンが実行されなくなるのでタイマオーバーフローが発生して暴走が検出され、プログラムを正常に戻す処理を実行する。図９に一般的なウォッチドッグタイマの構成例を示す。
【０００５】
この図９に示すウォッチドッグタイマは、カウントクロックが入力されており、インターバルタイマクリア命令が所定時間までに入力されなければ、リセット信号又は割り込み信号を出力するようになっている。
【０００６】
図１０は、図９に示すウォッチドッグタイマの動作を、動作概念図によって示したものである。
【０００７】
ここで、図１０を用いて一般的なウォッチドッグタイマの動作について説明すると、ウォッチドッグタイマは、アプリケーションプログラムから送付される所定の規定値を専用のハードウェアレジスタにライト（書き込み動作）する。
【０００８】
そして、アプリケーションプログラムは、所定の時間［Ｘ］（秒）以内に、再びウォッチドッグタイマ専用ハードウェアレジスタに所定の規定値をライトするようになっている。
【０００９】
従って、アプリケーションプログラムが、何かしらの障害によって所定の時間［Ｘ］内にウォッチドッグタイマへアクセスすることができない場合には、ウォッチドッグタイマは規定値をライトすることができない。
【００１０】
この場合、ウォッチドッグタイマは、リセット信号又は割り込み命令を生成して、ハードウェアで構成されたウォッチドッグタイマが、制御を司るＣＰＵをリセットするようになっている。
【００１１】
このように図１０のウォッチドッグタイマの動作では、カウント動作が所定時間［Ｘ］に達してもウォッチドッグタイマに規定値がライトされない場合には、図９のインターバルタイマクリア命令が入力されず、アプリケーションプログラムが暴走状態であると判断されて、タイマオーバーフローとしてリセット信号を出力する。
【００１２】
このようなウォッチドッグタイマとして、特開平３−２９２５４５号公報に記載されたものや特許第３１４５９３７号公報に記載されたものがある。
【特許文献１】特開平３−２９２５４５号公報
【特許文献２】特許第３１４５９３７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
この特開平３−２９２５４５号公報によれば、プログラム実行中に上位アドレスが規定時間以上変わらない場合に無限ループの暴走と判断する方式が開示されている。
【００１４】
しかしながら、特許文献１に記載された方式では、例えば次のような条件で無限ループが発生したときに、その検出ができない。
【００１５】
例として、プログラムカウンタが１６ビットで、上位４ビットを暴走検出用として比較する場合を以下に考察する。
【００１６】
（例１）アドレスが、７Ｆ＊＊Ｈと８１＊＊Ｈの間で暴走した場合。すなわち、上位アドレスが変わる境界を挟んで無限ループとなった場合。
【００１７】
（例２）アドレスが３＊＊＊Ｈで暴走したが、その中で、アドレスが９＊＊＊Ｈにあるサブルーチンをコールしている場合。
【００１８】
このような事例は、非常によく起こることであり、上記の公開公報の検出方式は不十分であると言える。
【００１９】
つまり、通常、マイクロコンピュータのプログラムが暴走しているときは、プログラムの同じ部分を繰り返し実行している場合が多い。その繰り返し実行の中に、タイマリセットのルーチンが含まれていなければ、上述の方式（ウォッチドッグタイマ方式）は有効である。
【００２０】
しかしながら、上述の方式では、プログラムが暴走しているときに、繰り返し実行の中にタイマリセットのルーチンを含んでいた場合にはタイマオーバーフローが発生せず、すなわち、ウォッチドッグタイマが働かずに、プログラムを正常な処理に戻せないという問題点がある。
【００２１】
この問題点に関し、特許第３１４５９３７号公報によれば、タイマリセットのルーチンを含む処理を実行する状態で暴走した場合を考慮して、上記プログラムの同一アドレスを、同一時間間隔で所定回数繰り返し実行したことを検出して、暴走検出を行う方式が記載されている。
【００２２】
この方式によると、ウォッチドッグタイマ方式の上記の問題点は概ね解消できるが、ハードウェア仕様の変更による開発コスト、製造コストの増加、及び回路規模の増加が発生するという問題がある。
【００２３】
また特許第３１４５９３７号公報は、マイクロコンピュータで実行されるプログラムのアドレスカウンタのみを監視している。従って、アドレスカウンタの変化に応じた時間によって、アプリケーションプログラムの暴走を検出することしかできないという問題がある。
【００２４】
本発明は、上記課題に鑑みてなされたものであり、アプリケーションプログラムがウォッチドッグタイマに第１の設定時間と、第２の設定時間とを通知し、ウォッチドッグタイマが通知された設定時間をタイマに設定し、当該設定時間内で再スタートを行うことにより、ウォッチドッグタイマの機能をソフトウェアで拡張して暴走検出精度を上げ、システムの障害検出率を上げることができるマイクロプログラム暴走検出方法、マイクロプログラム暴走検出プログラム、及びマイクロプログラム暴走検出システムを提供することを目的とする。
【００２５】
また本発明は、ウォッチドッグタイマ専用機能のハードウェアを持たないシステムにおいて、ハードウェア汎用タイマとソフトウェア機能によってウォッチドッグタイマを低コストで実現できるマイクロプログラム暴走検出方法、マイクロプログラム暴走検出プログラム、及びマイクロプログラム暴走検出システムを提供することを目的とする。
【課題を解決するための手段】
【００２６】
本発明に係るマイクロコンピュータの暴走検出方法は、プログラムを実行する中央演算装置と、設定された計時時間を計時するタイマとを有するマイクロプログラム暴走検出システムにおいて、前記プログラムとして、前記タイマを制御管理する第１のプログラムと、前記第１のプログラムに時間に関する制御情報を送信する第２のプログラムとを用意し、前記中央演算装置により前記プログラムが実行されるときに、前記第２のプログラムが、前記時間に関する制御情報を第１の設定時間として、前記第１のプログラムへ通知するステップと、前記第１のプログラムが、前記第１の設定時間を取得すると、当該第１の設定時間を前記タイマに設定するステップと、前記第２のプログラムが、前記第１の設定時間を通知してから当該第１の設定時間が経過する前に、第２の設定時間を前記第１のプログラムへ通知するステップと、前記第１のプログラムが、前記第２の設定時間を取得すると、当該第２の設定時間を前記タイマに設定するステップと、前記第１のプログラムが、前記第１の設定時間と前記第２の設定時間との通知状況に基づいて、前記中央演算装置をリセットするステップとを前記中央演算装置に実行させることを特徴とする。
【００２７】
また本発明に係るマイクロコンピュータの暴走検出方法は、前記中央演算装置をリセットするステップは、前記第１の設定時間が経過する前に前記第２の設定時間が設定されない場合に、前記タイマの割り込み信号をトリガとして前記中央演算装置をリセットするステップを備えるようにしても良い。
【００２８】
また本発明に係るマイクロコンピュータの暴走検出方法は、前記中央演算装置をリセットするステップは、前記第１のプログラムが前記第１の設定時間を前記タイマに設定してから、前記第２のプログラムから前記第２の設定時間が通知されるまでの時間間隔を計時するステップと、当該時間間隔を第１の時間間隔として記憶するステップと、前記第２の設定時間を前記タイマに設定してから、前記第２のプログラムから次の設定時間が通知されるまでの時間間隔を計時するステップと、当該時間間隔を第２の時間間隔として記憶するステップとを備え、前記第１の時間間隔と前記第２の時間間隔とを比較するステップと、前記第１の時間間隔と前記第２の時間間隔とが等しい場合に、連続して等しい時間間隔が得られた回数に基づいて、前記中央演算装置をリセットするステップとを備えるようにしても良い。
【００２９】
また本発明に係るマイクロコンピュータの暴走検出方法は、前記中央演算装置をリセットするステップは、前記第１のプログラムが通知された前記第１の設定時間と前記第２の設定時間とが等しい場合に、連続して等しい設定時間が得られた回数に基づいて、前記中央演算装置をリセットするステップを備えるようにしても良い。
【００３０】
また本発明に係るマイクロコンピュータの暴走検出方法は、前記中央演算装置をリセットするステップは、前記第１のプログラムが前記第１の設定時間を前記タイマに設定してから、前記第２のプログラムから前記第２の設定時間が通知されるまでの時間間隔を計時するステップと、当該時間間隔を第１の時間間隔として記憶するステップと、前記第２の設定時間を前記タイマに設定してから、前記第２のプログラムから次の設定時間が通知されるまでの時間間隔を計時するステップと、当該時間間隔を第２の時間間隔として記憶するステップとを備え、前記第１の時間間隔と前記第２の時間間隔とを比較するステップと、前記第１の時間間隔と前記第２の時間間隔とが等しい場合に、連続して等しい時間間隔が得られた回数、又は、前記第１のプログラムが通知された前記第１の設定時間と前記第２の設定時間とが等しい場合に、連続して等しい設定時間が得られた回数の少なくとも一方に基づいて、前記中央演算装置をリセットするステップとを備えるようにしても良い。
【００３１】
また本発明に係るマイクロコンピュータの暴走検出方法は、前記第１のプログラムが、ウォッチドッグタイマドライバであって、前記第２のプログラムは、アプリケーションプログラムであっても良い。
【００３２】
また本発明に係るマイクロコンピュータの暴走検出方法は、前記第２の設定時間は、前記第１の設定時間と異なるようにしても良い。
【００３３】
本発明に係るマイクロコンピュータの暴走検出プログラムは、プログラムを実行する中央演算装置と、設定された計時時間を計時するタイマとを有するマイクロプログラム暴走検出システムにおいて、前記プログラムとして、前記タイマを制御管理する第１のプログラムと、前記第１のプログラムに時間に関する制御情報を送信する第２のプログラムとを用意し、前記中央演算装置により前記プログラムが実行されるときに、前記第２のプログラムが、前記時間に関する制御情報を第１の設定時間として、前記第１のプログラムへ通知する手順と、前記第１のプログラムが、前記第１の設定時間を取得すると、当該第１の設定時間を前記タイマに設定する手順と、前記第２のプログラムが、前記第１の設定時間を通知してから当該第１の設定時間が経過する前に、第２の設定時間を前記第１のプログラムへ通知する手順と、前記第１のプログラムが、前記第２の設定時間を取得すると、当該第２の設定時間を前記タイマに設定する手順と、前記第１のプログラムが、前記第１の設定時間と前記第２の設定時間との通知状況に基づいて、前記中央演算装置をリセットする手順とを前記中央演算装置に実行させることを特徴とする。
【００３４】
また本発明に係るマイクロコンピュータの暴走検出プログラムは、前記中央演算装置をリセットする手順は、前記第１の設定時間が経過する前に前記第２の設定時間が設定されない場合に、前記タイマの割り込み信号をトリガとして前記中央演算装置をリセットする手順を備えるようにしても良い。
【００３５】
また本発明に係るマイクロコンピュータの暴走検出プログラムは、前記中央演算装置をリセットする手順は、前記第１のプログラムが前記第１の設定時間を前記タイマに設定してから、前記第２のプログラムから前記第２の設定時間が通知されるまでの時間間隔を計時する手順と、当該時間間隔を第１の時間間隔として記憶する手順と、前記第２の設定時間を前記タイマに設定してから、前記第２のプログラムから次の設定時間が通知されるまでの時間間隔を計時する手順と、当該時間間隔を第２の時間間隔として記憶する手順とを備え、前記第１の時間間隔と前記第２の時間間隔とを比較する手順と、前記第１の時間間隔と前記第２の時間間隔とが等しい場合に、連続して等しい時間間隔が得られた回数に基づいて、前記中央演算装置をリセットする手順とを備えるようにしても良い。
【００３６】
また本発明に係るマイクロコンピュータの暴走検出プログラムは、前記中央演算装置をリセットする手順は、前記第１のプログラムが通知された前記第１の設定時間と前記第２の設定時間とが等しい場合に、連続して等しい設定時間が得られた回数に基づいて、前記中央演算装置をリセットする手順を備えるようにしても良い。
【００３７】
また本発明に係るマイクロコンピュータの暴走検出プログラムは、前記中央演算装置をリセットする手順は、前記第１のプログラムが前記第１の設定時間を前記タイマに設定してから、前記第２のプログラムから前記第２の設定時間が通知されるまでの時間間隔を計時する手順と、当該時間間隔を第１の時間間隔として記憶する手順と、前記第２の設定時間を前記タイマに設定してから、前記第２のプログラムから次の設定時間が通知されるまでの時間間隔を計時する手順と、当該時間間隔を第２の時間間隔として記憶する手順とを備え、前記第１の時間間隔と前記第２の時間間隔とを比較する手順と、前記第１の時間間隔と前記第２の時間間隔とが等しい場合に、連続して等しい時間間隔が得られた回数、又は、前記第１のプログラムが通知された前記第１の設定時間と前記第２の設定時間とが等しい場合に、連続して等しい設定時間が得られた回数の少なくとも一方に基づいて、前記中央演算装置をリセットする手順とを備えるようにしても良い。
【００３８】
また本発明に係るマイクロコンピュータの暴走検出プログラムは、前記第１のプログラムは、ウォッチドッグタイマドライバであって、前記第２のプログラムは、アプリケーションプログラムであっても良い。
【００３９】
また本発明に係るマイクロコンピュータの暴走検出プログラムは、前記第２の設定時間は、前記第１の設定時間と異なるようにしても良い。
【００４０】
本発明に係るマイクロコンピュータの暴走検出システムは、プログラムを実行する中央演算装置と、設定された計時時間を計時するタイマとを有するマイクロプログラム暴走検出システムにおいて、前記プログラムとして、前記タイマを制御管理する第１のプログラムと、前記第１のプログラムに時間に関する制御情報を送信する第２のプログラムとを用意し、前記第１のプログラムは、前記第１の設定時間を取得すると、当該第１の設定時間を前記タイマに設定する手段と、前記第２の設定時間を取得すると、当該第２の設定時間を前記タイマに設定する手段と、前記第１の設定時間と前記第２の設定時間との通知状況に基づいて、前記中央演算装置をリセットする手段とを備え、前記第２のプログラムは、前記時間に関する制御情報を第１の設定時間として前記第１のプログラムへ通知する手段と、前記第１の設定時間を通知してから当該第１の設定時間が経過する前に、第２の設定時間を前記第１のプログラムへ通知する手段とを備えたことを特徴とする。
【００４１】
本発明に係るマイクロコンピュータのウォッチドッグタイマは、タイマを制御管理するウォッチドッグタイマドライバにおいて、前記タイマに設定する設定時間を取得すると、取得した順番に前記タイマに前記設定時間を設定する手段と、前記設定時間と、取得した順番により隣接する設定時間との設定状況に基づいて、前記タイマの割り込み信号を通知することを特徴とする。
【００４２】
本発明に係るマイクロコンピュータのアプリケーションプログラムは、ウォッチドッグタイマドライバに時間に関する制御情報を順番に送信するアプリケーションプログラムにおいて、前記時間に関する制御情報を設定時間として、順番に前記設定時間を前記ウォッチドッグタイマドライバへ通知する手段を備えたことを特徴とする。
【００４３】
本発明は、タイマを制御管理するウォッチドッグタイマドライバと、ウォッチドッグタイマドライバに制御情報を送付するアプリケーションプログラムとを備える。
【００４４】
ウォッチドッグタイマドライバはアプリケーションプログラムから送付される情報をトリガとしてタイマをリセットし、再起動する機能に加えて、アプリケーションプログラムから情報を受ける時間間隔を管理する機能と、情報を記憶して前回に受け取った情報とを比較する機能を持つ。
【００４５】
アプリケーションプログラムは、ウォッチドッグタイマドライバに送付する情報を固定せず、毎回異なる情報を送付する機能を持つ。このような構成を採用し、アプリケーションプログラムから情報を受ける時間間隔と情報内容がある一定回数固定した場合に、プログラムの暴走と判断してシステムのリセットをすることにより本発明の目的を達成することができる。
【発明の効果】
【００４６】
本発明によれば、第１の効果は、マイクロコンピュータのプログラムが同じ箇所を繰り返し実行している暴走状態となった場合に、その実行箇所にかかわらず、暴走状態を認識し、プログラムを正常な処理に戻すことができる極めて有用な暴走検出方式を提供することができる。
【００４７】
第２の効果は、従来技術であるウォッチドッグタイマ機能と併用することにより、暴走検出の確実性を増すことも可能であり、より安全性の高いシステムを実現することができる。
【００４８】
第３の効果は、ハードウェアの改造なしにソフトウェアの変更だけで実現できるため、開発コストと製造コストを低く抑えることができる。
【発明を実施するための最良の形態】
【００４９】
次に、発明を実施するための最良の形態について図面を参照して詳細に説明する。
（第１の実施の形態）
図１は、本発明の実施の形態を表すマイクロプログラム暴走検出方法を用いたマイクロプログラム暴走検出システムを示したものである。
【００５０】
図１に示すマイクロプログラム暴走検出システムは、ハードウェア部とソフトウェア部とから構成されている。
【００５１】
ハードウェア部の構成としては、ＣＰＵ（Central Processing Unit）１と、ＣＰＵ１に内蔵された汎用タイマ（Timer）２とから構成されている。なお汎用タイマ２は、本実施の形態では内蔵されているが、ＣＰＵ１の外部に存在する構成も可能である。
【００５２】
ソフトウェア部の構成としては、ウォッチドッグタイマドライバ（Watch dog Timer Driver）（以下、これを図中においてＷＤＴと記載することがある。）３と、アプリケーションプログラム（Application Program）（以下、これを図中においてＡＰと記載することがある。）４とから構成されている。ウォッチドッグタイマドライバ３は、カウンタ（Counter）５を持ち、ある条件を満たしたときにカウンタ５を加算するようになっている。
【００５３】
カウンタ５は、繰り返しカウンタ（図示せず）などの種々のカウンタを構成している。
【００５４】
ここで、ウォッチドッグタイマドライバ３は、任意の記憶デバイスに設けるようにしても良く、また、ＯＳ（Operating System）を構成する各種ドライバ（Driver）の一部として組み込まれていても良い。
（第１の実施例）
アプリケーションプログラム４は、ウォッチドッグタイマドライバ３に情報を送ることにより、ウォッチドッグタイマドライバ３を制御する。
【００５５】
ウォッチドッグタイマドライバ３は、ＣＰＵ１の汎用タイマ２の制御とアプリケーションプログラム４から受け取る情報の管理を行い、プログラムの暴走と判断する条件を満たした場合に、ＣＰＵ１のリセットを行うようになっている。
【００５６】
次に、本実施の形態の全体の動作について詳細に説明する。
【００５７】
図２、図３、及び図４は第１の実施例であり、図２は通常動作を動作概念図で表し、図３はプログラム暴走検出時の動作を動作概念図で表し、図４はこれらの動作をフローチャートで表したものである。
【００５８】
ここで、図４のフローチャートを用いて、図２の通常動作と図３のプログラム暴走検出時の動作を説明する。
【００５９】
通常動作（図２参照）として、図４のステップＳ０１では、アプリケーションプログラム４が、ウォッチドッグタイマドライバ３に、汎用タイマ２のタイマの設定時間である時間［Ａ］を通知する。
【００６０】
ステップＳ０２では、ウォッチドッグタイマドライバ３は、ＣＰＵ１の汎用タイマ２に対し、タイマの設定時間[Ａ]をセットし、タイマをスタートする。
【００６１】
ステップＳ０３では、アプリケーションプログラム４が、最初にタイマの設定時間［Ａ］を通知した時点から時間[Ａ]が経過するまでに、次の設定時間である時間[Ｂ]をウォッチドッグタイマドライバ３に通知したか否かを判断する。
【００６２】
ここで、次の設定時間である時間［Ｂ］が通知された場合には、ステップＳ０１に戻り、ウォッチドッグタイマドライバ３は、汎用タイマ２に時間[Ｂ]をセットして、タイマをスタートする。
【００６３】
以後の通常動作として、アプリケーションプログラム４は、ウォッチドッグタイマドライバ３に通知した設定時間が経過する前に、次の設定時間をウォッチドッグタイマドライバ３に通知することを繰り返す。
【００６４】
ウォッチドッグタイマドライバ３は、アプリケーションプログラム４から受け取った設定時間を汎用タイマ２に設定して、タイマのリスタートを繰り返す。
【００６５】
これにより、通常動作を行っている場合には、図４のステップＳ０１からステップＳ０３を繰り返し実行するようになっている。
【００６６】
一方、ステップＳ０３において、次の設定時間である時間［Ｂ］が通知されなかった場合には、このことはプログラムが暴走したと判断され、ステップＳ０４へ移動する。
【００６７】
次に、プログラム暴走検出時の動作を説明する（図３参照）。
【００６８】
プログラム暴走検出時の動作の前提として、ステップＳ０１（図４参照）では、アプリケーションプログラム４が、ウォッチドッグタイマドライバ３に時間[Ｃ]を通知する。
【００６９】
通常動作時と同様に、ステップＳ０２では、ウォッチドッグタイマドライバ３が、汎用タイマ２に時間[Ｃ]をセットして、タイマをスタートする。
【００７０】
ステップＳ０３では、アプリケーションプログラム４が、タイマの設定時間として通知した時点から時間[Ｃ]が経過するまでに、次の設定時間をウォッチドッグタイマドライバ３に通知したか否かを判断する。
【００７１】
ここで時間［Ｃ］が経過しても次の設定時間が通知されなかった場合には、このことはアプリケーションプログラム４の障害によってアプリケーションプログラム４からウォッチドッグタイマドライバ３に設定時間の通知が実施されていないことを意味しており、ウォッチドッグタイマドライバ３は、汎用タイマ２対してセットとリスタートを行うことができない。
【００７２】
この場合、ステップＳ０４では、時間[Ｃ]が経過した時点で、汎用タイマ２からＣＰＵ１へタイマ割り込みが発生し、ウォッチドッグタイマドライバ３の有するマイクロプログラム（図示せず）によってＣＰＵ１にタイマ割り込み処理に移行する。
【００７３】
ステップＳ０５では、マイクロプログラム（図示せず）のタイマ割り込み処理によって、ＣＰＵ１のＨＷ（Hard Ware）リセットを実施するようになっている。
【００７４】
このように、第１の実施例では、第１の効果として、マイクロコンピュータのプログラムが同じ箇所を繰り返し実行している暴走状態となった場合には、その実行箇所にかかわらず、設定時間の通知によって暴走状態を認識し、プログラムを正常な処理に戻すことができるので、極めて有用な暴走検出方式を提供することが可能となるものである。
【００７５】
第２の効果は、従来技術からあるウォッチドッグタイマ機能と併用することも可能であり、暴走検出の確実性を増すことも可能であり、より安全性の高いシステムを実現することができる。
【００７６】
第３の効果は、ハードウェアの改造なしにソフトウェアの変更だけで実現できるため、開発コストと製造コストを低く抑えられることにある。
（第２の実施例）
次に、第２の実施例として第１の実施例と同一の構成であり、動作が異なる実施例について説明する。
【００７７】
第２の実施例では、図５及び図６の動作の動作概念図と、図７のフローチャートによって動作を示している。
【００７８】
ここで、図７のフローチャートを用いて、図５の通常動作と図６のプログラム暴走検出時の動作を説明する。特に、ウォッチドッグタイマドライバ３が有するマイクロプログラム（図示せず）に無限ループが発生した際、ループ内にウォッチドッグタイマドライバ３への時間通知処理を含んでいる場合である。
【００７９】
まずステップＳ１０では、アプリケーションプログラム４は、ウォッチドッグタイマ３に、汎用タイマ２のタイマの設定時間を通知する。
【００８０】
ステップＳ１１では、ウォッチドッグタイマドライバ３は、第１の実施例と同様に汎用タイマ２にタイマの設定時間をセットし、タイマをスタートする。
【００８１】
ステップＳ１２では、アプリケーションプログラム４は、ウォッチドッグタイマドライバ３に通知した設定時間が経過する前に、次の設定時間をウォッチドッグタイマドライバ３に通知する。従って、ここまでは第１の実施例と共通する。
【００８２】
ステップＳ１３では、ウォッチドッグタイマドライバ３は、次の設定時間が通知されると、先に通知された１回目の設定時間から次の２回目に設定時間が通知されるまでの経過時間を測定し、その経過時間の時間間隔[Ｐ]を記憶するようになっている。
【００８３】
つまり第２の実施例では、設定時間を通知する点では第１の実施例と共通するが、次の設定時間が通知されるまでの経過時間を監視するようになっている点が異なっている。
【００８４】
ステップＳ１４では、ウォッチドッグタイマドライバ３は、ステップＳ１３で通知された設定時間を汎用タイマ２にセットし、タイマをスタートする。
【００８５】
ステップＳ１５では、アプリケーションプログラム４は、ウォッチドッグタイマドライバ３に通知した設定時間が経過する前に、次の設定時間をウォッチドッグタイマドライバ３に通知する。
【００８６】
ステップＳ１６では、ウォッチドッグタイマドライバ３は、次の設定時間が通知されると、先に通知された設定時間から、今、設定時間が通知された経過時間を測定し、上述の最後に記憶した時間間隔[Ｐ]（すなわち前回の経過時間）と、今回測定した時間間隔（すなわち今回の経過時間）とを比較して判断を行うようになっている。
【００８７】
ここで、最後に記憶した時間間隔[Ｐ]（すなわち前回の経過時間）と、アプリケーションプログラム４からウォッチドッグタイマドライバ３に通知された設定時間の時間間隔［Ｐ］（すなわち今回の経過時間）とが等しい場合には、ステップＳ１７へ移動し、ウォッチドッグタイマドライバ３のカウンタ５から構成される繰り返しカウンタ（図示せず）を１だけ加算した後、ステップＳ１８へ移動する。
【００８８】
ただし、繰り返しカウンタ（図示せず）は、システム起動時にゼロクリアされているものとする。
【００８９】
一方、ステップＳ１６において、アプリケーションプログラム４からウォッチドッグタイマドライバ３に通知された設定時間の時間間隔が等しくない場合には、ステップＳ２０へ移動して、繰り返しカウンタ（図示せず）をゼロクリアすると共に、ステップＳ２１へ移動し、新たに時間間隔[Ｑ]を記憶する。
【００９０】
そしてステップＳ１４へ戻り、上記のステップを繰り返すようになっている。
【００９１】
このようにウォッチドッグタイマドライバ３は、最後に記憶した時間間隔（すなわち前回の経過時間）と最後に測定した時間間隔（すなわち今回の経過時間）とを比較し、等しい場合は繰り返しカウンタ（図示せず）を１だけ加算し、等しくなかった場合は繰り返しカウンタをゼロクリアして、新たに時間間隔を記憶するようになっている。
【００９２】
次にステップＳ１８では、ステップＳ１７において加算した繰り返しカウンタ（図示せず）が、規定のＮ（規定値）に達したか否かを判断する。
【００９３】
図６では、アプリケーションプログラム４からウォッチドッグタイマドライバ３へ通知された設定時間の時間間隔は［Ｒ］である。この時間間隔［Ｒ］となった場合の動作が、経過時間の時間間隔が全て等しい場合の繰り返しであることを示している。
【００９４】
つまりステップＳ１８では、繰り返しカウンタ（図示せず）を加算するときは、いつも規定のＮ（規定値）と比較することにより、ＣＰＵ１が暴走したか否かの判断を行っている。
【００９５】
従って、繰り返しカウンタ（図示せず）が規定値のＮ（規定値）に達した場合には、ステップＳ１９へ移動し、ＣＰＵ１のＨＷリセットを実施する。
【００９６】
一方、繰り返しカウンタ（図示せず）が規定の値Ｎ（規定値）に達しなかった場合には、ステップＳ１４へ戻り、上記ステップを実行するようになっている。
【００９７】
ここで、規定値のＮ（規定値）は、ＣＰＵ１の暴走が発生していると判断出来うる繰り返し回数となっている。
【００９８】
また、このＣＰＵ１の暴走を判断するための条件は、正常動作におけるアプリケーションプログラム４の動作として、ウォッチドッグタイマ３への時間通知間隔が毎回異なることである。この条件は、マルチタスクＯＳ上で動作するアプリケーションならば、一般的に満たされる。
【００９９】
なお、ウォッチドッグタイマドライバ３が最後に記憶した時間間隔と、最後に測定した時間間隔とを比較する際には、厳密な比較ではなく±数パーセントの誤差も許容出来るとする。
【０１００】
その理由は、マイクロプログラムの無限ループが発生した際に、ＣＰＵ１のパイプライン処理の動作如何によっては、ループ１回の時間が厳密に同じになるとは限らないからであり、その誤差は統計的に算出することができる。
【０１０１】
また誤差による許容範囲を設けることにより、時間間隔（経過時間）の繰り返しカウンタ（図示せず）に不要な加算を回避することができるので、暴走を検出する精度が向上し、厳密に暴走を判断してリセットした場合よりも、ＣＰＵ１を適切にリセットすることができ、システム全体の安定性を向上することができる。
（第３の実施例）
図８には、第３の実施例を示している。
【０１０２】
図８では、アプリケーションプログラム４の通常動作から、プログラム暴走検出時の動作を表している。特に、ウォッチドッグタイマドライバ３に設けられたマイクロプログラムに無限ループが発生した際、ループ内にウォッチドッグタイマドライバ３自身への時間通知処理を含んでいる場合である。
【０１０３】
図７のフローチャートで説明した図５及び図６の第２の実施例との違いは、ウォッチドッグタイマドライバ３がマイクロプログラムの暴走と判断する条件が、アプリケーションプログラム４からの設定時間の通知間隔（時間間隔）ではなく、設定時間の情報そのものとなっていることである。
【０１０４】
すなわち、第１の実施例における通知された設定時間が、同じ設定時間である場合の通知回数をカウントし、規定のＭ（規定値）に達した場合は、ＣＰＵ１のＨＷリセットを実施する。
【０１０５】
図８では、アプリケーションプログラム４からウォッチドッグタイマドライバ３への通知する設定時間は、設定時間［Ａ］から設定時間［Ｂ］に変更されている。また、図８に示すように、この設定時間［Ｂ］が設定されてから継続して時間［Ｂ］が通知されている。
【０１０６】
従って、第３の実施例では、図８で示す繰り返しカウンタが１を加算することにより、規定のＭ（規定値）に達したか否かで判断するようになっている。
【０１０７】
図８の動作の前提となる条件は、正常動作におけるアプリケーションプログラム４側の動作として、ウォッチドッグタイマドライバ３への設定時間の通知内容が毎回異なることである。
【０１０８】
この条件は、マルチタスクＯＳ上で動作するアプリケーションにおいて、２つ以上の異なるタスクからウォッチドッグタイマドライバ３に時間通知を行い、それぞれのタスクで異なる固定値を通知することで実現することができる。
【０１０９】
このように、ウォッチドッグタイマドライバ３に設けられたマイクロプログラムに無限ループが発生した際、ループ内にウォッチドッグタイマドライバ３自身への時間通知処理を含んでいる場合であっても、適切に暴走を検出することができる。
【０１１０】
また、ウォッチドッグタイマドライバ３が暴走を検出する対象は、マルチタスクＯＳ上で動作するアプリケーションプログラム４に限定されるものではなく、ＣＰＵ１によって実行されると共に、ウォッチドッグタイマドライバ３に設定時間の通知を行うことができ、ウォッチドッグタイマドライバ３が監視できるものであればよい。
【０１１１】
なお、第１から第３の実施例では、マイクロプログラム暴走検出方法を用いたマイクロプログラム暴走検出システムを構成して実行されるようになっていたが、本発明のマイクロプログラム暴走検出方法は、マイクロプログラム暴走検出プログラムをＲＯＭ（Read Only Memory）などのメモリ（Memory）に格納しておくようにしたり、或いは通信インターフェースを介してマイクロプログラム暴走検出プログラムが提供されるようにしても良い。
【図面の簡単な説明】
【０１１２】
【図１】本発明の最良の形態の構成を示すブロック図である。
【図２】本発明の第１の実施例の通常動作を示す動作概念図である。
【図３】本発明の第１の実施例のプログラム暴走検出時の動作を示す動作概念図である。
【図４】本発明の第１の実施例の動作を示すフローチャートである。
【図５】本発明の第２の実施例の通常動作を示す動作概念図である。
【図６】本発明の第２の実施例のプログラム暴走検出時の動作を示す動作概念図である。
【図７】本発明の第２の実施例の動作を示すフローチャートである。
【図８】本発明の第３の実施例の動作を示す動作概念図である。
【図９】一般的なウォッチドッグタイマの構成図である。
【図１０】一般的なウォッチドッグタイマの動作概念図である。
【符号の説明】
【０１１３】
１  ＣＰＵ
２  汎用タイマ
３  ウォッチドッグタイマドライバ
４  アプリケーションプログラム
５  カウンタ
【図１】
2007287096.tif 000003
【図２】
2007287096.tif 000004
【図３】
2007287096.tif 000005
【図４】
2007287096.tif 000006
【図５】
2007287096.tif 000007
【図６】
2007287096.tif 000008
【図７】
2007287096.tif 000009
【図８】
2007287096.tif 000010
【図９】
2007287096.tif 000011
【図１０】
2007287096.tif 000012