ウォッチドッグタイマ.|異常監視でシステムの信頼性向上

ウォッチドッグタイマ

ウォッチドッグタイマは、マイコンやSoCなどの組込み機器において、ソフトウェアのハングアップやデッドロックを自動検出し、リセットや安全状態への移行を行うための監視用タイマである。一定周期で「キック(ペット)」が行われない場合にタイムアウトし、例外やリセット信号を出すことでシステムの自己回復を実現する。安全規格や高可用性が要求される装置では必須要素であり、ウォッチドッグタイマの設計はリアルタイム性、フェイルセーフ設計、電源・EMC耐性、ソフトウェアアーキテクチャの整合を踏まえて最適化される。

基本動作と目的

ウォッチドッグタイマは独立クロックでカウントダウンし、アプリケーションが健全である限り一定間隔でキックされる。タイムアウト時はNMI、割り込み、ハードリセット、外部ピン出力などで復帰経路を起動する。目的は「検出しにくい停止状態からの自動復帰」であり、人手介入なしに最短時間でサービス継続性を確保する点にある。

実装形態(内蔵WDTと外付けWDT)

MCU内蔵型は部品点数を減らし易いが、共通原因故障(同一電源・同一クロック)に弱い。外付けの監視ICは独立クロック・独立リセット経路を持ち、CPU暴走やクロック停止時でも動作しやすい。高ASIL/高SILでは外付け採用や二重化が検討される。選定ではタイムアウト範囲、ウィンドウ機能、リセット出力保持時間、供給電圧範囲、自己診断有無を確認する。

ウィンドウWDTの意義

ウィンドウ型は「早すぎるキック」もエラーとみなすため、意図しないループ内での連打やISR内誤キックを抑止できる。これにより診断カバレッジが向上し、健全性の時間的一貫性をチェックできる。

タイムアウト設定とクロック源

タイムアウトは「最悪応答時間(WCET+遅延)×安全余裕」で設計する。短すぎれば誤リセットが増え、長すぎれば回復が遅れる。一般に監視対象周期の3〜10倍が目安である。クロックは内部RCや独立発振器を用い、温度・電圧・経年によるばらつきを見込んだマージンを取る。外付けの場合は独立クロックにより共通原因故障を低減できる。

キック戦略(健全性の証跡)

単純にメインループ末尾でキックする設計は、ループが意図せず回っているだけの不具合を見逃す恐れがある。望ましい方法は、重要タスク群が周期内に「アライブビット」を報告し、スーパーバイザタスクが全タスク完了を確認した時のみウォッチドッグタイマをキックする方式である。I/O監視、通信ハートビート、キュー滞留長、メモリ余裕率など複合条件を満たすことをキック条件に含めると、実効的な監視性が高まる。

リセット動作とシステム回復

タイムアウト後はリセット線が一定時間アサートされ、ブートローダ→自己診断→アプリ復帰の順で再始動する。リセット原因レジスタを読み、WDT起因であることをログへ永続化(EEPROM/FRAM/ファイル)し、発生回数が閾値を超えた場合はセーフモード起動や機能制限を行う。電源監視IC(BOR/Supervisor)との併用で、ディップやノイズ時の不完全起動を避ける。

RTOSとの連携

RTOS環境では監視専用スレッドを周期起動し、各タスクからのキック可否フラグを集約する。優先度逆転やスタベーションがあると健全でもキック不能になるため、スケジューリングとミューテックス設計を含めて整合させる。タイマティックに依存する場合は、RTOSタイマ停止時でも動く独立WDTを推奨する。

検出できる故障・限界

ウォッチドッグタイマは無限ループ、デッドロック、優先度逆転による停止、スタック破壊による復帰不能などを間接検出できる。一方で「誤った状態だが周期的にキックされてしまう」論理バグは未検出となりうる。ウィンドウWDTや機能監視(レンジチェック、シーケンスチェック)を組み合わせ、診断カバレッジを高める。

EMC・電源異常と併用設計

ESD/EFT/サージなどのEMCストレスや電源ディップはCPU暴走の典型原因である。リセットIC、電源監視、適切なデカップリング、リセットラインのプルアップ/パルス幅整合、クロック配線のノイズ耐性設計を行い、ウォッチドッグタイマは最終防護として配置する。試験ではIEC 61000-4-2/4-4/4-5相当の印加時に自動復帰とログ保存が機能するか評価する。

よくあるアンチパターン

  • ISR内でのキック(障害時でも割り込みだけ動作し、誤って延命する)
  • 起動直後の長時間ブロッキング処理でタイムアウト(初期化段階の暫定延長や早期キック条件が必要)
  • メインループ末尾固定のキック(健全性証跡にならない)
  • WDT停止APIの乱用(開発便宜が本番に残る)
  • リセット原因の未記録(現場で再現不能となる)

テストと故障注入

無限ループ挿入、割り込み禁止保持、タスク停止、通信断、メモリ圧迫、CPU負荷最大化などで意図的にキック不能状態を作り、タイムアウトまでの時間、再起動所要時間、ログの一貫性、セーフモード動作を検証する。外付けWDTではクロック停止・配線断の試験も行い、共通原因故障対策の有効性を確認する。

規格・安全要求との関係

機能安全(ISO 26262、IEC 61508 等)や医療・産業規格では、独立性・診断カバレッジ・故障注入試験・証跡管理が求められる。高要求水準では外付けウィンドウWDT、二経路リセット、ログの耐タンパ性、起動自己診断(RAM/FLASH/クロック/CRC)を併用する。アーキテクチャ上の独立性が不足する場合は安全目標の割当や故障率解析を再評価する。

設計チェックリスト

  • 最悪応答時間に基づくタイムアウト設定(マージン含む)
  • キック条件=多要素健全性(タスク完了、I/O範囲、キュー遅延)
  • 起動時・更新時の一時的例外処理(ブートウィンドウ)
  • リセット原因の永続化としきい値制御(セーフモード遷移)
  • EMC・電源監視・リセットICとの整合
  • 故障注入テスト計画と試験記録の保持

以上の原則を満たすことで、ウォッチドッグタイマは単なる非常停止装置から、可用性と安全性を両立させる中核機能へと昇華する。プロダクトのライフサイクル全体(設計・実装・検証・現場運用)にわたり、計画的に運用・評価し続けることが重要である。

コメント(β版)