ウォッチドッグタイマという言葉をご存知ですか?
アプリケーションレベルのソフトウェアではあまり聞き覚えがないかもしれません。
組み込みシステムではほぼ必須ですが、意外と知らない人もいますので説明したいと思います。
概要:ウォッチドッグタイマは番犬
ウォッチドッグタイマはシステムが正常動作しているかを確認させるためのタイマです。
ウォッチドッグタイマの役割はシステムリセットすることです。言い換えればウォッチドッグタイマが発動するとシステムリセットするのです。
ですので、普段はシステムリセットしないように定期的にウォッチドッグタイマを制御する必要があります。
定期的に構ってあげることで番犬が吠えないようにする必要があるわけです。
ウォッチドッグタイマは異常を検知する役割を担う
ウォッチドッグタイマはシステムリセットさせることができます。
システムリセットが発動する条件は指定時間内に制御(大抵はパルス反転やパルス入力)が来なかった場合です。
※ちなみにこの制御のことをウォッチドッグクリアと呼びます。
つまり、組み込みシステムは基本的に
CPU(プログラム)が正常に動作している限りは定期的にウォッチドッグクリアする
ようにプログラムを組みます。
そして、定期的にウォッチドッグクリアされなかった場合に「異常状態に陥った(ウォッチドッグクリアできないのは正常ではない)」と判断して、システムリセットが発動するようになっています。
というのも、たいていの場合、異常動作に陥ってしまうと正常動作に復帰できないため、リセットが確実な対処となります。
※それでも復帰できない場合もありますが…
PCやスマホでもたまに勝手に再起動がかかる場合がありますが、あれも内部的にウォッチドッグが発動している可能性があります。
ウォッチドッグタイマはハード/ソフト両方ある
基本的には、確実さのためにハードウェアに組み込まれることが多いです。しかし、ソフトウェア実装によるソフトウェアウォッチドッグタイマというものも存在します。
また、ハードウェアのウォッチドッグタイマはマイコンに内蔵されている場合もありますが、大抵は外付けのウォッチドッグICを利用していると思います。マイコン自体が異常となった場合に担保できるか分からないこともありますので、外付けで単機能のICを利用した方が信頼性が上がるとも考えられます。
※システムに対する考え方次第なので、どちらが正解とかはありません。
ウォッチドッグタイマは組み込みにおいて基本で重要
組み込みシステムの信頼性のためにはウォッチドッグタイマは必要な要素であり、基本的な機能です。挙動も「定期的にクリアしないとリセットを発動させる」という非常にシンプルなものなので、あまり恐れずに機能と役割を理解して、開発に生かしてください。
組み込み開発ではICE(In Circuit Emulator)を使った開発も行われます。下記記事ではICEで良くある問題を紹介しています。
コメント