(57)【要約】【課題】  ＣＰＵによる初期化が必要なシステムに搭載され、上記システムの起動後に上記ＣＰＵから繰り返し入力されるクリア命令が、所定時間経過しても入力されないときに、上記ＣＰＵが暴走したと認識し、異常検知信号を出力するウオッチドッグタイマにおいて、システムの初期化処理に要する時間を考慮する必要がなく、しかも、システム初期化時におけるＣＰＵの暴走を確実に検出することができるウオッチドッグタイマを提供することを目的とするものである。【解決手段】  システムの起動直後は、第１の監視間隔で、上記ＣＰＵからの上記クリア命令を監視する第１の監視手段と、上記ＣＰＵから上記クリア命令が入力されると、その後は、上記第１の監視間隔とは異なる第２の監視間隔で、上記ＣＰＵからの上記クリア命令を監視する第２の監視手段とを有するウオッチドッグタイマである。【選択図】  図１
2005122424.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵによる初期化が必要なシステムに搭載され、上記システムの起動後に上記ＣＰＵから繰り返し入力されるクリア命令が、所定時間経過しても入力されないときに、上記ＣＰＵが暴走したと認識し、異常検知信号を出力するウオッチドッグタイマにおいて、
上記システムの起動直後は、第１の監視間隔で、上記ＣＰＵからの上記クリア命令を監視する第１の監視手段と；
上記ＣＰＵから上記クリア命令が入力されると、その後は、上記第１の監視間隔とは異なる第２の監視間隔で、上記ＣＰＵからの上記クリア命令を監視する第２の監視手段と；
を有することを特徴とするウオッチドッグタイマ。
【請求項２】
請求項１において、
上記第１の監視手段は、上記第１の監視間隔を、上記第２の監視間隔よりも長く設定し、しかも、上記ＣＰＵによるシステムの初期化処理の時間よりも長い間隔に設定する手段であることを特徴とするウオッチドッグタイマ。
【請求項３】
請求項１において、
上記第２の監視手段は、
システムリセット後の最大カウント値が、上記第１の監視間隔であり、ロード信号が入力されると、上記第２の監視間隔をカウントする初期値がロードされるカウンタ手段と；
上記ＣＰＵからのクリア命令を、上記カウンタ手段のロード信号に変換するクリア制御部と；
を有する手段であり、上記ＣＰＵからのクリア命令が入力されずに、上記カウンタがタイムアウトになると、上記異常検知信号を発生する手段であることを特徴とするウオッチドッグタイマ。
【請求項４】
請求項１において、
システム起動後に、上記ＣＰＵによるシステムの初期化処理が終了し、上記ＣＰＵが上記第２の監視手段へのクリア命令を一定間隔以内で発行することが可能になったときに、上記クリア命令の発行を開始することを特徴とするウオッチドッグタイマ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵ等の制御部の異常を監視するウオッチドッグタイマに関するものである。
【背景技術】
【０００２】
ＣＰＵを搭載しているシステムでは、ＣＰＵの暴走を監視するために、ウオッチドッグタイマ（ＷＤＴ）を装備することが多い。
【０００３】
図４は、従来例のウオッチドッグタイマ（ＷＤＴ）４０の構成例を示す図である。
【０００４】
ウオッチドッグタイマ４０は、監視対象であるＣＰＵ４１に直接接続され、ＣＰＵ４１が正常に動作しているかどうかを監視する。
【０００５】
ＣＰＵ４１は、プログラムメモリ（図示しない）からプログラムコードを読み出し、そのプログラムに従って、システム動作を制御するとともに、ウオッチドッグタイマ４０に、一定間隔でクリア命令を発行する。
【０００６】
クロック生成部４２は、ウオッチドッグタイマ４０のカウント動作のベースとなるタイマクロックを生成し、ウオッチドッグタイマ４０に供給する。ウオッチドッグタイマ４０に内蔵されているカウンタ部４３は、クロック入力端子（ＣＫ端子）から入力されるタイマクロックを計測し、カウンタ値が最大値に到達する（タイムアウトする）と、キャリー端子（ＣＯ端子）から異常検知信号を発生する。
【０００７】
また、カウンタ部４３は、リセット端子（ＲＳＴ端子）にリセット信号が入力されると、カウント値が初期化され、初期値からカウントを再開する。クリア制御部４４は、ＣＰＵ４１が発行したクリア命令を受け取ると、カウンタ部４３にリセット信号を発生させる。カウンタ部４３がタイムアウトする前に、ＣＰＵ４１からのクリア命令が入力され続けた場合、異常検知信号が発生することはないが、ＣＰＵ４１が暴走してクリア命令の発行を停止すると、カウンタ部４３がタイムアウトし、異常検知信号が発生する。
【０００８】
次に、従来例のウオッチドッグタイマ４０の動作と、従来例のウオッチドッグタイマ４０を用いたシステムの動作とについて説明する。
【０００９】
図５は、従来例のウオッチドッグタイマにおける動作を示すフローチャートである。
【００１０】
図５において、Ｓ５３〜Ｓ５７は、ＣＰＵ４１の動作であり、また、Ｓ５８〜Ｓ６２は、ウオッチドッグタイマ４０の動作である。
【００１１】
システム電源が投入されると（Ｓ５１）、システムリセットが解除され（Ｓ５２）、続いて、ＣＰＵ４１が起動し（Ｓ５３）、システムの初期化が開始される。同時にウオッチドッグタイマ４０のカウンタ部４３が起動し、初期値からカウントを開始する（Ｓ５８）。ＣＰＵ４１は、システムの初期化が完了すると、通常動作に移り（Ｓ５４）、本来の処理（通常動作）を開始する。
【００１２】
ＣＰＵ４１は、通常動作の途中で、または一定時間毎に、ウオッチドッグタイマ４０にクリア命令を発行し（Ｓ５４〜Ｓ５６）、ウオッチドッグタイマ４０のカウンタ部４３が、タイムアウトすることを防止する。
【００１３】
ＣＰＵ４１が発行するクリア命令は、ＣＰＵ４１の通常動作において、一定間隔で動作するタスク処理で発行させる方法が一般的である。ウオッチドッグタイマ４０は、ＣＰＵ４１からクリア命令を入力すると（Ｓ５９）、クリア制御部４４がカウンタ部４３をリセットし（Ｓ６０）、カウンタ部４３は、初期値から再びカウントを開始する。以後、ウオッチドッグタイマ４０は、ＣＰＵ４１のクリア命令によって、Ｓ５９〜Ｓ６１の動作を繰り返し実行する。
【００１４】
ＣＰＵ４１が暴走を始めた場合（Ｓ５６）、ＣＰＵ４１は、ウオッチドッグタイマ４０へクリア命令を発行できないので（Ｓ５７）、カウンタ部４３がタイムアウトし（Ｓ６１）、カウンタ部４３から異常検知信号が発生する（Ｓ６２）。
【００１５】
以上が、従来例のウオッチドッグタイマ４０の動作と、ウオッチドッグタイマ４０を用いたシステムの動作である。
【００１６】
ウオッチドッグタイマ４０がタイムアウトするまでの間隔は、個々のシステムによって異なるが、特に、モータ制御や記録ヘッド制御のように大きな電流が流れる装置や、メカ的な駆動系を含む装置では、ＣＰＵが暴走すると、通常動作とは異なる制御が実行され、結果として。モータやヘッドを駆動するドライバの焼損、駆動系の破壊を引き起こす可能性がある。したがって、ＣＰＵの暴走検出は、できる限り早急に行うことが望ましい。
【００１７】
一方、近年、ＣＰＵ搭載のシステムは、大規模化が進み、システム立ち上げ時にＣＰＵを初期化するに必要な時間と、周辺デバイスを初期化するに必要な時間とが、増えつつある。さらに、ＣＰＵの高速化を実現するために、初期化時に、アクセスタイムの早いＲＡＭへ、プログラムを展開し、以降、ＣＰＵは、ＲＡＭからプログラムを読み出して動作するシステムが一般的になっている。
【００１８】
このようなシステムの場合、クリア命令を発行するタクス処理を含むプログラム自体を、初期化時にＲＡＭへ展開する必要があるので、初期化時には、クリア命令を全く発行できなくなる。したがって、ウオッチドッグタイマのタイムアウト時間を、長時間化する初期化時間よりも十分に長く設定しなければならない。このように、ウオッチドッグタイマのタイムアウト時間を、長時間化する初期化時間よりも、十分に長く設定することは、暴走の検出時間を短く設定するという要求に反するという欠点がある。
【００１９】
これらの欠点を解消する方法として、システムの初期化時は、ウオッチドッグタイマを停止させ、初期化が終了した時点で、ウオッチドッグタイマのクリア命令を、ＣＰＵが発行したときに、ウオッチドッグタイマが起動するという方法が提案されている（たとえば、特許文献１参照）。
【００２０】
また、ウオッチドッグタイマのクリアを行うパルス発生手段を設け、システム初期化時には、ＣＰＵに替わってウオッチドッグタイマのクリアを行うという方法が提案されている（たとえば、特許文献２参照）。
【特許文献１】特開平７−７３０７３号公報
【特許文献２】特開２００１−２２２４４９号公報
【発明の開示】
【発明が解決しようとする課題】
【００２１】
しかし、従来のウオッチドッグタイマ４０では、ＣＰＵの初期化に時間がかかるシステムの場合、ウオッチドッグタイマ４０のタイムアウト時間を、初期化時間よりも、長く設定しなければならず、ＣＰＵの暴走検出が遅れるという問題がある。
【００２２】
一方、従来のウオッチドッグタイマ４０のタイムアウト時間を、システムの初期化時間よりも短く設定するには、システムの初期化プログラム中に、ウオッチドッグタイマ４０のクリア命令を発生させる処理を、意図的に組み込む必要があり、ソフトウェア開発の効率が低下するという問題がある。
【００２３】
また、上記従来のウオッチドッグタイマにおいて、システムの初期化処理が終了した後に、ウオッチドッグタイマを起動させる方法では、システムの初期化時にＣＰＵの暴走が発生した場合、ウオッチドッグタイマが停止しているので、初期化時におけるＣＰＵの異常を検出できないという問題がある。
【００２４】
さらに、上記従来のウオッチドッグタイマにおいて、システム初期化時に、ＣＰＵに代わって、ウオッチドッグタイマをクリアする方法では、ウオッチドッグタイマのクリアを行うパルス発生手段を新設する必要があるので、ウオッチドッグタイマの構成が複雑になるという問題があり、さらに、初期化処理において、パルス発生手段からのウオッチドッグタイマクリアとＣＰＵによるウオッチドッグタイマクリアとを切り替える制御を必要とし、初期化時のソフトウェア処理が煩雑になるという問題がある。
【００２５】
本発明は、ＣＰＵによる初期化が必要なシステムに搭載され、上記システムの起動後に上記ＣＰＵから繰り返し入力されるクリア命令が、所定時間経過しても入力されないときに、上記ＣＰＵが暴走したと認識し、異常検知信号を出力するウオッチドッグタイマにおいて、システムの初期化処理に要する時間を考慮する必要がなく、しかも、システム初期化時におけるＣＰＵの暴走を確実に検出することができるウオッチドッグタイマを提供することを目的とするものである。
【課題を解決するための手段】
【００２６】
本発明は、ＣＰＵによる初期化が必要なシステムに搭載され、上記システムの起動後に上記ＣＰＵから繰り返し入力されるクリア命令が、所定時間経過しても入力されないときに、上記ＣＰＵが暴走したと認識し、異常検知信号を出力するウオッチドッグタイマにおいて、上記システムの起動直後は、第１の監視間隔で、上記ＣＰＵからの上記クリア命令を監視する第１の監視手段と、上記ＣＰＵから上記クリア命令が入力されると、その後は、上記第１の監視間隔とは異なる第２の監視間隔で、上記ＣＰＵからの上記クリア命令を監視する第２の監視手段とを有するウオッチドッグタイマである。
【発明の効果】
【００２７】
本発明は、ＣＰＵによる初期化が必要なシステムに搭載され、上記システムの起動後に上記ＣＰＵから繰り返し入力されるクリア命令が、所定時間経過しても入力されないときに、上記ＣＰＵが暴走したと認識し、異常検知信号を出力するウオッチドッグタイマにおいて、システムの初期化処理に要する時間を考慮する必要がなく、しかも、システム初期化時におけるＣＰＵの暴走を確実に検出することができるという効果を奏する。
【発明を実施するための最良の形態】
【００２８】
発明を実施するための最良の形態は、次の実施例である。
【実施例１】
【００２９】
図１は、本発明の実施例１であるウオッチドッグタイマ１０の構成を示すブロック図である。
【００３０】
ウオッチドッグタイマ１０は、監視対象のＣＰＵ１１に直接接続され、ＣＰＵ１１が正常に動作しているかどうかを監視し、リセット制御部１２と、クロック生成部１３とに接続されている。
【００３１】
また、ウオッチドックタイマ１０は、カウンタ部１４と、通常カウント初期値発生部１５と、クリア制御部１６とを有する。
【００３２】
ＣＰＵ１１は、図示しないプログラムメモリから、プログラムコードを読み出し、そのプログラムに従って、システム動作を制御するとともに、ウオッチドッグタイマ１０に、一定間隔でクリア命令を発行する。
【００３３】
リセット制御部１２は、ウオッチドッグタイマ１０とＣＰＵ１１とへのシステムリセットを生成し、システム全体のリセット状態を制御する。
【００３４】
また、システム電源の投入時は、電源が安定するまでの期間に、リセット状態を保持し、システムの安定を確保する。さらに、リセット制御部１２は、ウオッチドッグタイマから異常検知信号を受け取ると、システムリセットを発生させ、システムの初期化を行う。
【００３５】
クロック生成部１３は、ウオッチドッグタイマ１０のカウント動作のベースとなるタイマクロックを生成し、ウオッチドッグタイマ１０に供給する。ウオッチドッグタイマ１０に内蔵されているカウンタ部１４は、クロック入力端子（ＣＫ端子）から入力されるタイマクロックを計測し、カウンタ値が最大値に到達する（タイムアウトする）と、キャリー端子（ＣＯ端子）から異常検知信号を発生する。
【００３６】
カウンタ部１４は、リセット端子（ＲＳＴ端子）にリセット信号が入力されると、カウント値が初期化され、初期値からカウントを再開する。また、ロード端子（ＬＤ端子）からロード信号が入力されると、データ端子（Ｄ端子）のデータをカウンタにロードし、以降、ロードした値からカウントを再開する。
【００３７】
通常カウント初期値発生部１５は、自身が発生する通常カウント初期値は、ＣＰＵ１１が通常動作中に異常を検出する間隔を設定する初期値であり、カウンタ部１４のＤ端子にロードデータとして与えられる。
【００３８】
なお、上記実施例において、通常カウント初期値発生部１５は、固定値を発生するが、ＣＰＵ１１の初期化処理において、ＣＰＵ１１が、上記通常カウント初期値を設定できるようにしてもよい。
【００３９】
クリア制御部１６は、ＣＰＵ１１が発行するクリア命令を受け取ると、カウンタ部１４にロード信号を発生させる。ＣＰＵ１１からのクリア命令が、カウンタ部１４がタイムアウトする前に、入力され続けた場合、異常検知信号が発生することはないが、ＣＰＵ１１が暴走し、クリア命令の発行を停止すると、カウンタ部１４がタイムアウトし、異常検知信号が発生する。
【００４０】
次に、ウオッチドッグタイマ１０の動作とウオッチドッグタイマ１０を用いたシステムの動作とについて説明する。
【００４１】
図２は、ウオッチドッグタイマ１０の動作とウオッチドッグタイマ１０を用いたシステムの動作とを示すフローチャートである。
【００４２】
図２において、Ｓ３〜Ｓ９は、ＣＰＵ１１の動作を示し、Ｓ１０〜Ｓ１４は、ウオッチドッグタイマ１０の動作を示す。
【００４３】
まず、システム電源が投入されると（Ｓ１）、システムリセットが解除され（Ｓ２）、続いてＣＰＵ１１が起動を開始する（Ｓ３）。これと同時に、ウオッチドッグタイマ１０のカウンタ部１４が起動し、初期値からカウントを開始する（Ｓ１０）。ＣＰＵ１１は、プログラムメモリからプログラムを読み出し（Ｓ４）、システムを初期化する（Ｓ５）。
【００４４】
プログラムをＲＡＭへ展開した後に動作するシステムでは、初期化処理の中でプログラムデータをプログラムメモリから読み出し、ＲＡＭへ、一旦、展開した後に、ＲＡＭからプログラムを読み出して動作する。
【００４５】
ＣＰＵ１１は、システムの初期化が完了すると、本来の処理（通常動作）を開始する（Ｓ６）。ＣＰＵ１１は、通常動作の途中で、一定時間ごとに、ウオッチドッグタイマ１０にクリア命令を発行し（Ｓ６〜Ｓ８）、ウオッチドッグタイマ１０のカウンタ部１４が、タイムアウトすることを防止する。
【００４６】
ウオッチドッグタイマ１０は、ＣＰＵ１１からクリア命令を受信すると（Ｓ１１）、クリア制御部１６がロード信号を発生し、通常カウント初期値発生部１５が通常カウント初期値を発生し、この発生された通常カウント初期値が、カウンタ部１４にロードされ（Ｓ１２）、以降、通常カウント初期値からカウントを再開する。
【００４７】
その後、ウオッチドッグタイマ１０は、ＣＰＵ１１のクリア命令によって、Ｓ１１〜Ｓ１３の動作を繰り返し実行する。ＣＰＵ１１が暴走を始めると（Ｓ８）、ＣＰＵ１１は、ウオッチドッグタイマ１０へクリア命令を発行できなくなるので（Ｓ９）、カウンタ部１４がタイムアウトし（Ｓ１３）、カウンタ部１４が異常検知信号を発生する（Ｓ１４）。
【００４８】
リセット制御部１２は、異常検知信号が発生すると、システムリセットを発生し、システム全体をリセットし（Ｓ１５）、システム電源投入（Ｓ１）からの動作と同じ動作を繰り返す。
【００４９】
なお、上記実施例では、異常検知信号を発生すると、システムリセットを発生するが、異常検知信号を検出した後に、ＣＰＵ１１のＮＭＩ（ノンマスカブルインタラプト）処理等によって、異常状態から復帰させることが可能であれば、ＣＰＵ１１が復帰処理するようにしてもよい。
【００５０】
図３は、ウオッチドッグタイマ１０に設けられているカウンタ部１４の動作を説明する図である。
【００５１】
図３では、横軸に、時間経過を示し、縦軸に、カウント部１４のカウント値を示す。
【００５２】
カウンタ部１４は、システムリセットが解除されると、図３に示すＡ点からカウントを開始する。その後、ＣＰＵ１１からのクリア命令が発行されずに、Ｔ１時間経過すると、カウント値が、カウンタ部１４の最大カウント値に到達し（Ｂ点）、異常検知信号を発生する。ＣＰＵ１１が初期化処理中に暴走した場合、上記Ｂ点で、異常検知信号が発生する。したがって、カウント部１４の最大カウント値は、初期化処理に必要な時間よりも長く設定しておけばよい。
【００５３】
一方、カウント値がタイムアウトする前に、ＣＰＵ１１からクリア命令を受信すると、通常カウント初期値発生部１５が発生する通常カウント初期値をロードし（Ｃ１点）、通常カウント初期値からカウントが継続される。以降、ＣＰＵ１１から一定間隔で、クリア命令が入力されることによって、カウント値として、通常カウント初期値が繰り返しロードされる（Ｃ２、Ｃ３点）。
【００５４】
通常動作中に、ＣＰＵ１１が暴走した場合、前回クリア命令が入力されてからＴ２時間経過すると、カウンタ部１４のカウント値が最大カウント値に到達し（Ｄ点）、異常検知信号が発生する。
【００５５】
したがって、通常動作時においては、（最大カウント値）−（通常カウント初期値）が異常動作の監視間隔となる。通常動作時の監視間隔は、通常動作時においてＣＰＵ１１が発行可能なクリア命令の間隔よりも大きいことが必要であるが、装置の安全性を確保するためには、できる限り小さい値を設定する。
【００５６】
図３では、カウンタ部１４が、アップカウンタであるが、カウンタ部１４として、ダウンカウンタを使用するようにしてもよく、この場合、カウント値が０になったときに、異常検知信号を発生させるようにしてもよい。
【００５７】
上記実施例は、ＣＰＵによる初期化が必要なシステムに搭載され、上記システムの起動後に上記ＣＰＵから繰り返し入力されるクリア命令が、所定時間経過しても入力されないときに、上記ＣＰＵが暴走したと認識し、異常検知信号を出力するウオッチドッグタイマにおいて、上記システムの起動直後は、第１の監視間隔で、上記ＣＰＵからの上記クリア命令を監視する第１の監視手段と、上記ＣＰＵから上記クリア命令が入力されると、その後は、上記第１の監視間隔とは異なる第２の監視間隔で、上記ＣＰＵからの上記クリア命令を監視する第２の監視手段とを有するウオッチドッグタイマの例である。
【００５８】
したがって、システム起動後の初期化時と、通常動作時とにおけるウオッチドッグタイマの監視間隔を、互いに異なる間隔で監視できるので、各処理に応じた最適な間隔で異常状態を監視することができ、また、システム初期化時もウオッチドッグタイマが動作しているので、システム初期化時にウオッチドッグタイマを停止させる従来の方法では実現することができなかった、システム初期化時のＣＰＵ暴走を確実に検出することができる。
【００５９】
この場合、上記第１の監視手段は、上記第１の監視間隔を、上記第２の監視間隔よりも長く設定し、しかも、上記ＣＰＵによるシステムの初期化処理の時間よりも長い間隔に設定する手段である。
【００６０】
このように、システム初期化時のウオッチドッグタイマの監視間隔を、通常動作時の監視間隔よりも長く設定するので、長時間化するシステム初期化時間に対応しながら、通常動作時の監視間隔を短くすることができ、装置の安全性を十分に保つことができる。
【００６１】
また、上記第２の監視手段は、システムリセット後の最大カウント値が、上記第１の監視間隔であり、ロード信号が入力されると、上記第２の監視間隔をカウントする初期値がロードされるカウンタ手段と、上記ＣＰＵからのクリア命令を、上記カウンタ手段のロード信号に変換するクリア制御部とを有する手段であり、上記ＣＰＵからのクリア命令が入力されずに、上記カウンタがタイムアウトになると、上記異常検知信号を発生する手段である。
【００６２】
つまり、システム起動直後のウオッチドッグタイマの最大カウント値を、システムの初期時間に必要な間隔よりも長く設定し、ロード信号が入力されると、通常動作時の監視間隔をカウントする初期値がロードされるので、パルス発生手段や切り替え手段を必要とする従来の方法に比べ、より簡単な構成でウッチドッグタイマを構成することができる。
【００６３】
さらに、システム起動後に、上記ＣＰＵによるシステムの初期化処理が終了し、上記ＣＰＵが上記第２の監視手段へのクリア命令を一定間隔以内で発行することが可能になったときに、上記クリア命令の発行を開始する。
【００６４】
つまり、システムを起動した後に、ＣＰＵによるシステムの初期化処理が終了し、ＣＰＵがクリア命令を一定間隔以内で発行することができた時点で、ウオッチドッグタイマのクリア命令の発行を開始するように制御するので、従来のようなシステム初期化時の煩雑なＣＰＵ処理を実行する必要がなく、また、システム初期化プログラム中にウオッチドッグタイマのクリア命令を発生させる処理を意図的に組み込む必要がなく、ソフトウェアの開発効率を向上させることができる。
【図面の簡単な説明】
【００６５】
【図１】本発明の実施例１であるウオッチドッグタイマ１０の構成を示すブロック図である。
【図２】ウオッチドッグタイマ１０の動作とウオッチドッグタイマ１０を用いたシステムの動作とを示すフローチャートである。
【図３】ウオッチドッグタイマ１０に設けられているカウンタ部１４の動作を説明する図である。
【図４】従来例のウオッチドッグタイマ４０の構成例を示す図である。
【図５】従来例のウオッチドッグタイマ４０における動作を示すフローチャートである。
【符号の説明】
【００６６】
１０…ウオッチドッグタイマ、
１１…ＣＰＵ、
１２…リセット制御部、
１３…クロック生成部、
１４…カウンタ部、
１５…通常カウント初期値発生部。
【図１】
2005122424.tif 000003
【図２】
2005122424.tif 000004
【図３】
2005122424.tif 000005
【図４】
2005122424.tif 000006
【図５】
2005122424.tif 000007