この投稿では、ウォッチドッグタイマについて説明します。
ウォッチドッグタイマとは
ウォッチドッグタイマ(WDT: Watchdog Timer)は、組み込みシステムやコンピュータシステムで使用される自動リセット機能付きのタイマです。システムが正常に動作していることを確認し、異常が発生した場合に自動的にリセットをかけることで、システムの安定性を向上させます。
WDTの仕組み
WDTは、有効化(イネーブル)されると、一定時間(タイムアウト時間)のカウントを開始するタイマです。プログラムは、定期的に「WDTクリア」を行い、カウントをリセットしてWDTを再スタートさせます(これを「ウォッチドッグをキックする」とも呼びます)。WDTがタイムアウトすると、システム異常が発生したと判断され、リセット信号がMCUのリセット機能へ送られます。
最近では、タイムアウト以外にもウィンドウ(Time Min ~ Time Max以内)にキックしないとリセット信号を送るようなタイプもあります。
また、WDTには、MCU内臓WDTと外付けWDTがあります。
メリット | デメリット | |
---|---|---|
MCU内臓WDT | ・追加コストが発生しない ・ソフトウェアで容易に実装できる ・省スペース ・消費電力が低い | ・MCUが完全にフリーズすると機能しない可能性がある* ・リセットの確実性が外付けに比べて低い* ・設定ミスやソフトウェアのバグで無効化される可能性がある |
外付けWDT | ・MCUが完全にフリーズしても機能する ・MCUを監視することも可能 ・リセット信号送信だけでなく電源強制遮断や異常ログの保存など、さまざまなアクションを設定できる | ・追加コストがかかる ・基板が複雑になる ・MCUのGPIOを使う ・消費電力が増加する |
* 対策しているMCUもあります

WDTの注意点
WDTは、次のことに注意する必要があります。
- デバッグ方法によってはWDTリセットが発生することがあるため、必要に応じてWDTを無効化してください。
- プログラムのキック処理は、最も優先順位の低い処理で実行してください。
優先順位の高い処理でキック処理を行うと、それより優先順位が低い処理で無限ループなどの異常が発生しても、WDTが検知できなくなる可能性があります。 - 外付けWDTを使用する場合、リプロ時には定周期でWDTのキック処理を行ってください。