(57)【要約】【課題】簡易な回路構成でいずれのタスク暴走が発生しているのか特定し、暴走が発生したタスクの再起動を回避してシステムをリセット可能なＣＰＵ暴走判定回路を提供する。【解決手段】ＣＰＵ１はシステムの起動時又はリセットされたときにウォッチドッグタイマー２内のレジスタ７に保持されたクリアパターンを読み出すことによりシステムからのリセットか実行するプログラムの暴走によるリセットかを判定し、暴走したタスクを再起動させないようにシステムの起動処理を行う。【選択図】図１
2007323631.tif 000002
【特許請求の範囲】
【請求項１】
システムの各部の動作を制御するため複数のプログラムを実行するＣＰＵと、
前記ＣＰＵからスタート信号を受けて計数を開始するカウンターを備え、該カウンターが予め設定されたカウント数に到達するとリセット信号を出力するウォッチドッグタイマーを具備し、
前記ウォッチドッグタイマーは、ＣＰＵからタスクに応じたクリアパターンを設定できるレジスタを持ち、該レジスタが保持するクリアパターンが電源供給中は保持され電源部からのリセット信号によって初期値に書き換えられ、
前記ＣＰＵはシステムの起動時又はリセットされたときにウォッチドッグタイマー内のレジスタに保持されたクリアパターンを読み出すことによりシステムからのリセットか実行するプログラムの暴走によるリセットかを判定し、暴走したタスクを再起動させないようにシステムの起動処理を行うことを特徴とするＣＰＵ暴走判定回路。
【請求項２】
ＯＲ回路の出力端子がＣＰＵのリセット端子に接続され、該ＯＲ回路の一方の入力端子がウォッチドックタイマーの出力端子に接続されており、ＣＰＵへのリセット信号は、ＯＲ回路においてウォッチドッグタイマーから出力されるリセット信号と電源部から出力されるリセット信号の論理和を取って出力されることを特徴とする請求項１記載のＣＰＵ暴走判定回路。
【請求項３】
ウォッチドッグタイマーは、ＣＰＵから出力されるクリア信号のクリアパターンと当該ウォッチドッグタイマー内のレジスタで保持するクリアパターンとを比較して一致する場合にカウンターの計数値をクリアすることを特徴とする請求項１記載のＣＰＵ暴走判定回路。
【請求項４】
ウォッチドッグタイマーは、ＣＰＵからレジスタに書き込まれたクリアパターンを保持し、電源部からリセット信号が入力されるとクリアパターンを更新して初期値に書き換えられ、ＣＰＵからタスクが切り替わるときに当該タスクに対応する所定のクリアパターンへ書き換えられることを特徴とする請求項１記載のＣＰＵ暴走判定回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば家電品などに組み込まれるマイコンボードなどのコンピュータ組込み機器に設けられるＣＰＵ暴走判定回路に関する。
【背景技術】
【０００２】
コンピュータ組込み機器の制御回路にはウォッチドッグタイマーが設けられている。ウォッチドッグタイマーは、ＣＰＵを含むロジック回路などにおいてＣＰＵが暴走したときにリセット信号を発生して再起動をしてＣＰＵの暴走を防ぐようになっている。具体的には、ＣＰＵからウォッチドッグタイマーにクリア信号が入力されると、ウォッチドッグタイマーはカウンターをリセットする。ＣＰＵからのクリア信号が途絶えカウント値が所定値に達するとＣＰＵが暴走していると判定されウォッチドッグタイマーは、ＣＰＵに対してリセット信号を出力する。
【０００３】
ウォッチドッグタイマーの具体例を挙げると、例えばＣＰＵの入力ポートに電源ＶＣの立ち上がりにより動作する遅延回路を設け、ＣＰＵがリセットされた直後の入力ポートの状態の論理値により電源投入による初期スタートであるのか、暴走によるリスタートであるのかを判断するＣＰＵ暴走判断回路が提案されている（特許文献１）。
【０００４】
また、ＣＰＵがＲＯＭやＲＡＭに格納されたプログラムを読み出して複数のプログラム処理部で実行する情報処理装置において、いずれのプログラム処理部が暴走したのかを特定するウォッチドッグタイマーが提案されている。具体的には、ウォッチドッグタイマーには、監視対象とする第１、第２のプログラム処理部に対応する記憶領域を有する状態レジスタが設けられている。ウォッチドッグタイマーはいずれかのプログラム処理部で暴走が発生したことを検出すると状態レジスタの該当する記憶領域に検出結果を書き込む。制御部はウォッチドッグタイマーより暴走検出通知を受け取った際に状態レジスタの記憶領域を参照することで暴走したプログラム処理部を特定するようになっている（特許文献２）。
【特許文献１】実開平５−８７６４４号公報
【特許文献２】特開２００５−９２４３０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１のウォッチドッグタイマーの入力ポートに遅延回路を設けた場合、ＣＰＵが暴走による再起動と判断して、ウォッチドッグタイマーのリセット信号によりＣＰＵの初期化を行なっても、プログラムまたはハードウェアに問題がある場合には、暴走が繰返し発生するおそれがある。また、メモリなどの素子が破壊されている場合には、再起動してもすぐに暴走が発生する。
また、特許文献２においては、ウォッチドッグタイマーがプログラム処理部の暴走を検出した場合に、制御部が状態レジスタの記憶領域を参照して、暴走したプログラム処理部を特定して適切な対応することができる。しかしながら、制御部が実行するプログラム処理部の数だけラッチ回路を設ける必要があるため、制御部が実行するプログラムが増えれば回路構成が複雑化煩雑化し、部品点数も増えて製造コストが上昇する。
【０００６】
近年のＣＰＵを含むロジック回路の高性能化、多機能化により、コンピュータ組込み機器の制御回路においても、複数のタスクを実行する場合が多い。この場合にいずれのタスク（プロセス、スレッド）で暴走が発生しているのか特定すること、暴走が発生しているタスクを回避してシステムのリセットすることが求められている。
【０００７】
本発明は上述した課題を解決すべくなされたものであり、その目的とするところは、簡易な回路構成で、いずれのタスクで暴走が発生しているのか特定し、暴走が発生したタスクの再起動を回避してシステムをリセット可能なＣＰＵ暴走判定回路を提供することにある。
【課題を解決するための手段】
【０００８】
本発明は上記目的を達成するため、次の構成を備える。
即ち、システムの各部の動作を制御するため複数のプログラムを実行するＣＰＵと、前記ＣＰＵからスタート信号を受けて計数を開始するカウンターを備え、該カウンターが予め設定されたカウント数に到達するとリセット信号を出力するウォッチドッグタイマーを具備し、前記ウォッチドッグタイマーは、ＣＰＵからタスクに応じたクリアパターンを設定できるレジスタを持ち、該レジスタが保持するクリアパターンが電源供給中は保持され電源部からのリセット信号によって初期値に書き換えられ、前記ＣＰＵはシステムの起動時又はリセットされたときにウォッチドッグタイマー内のレジスタに保持されたクリアパターンを読み出すことによりシステムからのリセットか実行するプログラムの暴走によるリセットかを判定し、暴走したタスクを再起動させないようにシステムの起動処理を行うことを特徴とする。
また、ＯＲ回路の出力端子がＣＰＵのリセット端子に接続され、該ＯＲ回路の一方の入力端子がウォッチドックタイマーの出力端子に接続されており、ＣＰＵへのリセット信号は、ＯＲ回路においてウォッチドッグタイマーから出力されるリセット信号と電源部から出力されるリセット信号の論理和を取って出力されることを特徴とする。
また、ウォッチドッグタイマーは、ＣＰＵから出力されるクリア信号のクリアパターンと当該ウォッチドッグタイマー内のレジスタで保持するクリアパターンとを比較して一致する場合にカウンターの計数値をクリアすることを特徴とする。
また、ウォッチドッグタイマーは、ＣＰＵからレジスタに書き込まれたクリアパターンを保持し、電源部からリセット信号が入力されるとクリアパターンを更新して初期値に書き換えられ、ＣＰＵからタスクが切り替わるときに当該タスクに対応する所定のクリアパターンへ書き換えられることを特徴とする。
【発明の効果】
【０００９】
上述したＣＰＵ暴走判定回路を用いれば、ＣＰＵが実行するタスクに対応したクリアパターンをウォッチドッグタイマーが保持しているので、ＣＰＵはシステムの起動時にウォッチドッグタイマーに保持されたクリアパターンを読み出すことによりシステムからのリセットか実行するプログラムの暴走によるリセットかを判定し、暴走したタスクを再起動させないようにシステムの起動処理を行うことができる。これにより、簡易な回路構成で、複数のプログラムを実行するいずれのタスクで暴走が発生しているのか特定し、暴走が発生したタスクの再起動を回避してシステムをリセットすることができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明に係るＣＰＵ暴走判定回路の最良の実施形態について添付図面とともに詳細に説明する。本実施形態は、コンピュータ組込み機器の制御回路に設けられるＣＰＵ暴走判定回路について説明する。尚、制御回路の機能としては、ＣＰＵなどの制御部が複数プログラムを実行するマルチタスク若しくはマルチスレッドを想定しているものとする。
【００１１】
先ず、ＣＰＵ暴走判定回路の回路構成について図１を参照して説明する。
ＣＰＵ１とウォッチドッグタイマー２はバスライン３を通じて電気的に接続されている。ＣＰＵ１は図示しないＲＯＭに記憶された複数のプログラムをＲＡＭに読み出して実行し、システム各部の動作を制御する。
【００１２】
ＯＲ回路４の出力端子がＣＰＵ１のリセット端子に接続され、ＯＲ回路４の一方の入力端子がウォッチドックタイマー２の出力端子に接続されている。ＣＰＵ１へのリセット信号は、ＯＲ回路４においてウォッチドッグタイマー２から出力されるリセット信号と電源部から出力されるリセット信号の論理和を取って出力される。
【００１３】
ウォッチドッグタイマー２には、ＣＰＵ１からスタート信号を受けて計数を開始するカウンター５が設けられている。このカウンター５が予め設定されたカウント数に到達するとＯＲ回路４の入力端子へリセット信号を出力する。
また、ウォッチドッグタイマー２は、電源部からのリセット信号やＣＰＵから認定されたタスクに応じたクリアパターンをレジスタ７に保持している。ＣＰＵ１はシステムの起動時又はリセットされたときにウォッチドッグタイマー２内のレジスタ７に保持されたクリアパターンを読み出すことによりシステムからのリセットか実行するプログラムの暴走によるリセットかを判定し、暴走したタスクを再起動させないようにシステムの起動処理を行うようになっている。
【００１４】
ウォッチドッグタイマー２は、ＣＰＵ１から出力されるクリア信号のクリアパターンと当該ウォッチドッグタイマー２内のレジスタ７で保持するクリアパターンとをコンパレータ６にて比較し、一致する場合にカウンター５のクリア端子へクリア信号を出力して計数値をクリアする。
【００１５】
ウォッチドッグタイマー２は、ＣＰＵ１からレジスタ７に書き込まれたクリアパターンを保持する。また、ウォッチドッグタイマー２は、電源部からリセット端子へリセット信号が入力されるとレジスタ７のクリアパターンが更新されて初期値に書き換えられ、ＣＰＵ１からタスクが切り替わるときに当該タスクに対応するクリアパターンがレジスタ７に書き込まれる。これによって、システムを再起動する際に、ＣＰＵが暴走したタスクを回避して再起動することができる。
【００１６】
クリアパターンを図２に例示する。図２において左側の欄がクリアパターンであり、対応するタスク（プロセス、スレッド）を右側に示す。クリアパターン０は、電源部からのクリアパターンに対応する初期値Ａ０に対応しており、ＣＰＵ１のリセットがシステムの立ち上げによるものと判断される。クリアパターン１〜１０は、ＣＰＵ１が実行するタスク（プログラムＡ１〜Ａ１０）に対応した値を示す。ＣＰＵ１のリセットがクリアパターン１〜１０によるものと判定されれば、該当するタスク（プログラムＡ１〜Ａ１０）が暴走したことに起因すると判定できる。
【００１７】
次に、ＣＰＵ暴走判定回路の起動処理動作の一例について図３のフローチャートを参照して説明する。
先ず、システムの電源を投入すると、ＣＰＵ１はシステムの初期化処理を行ない、プログラムを立ち上げ可能な状態にする（ステップＳ１）。このとき、ＣＰＵ１は、ウォッチドッグタイマー２内のレジスタ７のクリアパターンが初期値（例えば、図２のクリアパターンＡ０）であるか否かを読みに行く（ステップＳ２）。クリアパターンが初期値であればシステムの立ち上げによるリセットであると判断し、レジスタ７へ起動するタスクに対応するクリアパターンを書き込み、スタート信号をカウンター５のスタート端子へ出力して計数値をクリアして新たなカウントを開始し、通常のタスクの起動動作を行なう（ステップＳ３）。
【００１８】
クリアパターンが初期値以外の値（例えば、図２のクリアパターンＡ１〜Ａ１０）であれば、ＣＰＵ１がウォッチドッグタイマー２内のレジスタ７が保持するクリアパターンを読みに行くことで暴走したタスクを特定することができる。ＣＰＵ１は暴走したタスクを起動させないようにして他のタスクの再起動処理を行なう（ステップＳ４）。
また、システムへ暴走したタスクを通知する。例えば、ネットワークを通じて図示しないサーバーへ状態を報知する（ステップＳ５）。これにより、システムの不具合に応じたメンテナンスの効率化が図れる。
【００１９】
尚、上述したＣＰＵ暴走判定回路は、マルチＣＰＵがタスクを実行する制御回路であってもよいし、公知のＯＳが搭載されＣＰＵがタスクに応じた複数のアプリケーションを実行する制御回路であっても良い。
【図面の簡単な説明】
【００２０】
【図１】ＣＰＵ暴走判定回路のブロック構成図である。
【図２】クリアパターンの一例を示す説明図である。
【図３】ＣＰＵ暴走判定回路の起動処理動作のフローチャートである。
【符号の説明】
【００２１】
１  ＣＰＵ
２  ウォッチドッグタイマー
３  バスライン
４  ＯＲ回路
５  カウンター
６  コンパレータ
７  レジスタ
【図１】
2007323631.tif 000003
【図２】
2007323631.tif 000004
【図３】
2007323631.tif 000005