説明

マイクロプログラム暴走検出方法、暴走検出プログラム、及びマイクロプログラム暴走検出システム

【課題】ウォッチドッグタイマの機能をソフトウェアで拡張し暴走検出精度を上げることにより、システムの障害検出率を上げることができる方法を提供する。
【解決手段】マイクロプログラム暴走検出方法は、プログラムを実行する中央演算装置とタイマとを有するマイクロプログラム暴走検出システムにおいて、タイマを制御管理する第1のプログラムと第2のプログラムとを用意する。第2のプログラムが第1の設定時間として第1のプログラムへ通知するステップと、第1のプログラムが第1の設定時間をタイマに設定するステップと、第2のプログラムが第1の設定時間を通知してから当該第1の設定時間が経過する前に第2の設定時間を通知するステップと、第1のプログラムが第2の設定時間をタイマに設定するステップと、第1の設定時間と第2の設定時間との通知状況に基づいて、中央演算装置をリセットするステップとを中央演算装置に実行させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピューターシステムの自動障害検出方法に関し、特に自動復旧可能なシステムに関するものである。
【背景技術】
【0002】
従来から、マイクロコンピュータで制御されている装置のプログラム暴走検出方法として、ウォッチドッグタイマと呼ばれる方式が一般的に使用されている。
【0003】
この方式は、常に時間カウントを行うタイマ(インターバルタイマ)をプログラムの中で頻繁にリセット(クリア)することにより、通常のプログラム動作ではタイマオーバーフローを発生させないように制御する。
【0004】
一方、プログラムが暴走状態になると、タイマリセットのルーチンが実行されなくなるのでタイマオーバーフローが発生して暴走が検出され、プログラムを正常に戻す処理を実行する。図9に一般的なウォッチドッグタイマの構成例を示す。
【0005】
この図9に示すウォッチドッグタイマは、カウントクロックが入力されており、インターバルタイマクリア命令が所定時間までに入力されなければ、リセット信号又は割り込み信号を出力するようになっている。
【0006】
図10は、図9に示すウォッチドッグタイマの動作を、動作概念図によって示したものである。
【0007】
ここで、図10を用いて一般的なウォッチドッグタイマの動作について説明すると、ウォッチドッグタイマは、アプリケーションプログラムから送付される所定の規定値を専用のハードウェアレジスタにライト(書き込み動作)する。
【0008】
そして、アプリケーションプログラムは、所定の時間[X](秒)以内に、再びウォッチドッグタイマ専用ハードウェアレジスタに所定の規定値をライトするようになっている。
【0009】
従って、アプリケーションプログラムが、何かしらの障害によって所定の時間[X]内にウォッチドッグタイマへアクセスすることができない場合には、ウォッチドッグタイマは規定値をライトすることができない。
【0010】
この場合、ウォッチドッグタイマは、リセット信号又は割り込み命令を生成して、ハードウェアで構成されたウォッチドッグタイマが、制御を司るCPUをリセットするようになっている。
【0011】
このように図10のウォッチドッグタイマの動作では、カウント動作が所定時間[X]に達してもウォッチドッグタイマに規定値がライトされない場合には、図9のインターバルタイマクリア命令が入力されず、アプリケーションプログラムが暴走状態であると判断されて、タイマオーバーフローとしてリセット信号を出力する。
【0012】
このようなウォッチドッグタイマとして、特開平3−292545号公報に記載されたものや特許第3145937号公報に記載されたものがある。
【特許文献1】特開平3−292545号公報
【特許文献2】特許第3145937号公報
【発明の開示】
【発明が解決しようとする課題】
【0013】
この特開平3−292545号公報によれば、プログラム実行中に上位アドレスが規定時間以上変わらない場合に無限ループの暴走と判断する方式が開示されている。
【0014】
しかしながら、特許文献1に記載された方式では、例えば次のような条件で無限ループが発生したときに、その検出ができない。
【0015】
例として、プログラムカウンタが16ビットで、上位4ビットを暴走検出用として比較する場合を以下に考察する。
【0016】
(例1)アドレスが、7F**Hと81**Hの間で暴走した場合。すなわち、上位アドレスが変わる境界を挟んで無限ループとなった場合。
【0017】
(例2)アドレスが3***Hで暴走したが、その中で、アドレスが9***Hにあるサブルーチンをコールしている場合。
【0018】
このような事例は、非常によく起こることであり、上記の公開公報の検出方式は不十分であると言える。
【0019】
つまり、通常、マイクロコンピュータのプログラムが暴走しているときは、プログラムの同じ部分を繰り返し実行している場合が多い。その繰り返し実行の中に、タイマリセットのルーチンが含まれていなければ、上述の方式(ウォッチドッグタイマ方式)は有効である。
【0020】
しかしながら、上述の方式では、プログラムが暴走しているときに、繰り返し実行の中にタイマリセットのルーチンを含んでいた場合にはタイマオーバーフローが発生せず、すなわち、ウォッチドッグタイマが働かずに、プログラムを正常な処理に戻せないという問題点がある。
【0021】
この問題点に関し、特許第3145937号公報によれば、タイマリセットのルーチンを含む処理を実行する状態で暴走した場合を考慮して、上記プログラムの同一アドレスを、同一時間間隔で所定回数繰り返し実行したことを検出して、暴走検出を行う方式が記載されている。
【0022】
この方式によると、ウォッチドッグタイマ方式の上記の問題点は概ね解消できるが、ハードウェア仕様の変更による開発コスト、製造コストの増加、及び回路規模の増加が発生するという問題がある。
【0023】
また特許第3145937号公報は、マイクロコンピュータで実行されるプログラムのアドレスカウンタのみを監視している。従って、アドレスカウンタの変化に応じた時間によって、アプリケーションプログラムの暴走を検出することしかできないという問題がある。
【0024】
本発明は、上記課題に鑑みてなされたものであり、アプリケーションプログラムがウォッチドッグタイマに第1の設定時間と、第2の設定時間とを通知し、ウォッチドッグタイマが通知された設定時間をタイマに設定し、当該設定時間内で再スタートを行うことにより、ウォッチドッグタイマの機能をソフトウェアで拡張して暴走検出精度を上げ、システムの障害検出率を上げることができるマイクロプログラム暴走検出方法、マイクロプログラム暴走検出プログラム、及びマイクロプログラム暴走検出システムを提供することを目的とする。
【0025】
また本発明は、ウォッチドッグタイマ専用機能のハードウェアを持たないシステムにおいて、ハードウェア汎用タイマとソフトウェア機能によってウォッチドッグタイマを低コストで実現できるマイクロプログラム暴走検出方法、マイクロプログラム暴走検出プログラム、及びマイクロプログラム暴走検出システムを提供することを目的とする。
【課題を解決するための手段】
【0026】
本発明に係るマイクロコンピュータの暴走検出方法は、プログラムを実行する中央演算装置と、設定された計時時間を計時するタイマとを有するマイクロプログラム暴走検出システムにおいて、前記プログラムとして、前記タイマを制御管理する第1のプログラムと、前記第1のプログラムに時間に関する制御情報を送信する第2のプログラムとを用意し、前記中央演算装置により前記プログラムが実行されるときに、前記第2のプログラムが、前記時間に関する制御情報を第1の設定時間として、前記第1のプログラムへ通知するステップと、前記第1のプログラムが、前記第1の設定時間を取得すると、当該第1の設定時間を前記タイマに設定するステップと、前記第2のプログラムが、前記第1の設定時間を通知してから当該第1の設定時間が経過する前に、第2の設定時間を前記第1のプログラムへ通知するステップと、前記第1のプログラムが、前記第2の設定時間を取得すると、当該第2の設定時間を前記タイマに設定するステップと、前記第1のプログラムが、前記第1の設定時間と前記第2の設定時間との通知状況に基づいて、前記中央演算装置をリセットするステップとを前記中央演算装置に実行させることを特徴とする。
【0027】
また本発明に係るマイクロコンピュータの暴走検出方法は、前記中央演算装置をリセットするステップは、前記第1の設定時間が経過する前に前記第2の設定時間が設定されない場合に、前記タイマの割り込み信号をトリガとして前記中央演算装置をリセットするステップを備えるようにしても良い。
【0028】
また本発明に係るマイクロコンピュータの暴走検出方法は、前記中央演算装置をリセットするステップは、前記第1のプログラムが前記第1の設定時間を前記タイマに設定してから、前記第2のプログラムから前記第2の設定時間が通知されるまでの時間間隔を計時するステップと、当該時間間隔を第1の時間間隔として記憶するステップと、前記第2の設定時間を前記タイマに設定してから、前記第2のプログラムから次の設定時間が通知されるまでの時間間隔を計時するステップと、当該時間間隔を第2の時間間隔として記憶するステップとを備え、前記第1の時間間隔と前記第2の時間間隔とを比較するステップと、前記第1の時間間隔と前記第2の時間間隔とが等しい場合に、連続して等しい時間間隔が得られた回数に基づいて、前記中央演算装置をリセットするステップとを備えるようにしても良い。
【0029】
また本発明に係るマイクロコンピュータの暴走検出方法は、前記中央演算装置をリセットするステップは、前記第1のプログラムが通知された前記第1の設定時間と前記第2の設定時間とが等しい場合に、連続して等しい設定時間が得られた回数に基づいて、前記中央演算装置をリセットするステップを備えるようにしても良い。
【0030】
また本発明に係るマイクロコンピュータの暴走検出方法は、前記中央演算装置をリセットするステップは、前記第1のプログラムが前記第1の設定時間を前記タイマに設定してから、前記第2のプログラムから前記第2の設定時間が通知されるまでの時間間隔を計時するステップと、当該時間間隔を第1の時間間隔として記憶するステップと、前記第2の設定時間を前記タイマに設定してから、前記第2のプログラムから次の設定時間が通知されるまでの時間間隔を計時するステップと、当該時間間隔を第2の時間間隔として記憶するステップとを備え、前記第1の時間間隔と前記第2の時間間隔とを比較するステップと、前記第1の時間間隔と前記第2の時間間隔とが等しい場合に、連続して等しい時間間隔が得られた回数、又は、前記第1のプログラムが通知された前記第1の設定時間と前記第2の設定時間とが等しい場合に、連続して等しい設定時間が得られた回数の少なくとも一方に基づいて、前記中央演算装置をリセットするステップとを備えるようにしても良い。
【0031】
また本発明に係るマイクロコンピュータの暴走検出方法は、前記第1のプログラムが、ウォッチドッグタイマドライバであって、前記第2のプログラムは、アプリケーションプログラムであっても良い。
【0032】
また本発明に係るマイクロコンピュータの暴走検出方法は、前記第2の設定時間は、前記第1の設定時間と異なるようにしても良い。
【0033】
本発明に係るマイクロコンピュータの暴走検出プログラムは、プログラムを実行する中央演算装置と、設定された計時時間を計時するタイマとを有するマイクロプログラム暴走検出システムにおいて、前記プログラムとして、前記タイマを制御管理する第1のプログラムと、前記第1のプログラムに時間に関する制御情報を送信する第2のプログラムとを用意し、前記中央演算装置により前記プログラムが実行されるときに、前記第2のプログラムが、前記時間に関する制御情報を第1の設定時間として、前記第1のプログラムへ通知する手順と、前記第1のプログラムが、前記第1の設定時間を取得すると、当該第1の設定時間を前記タイマに設定する手順と、前記第2のプログラムが、前記第1の設定時間を通知してから当該第1の設定時間が経過する前に、第2の設定時間を前記第1のプログラムへ通知する手順と、前記第1のプログラムが、前記第2の設定時間を取得すると、当該第2の設定時間を前記タイマに設定する手順と、前記第1のプログラムが、前記第1の設定時間と前記第2の設定時間との通知状況に基づいて、前記中央演算装置をリセットする手順とを前記中央演算装置に実行させることを特徴とする。
【0034】
また本発明に係るマイクロコンピュータの暴走検出プログラムは、前記中央演算装置をリセットする手順は、前記第1の設定時間が経過する前に前記第2の設定時間が設定されない場合に、前記タイマの割り込み信号をトリガとして前記中央演算装置をリセットする手順を備えるようにしても良い。
【0035】
また本発明に係るマイクロコンピュータの暴走検出プログラムは、前記中央演算装置をリセットする手順は、前記第1のプログラムが前記第1の設定時間を前記タイマに設定してから、前記第2のプログラムから前記第2の設定時間が通知されるまでの時間間隔を計時する手順と、当該時間間隔を第1の時間間隔として記憶する手順と、前記第2の設定時間を前記タイマに設定してから、前記第2のプログラムから次の設定時間が通知されるまでの時間間隔を計時する手順と、当該時間間隔を第2の時間間隔として記憶する手順とを備え、前記第1の時間間隔と前記第2の時間間隔とを比較する手順と、前記第1の時間間隔と前記第2の時間間隔とが等しい場合に、連続して等しい時間間隔が得られた回数に基づいて、前記中央演算装置をリセットする手順とを備えるようにしても良い。
【0036】
また本発明に係るマイクロコンピュータの暴走検出プログラムは、前記中央演算装置をリセットする手順は、前記第1のプログラムが通知された前記第1の設定時間と前記第2の設定時間とが等しい場合に、連続して等しい設定時間が得られた回数に基づいて、前記中央演算装置をリセットする手順を備えるようにしても良い。
【0037】
また本発明に係るマイクロコンピュータの暴走検出プログラムは、前記中央演算装置をリセットする手順は、前記第1のプログラムが前記第1の設定時間を前記タイマに設定してから、前記第2のプログラムから前記第2の設定時間が通知されるまでの時間間隔を計時する手順と、当該時間間隔を第1の時間間隔として記憶する手順と、前記第2の設定時間を前記タイマに設定してから、前記第2のプログラムから次の設定時間が通知されるまでの時間間隔を計時する手順と、当該時間間隔を第2の時間間隔として記憶する手順とを備え、前記第1の時間間隔と前記第2の時間間隔とを比較する手順と、前記第1の時間間隔と前記第2の時間間隔とが等しい場合に、連続して等しい時間間隔が得られた回数、又は、前記第1のプログラムが通知された前記第1の設定時間と前記第2の設定時間とが等しい場合に、連続して等しい設定時間が得られた回数の少なくとも一方に基づいて、前記中央演算装置をリセットする手順とを備えるようにしても良い。
【0038】
また本発明に係るマイクロコンピュータの暴走検出プログラムは、前記第1のプログラムは、ウォッチドッグタイマドライバであって、前記第2のプログラムは、アプリケーションプログラムであっても良い。
【0039】
また本発明に係るマイクロコンピュータの暴走検出プログラムは、前記第2の設定時間は、前記第1の設定時間と異なるようにしても良い。
【0040】
本発明に係るマイクロコンピュータの暴走検出システムは、プログラムを実行する中央演算装置と、設定された計時時間を計時するタイマとを有するマイクロプログラム暴走検出システムにおいて、前記プログラムとして、前記タイマを制御管理する第1のプログラムと、前記第1のプログラムに時間に関する制御情報を送信する第2のプログラムとを用意し、前記第1のプログラムは、前記第1の設定時間を取得すると、当該第1の設定時間を前記タイマに設定する手段と、前記第2の設定時間を取得すると、当該第2の設定時間を前記タイマに設定する手段と、前記第1の設定時間と前記第2の設定時間との通知状況に基づいて、前記中央演算装置をリセットする手段とを備え、前記第2のプログラムは、前記時間に関する制御情報を第1の設定時間として前記第1のプログラムへ通知する手段と、前記第1の設定時間を通知してから当該第1の設定時間が経過する前に、第2の設定時間を前記第1のプログラムへ通知する手段とを備えたことを特徴とする。
【0041】
本発明に係るマイクロコンピュータのウォッチドッグタイマは、タイマを制御管理するウォッチドッグタイマドライバにおいて、前記タイマに設定する設定時間を取得すると、取得した順番に前記タイマに前記設定時間を設定する手段と、前記設定時間と、取得した順番により隣接する設定時間との設定状況に基づいて、前記タイマの割り込み信号を通知することを特徴とする。
【0042】
本発明に係るマイクロコンピュータのアプリケーションプログラムは、ウォッチドッグタイマドライバに時間に関する制御情報を順番に送信するアプリケーションプログラムにおいて、前記時間に関する制御情報を設定時間として、順番に前記設定時間を前記ウォッチドッグタイマドライバへ通知する手段を備えたことを特徴とする。
【0043】
本発明は、タイマを制御管理するウォッチドッグタイマドライバと、ウォッチドッグタイマドライバに制御情報を送付するアプリケーションプログラムとを備える。
【0044】
ウォッチドッグタイマドライバはアプリケーションプログラムから送付される情報をトリガとしてタイマをリセットし、再起動する機能に加えて、アプリケーションプログラムから情報を受ける時間間隔を管理する機能と、情報を記憶して前回に受け取った情報とを比較する機能を持つ。
【0045】
アプリケーションプログラムは、ウォッチドッグタイマドライバに送付する情報を固定せず、毎回異なる情報を送付する機能を持つ。このような構成を採用し、アプリケーションプログラムから情報を受ける時間間隔と情報内容がある一定回数固定した場合に、プログラムの暴走と判断してシステムのリセットをすることにより本発明の目的を達成することができる。
【発明の効果】
【0046】
本発明によれば、第1の効果は、マイクロコンピュータのプログラムが同じ箇所を繰り返し実行している暴走状態となった場合に、その実行箇所にかかわらず、暴走状態を認識し、プログラムを正常な処理に戻すことができる極めて有用な暴走検出方式を提供することができる。
【0047】
第2の効果は、従来技術であるウォッチドッグタイマ機能と併用することにより、暴走検出の確実性を増すことも可能であり、より安全性の高いシステムを実現することができる。
【0048】
第3の効果は、ハードウェアの改造なしにソフトウェアの変更だけで実現できるため、開発コストと製造コストを低く抑えることができる。
【発明を実施するための最良の形態】
【0049】
次に、発明を実施するための最良の形態について図面を参照して詳細に説明する。
(第1の実施の形態)
図1は、本発明の実施の形態を表すマイクロプログラム暴走検出方法を用いたマイクロプログラム暴走検出システムを示したものである。
【0050】
図1に示すマイクロプログラム暴走検出システムは、ハードウェア部とソフトウェア部とから構成されている。
【0051】
ハードウェア部の構成としては、CPU(Central Processing Unit)1と、CPU1に内蔵された汎用タイマ(Timer)2とから構成されている。なお汎用タイマ2は、本実施の形態では内蔵されているが、CPU1の外部に存在する構成も可能である。
【0052】
ソフトウェア部の構成としては、ウォッチドッグタイマドライバ(Watch dog Timer Driver)(以下、これを図中においてWDTと記載することがある。)3と、アプリケーションプログラム(Application Program)(以下、これを図中においてAPと記載することがある。)4とから構成されている。ウォッチドッグタイマドライバ3は、カウンタ(Counter)5を持ち、ある条件を満たしたときにカウンタ5を加算するようになっている。
【0053】
カウンタ5は、繰り返しカウンタ(図示せず)などの種々のカウンタを構成している。
【0054】
ここで、ウォッチドッグタイマドライバ3は、任意の記憶デバイスに設けるようにしても良く、また、OS(Operating System)を構成する各種ドライバ(Driver)の一部として組み込まれていても良い。
(第1の実施例)
アプリケーションプログラム4は、ウォッチドッグタイマドライバ3に情報を送ることにより、ウォッチドッグタイマドライバ3を制御する。
【0055】
ウォッチドッグタイマドライバ3は、CPU1の汎用タイマ2の制御とアプリケーションプログラム4から受け取る情報の管理を行い、プログラムの暴走と判断する条件を満たした場合に、CPU1のリセットを行うようになっている。
【0056】
次に、本実施の形態の全体の動作について詳細に説明する。
【0057】
図2、図3、及び図4は第1の実施例であり、図2は通常動作を動作概念図で表し、図3はプログラム暴走検出時の動作を動作概念図で表し、図4はこれらの動作をフローチャートで表したものである。
【0058】
ここで、図4のフローチャートを用いて、図2の通常動作と図3のプログラム暴走検出時の動作を説明する。
【0059】
通常動作(図2参照)として、図4のステップS01では、アプリケーションプログラム4が、ウォッチドッグタイマドライバ3に、汎用タイマ2のタイマの設定時間である時間[A]を通知する。
【0060】
ステップS02では、ウォッチドッグタイマドライバ3は、CPU1の汎用タイマ2に対し、タイマの設定時間[A]をセットし、タイマをスタートする。
【0061】
ステップS03では、アプリケーションプログラム4が、最初にタイマの設定時間[A]を通知した時点から時間[A]が経過するまでに、次の設定時間である時間[B]をウォッチドッグタイマドライバ3に通知したか否かを判断する。
【0062】
ここで、次の設定時間である時間[B]が通知された場合には、ステップS01に戻り、ウォッチドッグタイマドライバ3は、汎用タイマ2に時間[B]をセットして、タイマをスタートする。
【0063】
以後の通常動作として、アプリケーションプログラム4は、ウォッチドッグタイマドライバ3に通知した設定時間が経過する前に、次の設定時間をウォッチドッグタイマドライバ3に通知することを繰り返す。
【0064】
ウォッチドッグタイマドライバ3は、アプリケーションプログラム4から受け取った設定時間を汎用タイマ2に設定して、タイマのリスタートを繰り返す。
【0065】
これにより、通常動作を行っている場合には、図4のステップS01からステップS03を繰り返し実行するようになっている。
【0066】
一方、ステップS03において、次の設定時間である時間[B]が通知されなかった場合には、このことはプログラムが暴走したと判断され、ステップS04へ移動する。
【0067】
次に、プログラム暴走検出時の動作を説明する(図3参照)。
【0068】
プログラム暴走検出時の動作の前提として、ステップS01(図4参照)では、アプリケーションプログラム4が、ウォッチドッグタイマドライバ3に時間[C]を通知する。
【0069】
通常動作時と同様に、ステップS02では、ウォッチドッグタイマドライバ3が、汎用タイマ2に時間[C]をセットして、タイマをスタートする。
【0070】
ステップS03では、アプリケーションプログラム4が、タイマの設定時間として通知した時点から時間[C]が経過するまでに、次の設定時間をウォッチドッグタイマドライバ3に通知したか否かを判断する。
【0071】
ここで時間[C]が経過しても次の設定時間が通知されなかった場合には、このことはアプリケーションプログラム4の障害によってアプリケーションプログラム4からウォッチドッグタイマドライバ3に設定時間の通知が実施されていないことを意味しており、ウォッチドッグタイマドライバ3は、汎用タイマ2対してセットとリスタートを行うことができない。
【0072】
この場合、ステップS04では、時間[C]が経過した時点で、汎用タイマ2からCPU1へタイマ割り込みが発生し、ウォッチドッグタイマドライバ3の有するマイクロプログラム(図示せず)によってCPU1にタイマ割り込み処理に移行する。
【0073】
ステップS05では、マイクロプログラム(図示せず)のタイマ割り込み処理によって、CPU1のHW(Hard Ware)リセットを実施するようになっている。
【0074】
このように、第1の実施例では、第1の効果として、マイクロコンピュータのプログラムが同じ箇所を繰り返し実行している暴走状態となった場合には、その実行箇所にかかわらず、設定時間の通知によって暴走状態を認識し、プログラムを正常な処理に戻すことができるので、極めて有用な暴走検出方式を提供することが可能となるものである。
【0075】
第2の効果は、従来技術からあるウォッチドッグタイマ機能と併用することも可能であり、暴走検出の確実性を増すことも可能であり、より安全性の高いシステムを実現することができる。
【0076】
第3の効果は、ハードウェアの改造なしにソフトウェアの変更だけで実現できるため、開発コストと製造コストを低く抑えられることにある。
(第2の実施例)
次に、第2の実施例として第1の実施例と同一の構成であり、動作が異なる実施例について説明する。
【0077】
第2の実施例では、図5及び図6の動作の動作概念図と、図7のフローチャートによって動作を示している。
【0078】
ここで、図7のフローチャートを用いて、図5の通常動作と図6のプログラム暴走検出時の動作を説明する。特に、ウォッチドッグタイマドライバ3が有するマイクロプログラム(図示せず)に無限ループが発生した際、ループ内にウォッチドッグタイマドライバ3への時間通知処理を含んでいる場合である。
【0079】
まずステップS10では、アプリケーションプログラム4は、ウォッチドッグタイマ3に、汎用タイマ2のタイマの設定時間を通知する。
【0080】
ステップS11では、ウォッチドッグタイマドライバ3は、第1の実施例と同様に汎用タイマ2にタイマの設定時間をセットし、タイマをスタートする。
【0081】
ステップS12では、アプリケーションプログラム4は、ウォッチドッグタイマドライバ3に通知した設定時間が経過する前に、次の設定時間をウォッチドッグタイマドライバ3に通知する。従って、ここまでは第1の実施例と共通する。
【0082】
ステップS13では、ウォッチドッグタイマドライバ3は、次の設定時間が通知されると、先に通知された1回目の設定時間から次の2回目に設定時間が通知されるまでの経過時間を測定し、その経過時間の時間間隔[P]を記憶するようになっている。
【0083】
つまり第2の実施例では、設定時間を通知する点では第1の実施例と共通するが、次の設定時間が通知されるまでの経過時間を監視するようになっている点が異なっている。
【0084】
ステップS14では、ウォッチドッグタイマドライバ3は、ステップS13で通知された設定時間を汎用タイマ2にセットし、タイマをスタートする。
【0085】
ステップS15では、アプリケーションプログラム4は、ウォッチドッグタイマドライバ3に通知した設定時間が経過する前に、次の設定時間をウォッチドッグタイマドライバ3に通知する。
【0086】
ステップS16では、ウォッチドッグタイマドライバ3は、次の設定時間が通知されると、先に通知された設定時間から、今、設定時間が通知された経過時間を測定し、上述の最後に記憶した時間間隔[P](すなわち前回の経過時間)と、今回測定した時間間隔(すなわち今回の経過時間)とを比較して判断を行うようになっている。
【0087】
ここで、最後に記憶した時間間隔[P](すなわち前回の経過時間)と、アプリケーションプログラム4からウォッチドッグタイマドライバ3に通知された設定時間の時間間隔[P](すなわち今回の経過時間)とが等しい場合には、ステップS17へ移動し、ウォッチドッグタイマドライバ3のカウンタ5から構成される繰り返しカウンタ(図示せず)を1だけ加算した後、ステップS18へ移動する。
【0088】
ただし、繰り返しカウンタ(図示せず)は、システム起動時にゼロクリアされているものとする。
【0089】
一方、ステップS16において、アプリケーションプログラム4からウォッチドッグタイマドライバ3に通知された設定時間の時間間隔が等しくない場合には、ステップS20へ移動して、繰り返しカウンタ(図示せず)をゼロクリアすると共に、ステップS21へ移動し、新たに時間間隔[Q]を記憶する。
【0090】
そしてステップS14へ戻り、上記のステップを繰り返すようになっている。
【0091】
このようにウォッチドッグタイマドライバ3は、最後に記憶した時間間隔(すなわち前回の経過時間)と最後に測定した時間間隔(すなわち今回の経過時間)とを比較し、等しい場合は繰り返しカウンタ(図示せず)を1だけ加算し、等しくなかった場合は繰り返しカウンタをゼロクリアして、新たに時間間隔を記憶するようになっている。
【0092】
次にステップS18では、ステップS17において加算した繰り返しカウンタ(図示せず)が、規定のN(規定値)に達したか否かを判断する。
【0093】
図6では、アプリケーションプログラム4からウォッチドッグタイマドライバ3へ通知された設定時間の時間間隔は[R]である。この時間間隔[R]となった場合の動作が、経過時間の時間間隔が全て等しい場合の繰り返しであることを示している。
【0094】
つまりステップS18では、繰り返しカウンタ(図示せず)を加算するときは、いつも規定のN(規定値)と比較することにより、CPU1が暴走したか否かの判断を行っている。
【0095】
従って、繰り返しカウンタ(図示せず)が規定値のN(規定値)に達した場合には、ステップS19へ移動し、CPU1のHWリセットを実施する。
【0096】
一方、繰り返しカウンタ(図示せず)が規定の値N(規定値)に達しなかった場合には、ステップS14へ戻り、上記ステップを実行するようになっている。
【0097】
ここで、規定値のN(規定値)は、CPU1の暴走が発生していると判断出来うる繰り返し回数となっている。
【0098】
また、このCPU1の暴走を判断するための条件は、正常動作におけるアプリケーションプログラム4の動作として、ウォッチドッグタイマ3への時間通知間隔が毎回異なることである。この条件は、マルチタスクOS上で動作するアプリケーションならば、一般的に満たされる。
【0099】
なお、ウォッチドッグタイマドライバ3が最後に記憶した時間間隔と、最後に測定した時間間隔とを比較する際には、厳密な比較ではなく±数パーセントの誤差も許容出来るとする。
【0100】
その理由は、マイクロプログラムの無限ループが発生した際に、CPU1のパイプライン処理の動作如何によっては、ループ1回の時間が厳密に同じになるとは限らないからであり、その誤差は統計的に算出することができる。
【0101】
また誤差による許容範囲を設けることにより、時間間隔(経過時間)の繰り返しカウンタ(図示せず)に不要な加算を回避することができるので、暴走を検出する精度が向上し、厳密に暴走を判断してリセットした場合よりも、CPU1を適切にリセットすることができ、システム全体の安定性を向上することができる。
(第3の実施例)
図8には、第3の実施例を示している。
【0102】
図8では、アプリケーションプログラム4の通常動作から、プログラム暴走検出時の動作を表している。特に、ウォッチドッグタイマドライバ3に設けられたマイクロプログラムに無限ループが発生した際、ループ内にウォッチドッグタイマドライバ3自身への時間通知処理を含んでいる場合である。
【0103】
図7のフローチャートで説明した図5及び図6の第2の実施例との違いは、ウォッチドッグタイマドライバ3がマイクロプログラムの暴走と判断する条件が、アプリケーションプログラム4からの設定時間の通知間隔(時間間隔)ではなく、設定時間の情報そのものとなっていることである。
【0104】
すなわち、第1の実施例における通知された設定時間が、同じ設定時間である場合の通知回数をカウントし、規定のM(規定値)に達した場合は、CPU1のHWリセットを実施する。
【0105】
図8では、アプリケーションプログラム4からウォッチドッグタイマドライバ3への通知する設定時間は、設定時間[A]から設定時間[B]に変更されている。また、図8に示すように、この設定時間[B]が設定されてから継続して時間[B]が通知されている。
【0106】
従って、第3の実施例では、図8で示す繰り返しカウンタが1を加算することにより、規定のM(規定値)に達したか否かで判断するようになっている。
【0107】
図8の動作の前提となる条件は、正常動作におけるアプリケーションプログラム4側の動作として、ウォッチドッグタイマドライバ3への設定時間の通知内容が毎回異なることである。
【0108】
この条件は、マルチタスクOS上で動作するアプリケーションにおいて、2つ以上の異なるタスクからウォッチドッグタイマドライバ3に時間通知を行い、それぞれのタスクで異なる固定値を通知することで実現することができる。
【0109】
このように、ウォッチドッグタイマドライバ3に設けられたマイクロプログラムに無限ループが発生した際、ループ内にウォッチドッグタイマドライバ3自身への時間通知処理を含んでいる場合であっても、適切に暴走を検出することができる。
【0110】
また、ウォッチドッグタイマドライバ3が暴走を検出する対象は、マルチタスクOS上で動作するアプリケーションプログラム4に限定されるものではなく、CPU1によって実行されると共に、ウォッチドッグタイマドライバ3に設定時間の通知を行うことができ、ウォッチドッグタイマドライバ3が監視できるものであればよい。
【0111】
なお、第1から第3の実施例では、マイクロプログラム暴走検出方法を用いたマイクロプログラム暴走検出システムを構成して実行されるようになっていたが、本発明のマイクロプログラム暴走検出方法は、マイクロプログラム暴走検出プログラムをROM(Read Only Memory)などのメモリ(Memory)に格納しておくようにしたり、或いは通信インターフェースを介してマイクロプログラム暴走検出プログラムが提供されるようにしても良い。
【図面の簡単な説明】
【0112】
【図1】本発明の最良の形態の構成を示すブロック図である。
【図2】本発明の第1の実施例の通常動作を示す動作概念図である。
【図3】本発明の第1の実施例のプログラム暴走検出時の動作を示す動作概念図である。
【図4】本発明の第1の実施例の動作を示すフローチャートである。
【図5】本発明の第2の実施例の通常動作を示す動作概念図である。
【図6】本発明の第2の実施例のプログラム暴走検出時の動作を示す動作概念図である。
【図7】本発明の第2の実施例の動作を示すフローチャートである。
【図8】本発明の第3の実施例の動作を示す動作概念図である。
【図9】一般的なウォッチドッグタイマの構成図である。
【図10】一般的なウォッチドッグタイマの動作概念図である。
【符号の説明】
【0113】
1 CPU
2 汎用タイマ
3 ウォッチドッグタイマドライバ
4 アプリケーションプログラム
5 カウンタ

【特許請求の範囲】
【請求項1】
プログラムを実行する中央演算装置と、設定された計時時間を計時するタイマとを有するマイクロプログラム暴走検出システムにおいて、
前記プログラムとして、前記タイマを制御管理する第1のプログラムと、前記第1のプログラムに時間に関する制御情報を送信する第2のプログラムとを用意し、
前記中央演算装置により前記プログラムが実行されるときに、
前記第2のプログラムが、前記時間に関する制御情報を第1の設定時間として、前記第1のプログラムへ通知するステップと、
前記第1のプログラムが、前記第1の設定時間を取得すると、当該第1の設定時間を前記タイマに設定するステップと、
前記第2のプログラムが、前記第1の設定時間を通知してから当該第1の設定時間が経過する前に、第2の設定時間を前記第1のプログラムへ通知するステップと、
前記第1のプログラムが、前記第2の設定時間を取得すると、当該第2の設定時間を前記タイマに設定するステップと、
前記第1のプログラムが、前記第1の設定時間と前記第2の設定時間との通知状況に基づいて、前記中央演算装置をリセットするステップとを前記中央演算装置に実行させることを特徴とするマイクロプログラム暴走検出方法。
【請求項2】
前記中央演算装置をリセットするステップは、前記第1の設定時間が経過する前に前記第2の設定時間が設定されない場合に、前記タイマの割り込み信号をトリガとして前記中央演算装置をリセットするステップを備えたことを特徴とする請求項1に記載のマイクロプログラム暴走検出方法。
【請求項3】
前記中央演算装置をリセットするステップは、前記第1のプログラムが前記第1の設定時間を前記タイマに設定してから、前記第2のプログラムから前記第2の設定時間が通知されるまでの時間間隔を計時するステップと、
当該時間間隔を第1の時間間隔として記憶するステップと、
前記第2の設定時間を前記タイマに設定してから、前記第2のプログラムから次の設定時間が通知されるまでの時間間隔を計時するステップと、
当該時間間隔を第2の時間間隔として記憶するステップとを備え、
前記第1の時間間隔と前記第2の時間間隔とを比較するステップと、
前記第1の時間間隔と前記第2の時間間隔とが等しい場合に、連続して等しい時間間隔が得られた回数に基づいて、前記中央演算装置をリセットするステップとを備えたことを特徴とする請求項1に記載のマイクロプログラム暴走検出方法。
【請求項4】
前記中央演算装置をリセットするステップは、前記第1のプログラムが通知された前記第1の設定時間と前記第2の設定時間とが等しい場合に、連続して等しい設定時間が得られた回数に基づいて、前記中央演算装置をリセットするステップを備えたことを特徴とする請求項1に記載のマイクロプログラム暴走検出方法。
【請求項5】
前記中央演算装置をリセットするステップは、前記第1のプログラムが前記第1の設定時間を前記タイマに設定してから、前記第2のプログラムから前記第2の設定時間が通知されるまでの時間間隔を計時するステップと、
当該時間間隔を第1の時間間隔として記憶するステップと、
前記第2の設定時間を前記タイマに設定してから、前記第2のプログラムから次の設定時間が通知されるまでの時間間隔を計時するステップと、
当該時間間隔を第2の時間間隔として記憶するステップとを備え、
前記第1の時間間隔と前記第2の時間間隔とを比較するステップと、
前記第1の時間間隔と前記第2の時間間隔とが等しい場合に、連続して等しい時間間隔が得られた回数、又は、前記第1のプログラムが通知された前記第1の設定時間と前記第2の設定時間とが等しい場合に、連続して等しい設定時間が得られた回数の少なくとも一方に基づいて、前記中央演算装置をリセットするステップとを備えたことを特徴とする請求項1に記載のマイクロプログラム暴走検出方法。
【請求項6】
前記第1のプログラムは、ウォッチドッグタイマドライバであって、前記第2のプログラムは、アプリケーションプログラムでなる請求項1乃至5のいずれか1項に記載のマイクロプログラム暴走検出方法。
【請求項7】
前記第2の設定時間は、前記第1の設定時間と異なることを特徴とする請求項1乃至6のいずれか1項に記載のマイクロプログラム暴走検出方法。
【請求項8】
プログラムを実行する中央演算装置と、設定された計時時間を計時するタイマとを有するマイクロプログラム暴走検出システムにおいて、
前記プログラムとして、前記タイマを制御管理する第1のプログラムと、前記第1のプログラムに時間に関する制御情報を送信する第2のプログラムとを用意し、
前記中央演算装置により前記プログラムが実行されるときに、
前記第2のプログラムが、前記時間に関する制御情報を第1の設定時間として、前記第1のプログラムへ通知する手順と、
前記第1のプログラムが、前記第1の設定時間を取得すると、当該第1の設定時間を前記タイマに設定する手順と、
前記第2のプログラムが、前記第1の設定時間を通知してから当該第1の設定時間が経過する前に、第2の設定時間を前記第1のプログラムへ通知する手順と、
前記第1のプログラムが、前記第2の設定時間を取得すると、当該第2の設定時間を前記タイマに設定する手順と、
前記第1のプログラムが、前記第1の設定時間と前記第2の設定時間との通知状況に基づいて、前記中央演算装置をリセットする手順とを前記中央演算装置に実行させることを特徴とするマイクロプログラム暴走検出プログラム。
【請求項9】
前記中央演算装置をリセットする手順は、前記第1の設定時間が経過する前に前記第2の設定時間が設定されない場合に、前記タイマの割り込み信号をトリガとして前記中央演算装置をリセットする手順を備えたことを特徴とする請求項8に記載のマイクロプログラム暴走検出プログラム。
【請求項10】
前記中央演算装置をリセットする手順は、前記第1のプログラムが前記第1の設定時間を前記タイマに設定してから、前記第2のプログラムから前記第2の設定時間が通知されるまでの時間間隔を計時する手順と、
当該時間間隔を第1の時間間隔として記憶する手順と、
前記第2の設定時間を前記タイマに設定してから、前記第2のプログラムから次の設定時間が通知されるまでの時間間隔を計時する手順と、
当該時間間隔を第2の時間間隔として記憶する手順とを備え、
前記第1の時間間隔と前記第2の時間間隔とを比較する手順と、
前記第1の時間間隔と前記第2の時間間隔とが等しい場合に、連続して等しい時間間隔が得られた回数に基づいて、前記中央演算装置をリセットする手順とを備えたことを特徴とする請求項8に記載のマイクロプログラム暴走検出プログラム。
【請求項11】
前記中央演算装置をリセットする手順は、前記第1のプログラムが通知された前記第1の設定時間と前記第2の設定時間とが等しい場合に、連続して等しい設定時間が得られた回数に基づいて、前記中央演算装置をリセットする手順を備えたことを特徴とする請求項8に記載のマイクロプログラム暴走検出プログラム。
【請求項12】
前記中央演算装置をリセットする手順は、前記第1のプログラムが前記第1の設定時間を前記タイマに設定してから、前記第2のプログラムから前記第2の設定時間が通知されるまでの時間間隔を計時する手順と、
当該時間間隔を第1の時間間隔として記憶する手順と、
前記第2の設定時間を前記タイマに設定してから、前記第2のプログラムから次の設定時間が通知されるまでの時間間隔を計時する手順と、
当該時間間隔を第2の時間間隔として記憶する手順とを備え、
前記第1の時間間隔と前記第2の時間間隔とを比較する手順と、
前記第1の時間間隔と前記第2の時間間隔とが等しい場合に、連続して等しい時間間隔が得られた回数、又は、前記第1のプログラムが通知された前記第1の設定時間と前記第2の設定時間とが等しい場合に、連続して等しい設定時間が得られた回数の少なくとも一方に基づいて、前記中央演算装置をリセットする手順とを備えたことを特徴とする請求項8に記載のマイクロプログラム暴走検出プログラム。
【請求項13】
前記第1のプログラムは、ウォッチドッグタイマドライバであって、前記第2のプログラムは、アプリケーションプログラムでなる請求項8乃至12のいずれか1項に記載のマイクロプログラム暴走検出プログラム。
【請求項14】
前記第2の設定時間は、前記第1の設定時間と異なることを特徴とする請求項8乃至13のいずれか1項に記載のマイクロプログラム暴走検出プログラム。
【請求項15】
プログラムを実行する中央演算装置と、設定された計時時間を計時するタイマとを有するマイクロプログラム暴走検出システムにおいて、
前記プログラムとして、前記タイマを制御管理する第1のプログラムと、前記第1のプログラムに時間に関する制御情報を送信する第2のプログラムとを用意し、
前記第1のプログラムが、前記第1の設定時間を取得すると、当該第1の設定時間を前記タイマに設定する手段と、
前記第2の設定時間を取得すると、当該第2の設定時間を前記タイマに設定する手段と、
前記第1の設定時間と前記第2の設定時間との通知状況に基づいて、前記中央演算装置をリセットする手段とを備え、
前記第2のプログラムが、前記時間に関する制御情報を第1の設定時間として前記第1のプログラムへ通知する手段と、
前記第1の設定時間を通知してから当該第1の設定時間が経過する前に、第2の設定時間を前記第1のプログラムへ通知する手段と
を備えたことを特徴とするマイクロプログラム暴走検出システム。
【請求項16】
タイマを制御管理するウォッチドッグタイマドライバにおいて、
前記タイマに設定する設定時間を取得すると、取得した順番に前記タイマに前記設定時間を設定する手段と、
前記設定時間と、取得した順番により隣接する設定時間との設定状況に基づいて、前記タイマの割り込み信号を通知することを特徴とするウォッチドッグタイマドライバ。
【請求項17】
ウォッチドッグタイマドライバに時間に関する制御情報を順番に送信するアプリケーションプログラムにおいて、
前記時間に関する制御情報を設定時間として、順番に前記設定時間を前記ウォッチドッグタイマドライバへ通知する手段、
を備えたことを特徴とするアプリケーションプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2007−287096(P2007−287096A)
【公開日】平成19年11月1日(2007.11.1)
【国際特許分類】
【出願番号】特願2006−116864(P2006−116864)
【出願日】平成18年4月20日(2006.4.20)
【出願人】(390001395)NECシステムテクノロジー株式会社 (438)
【Fターム(参考)】