Watchdog
割り込みサービス ルーチンを含む埋め込みコードのどこにリセットを配置する必要がありますか?
メインループで、または割り込みサービスセクションで?
アーキテクチャと要件によって異なります。
一般に、ウォッチドッグタイマーは、ソフトウェアを介してタイムアウト値を設定するマイクロコントローラまたはプロセッサの一部である一種のハードウェアです。プロセッサがハングするか、何らかのデッドロック状態が発生し、ウォッチドッグに設定されたタイムアウト値内に回復しない場合、プロセッサはリセットされます。そのため、ウォッチドッグ タイマー ハードウェアは、プロセッサのリセット信号とリンクされます。これは、ウォッチドッグ リセットのリセット ベクターに対応するデバッグ ログ/ブレークポイントを設定することでも確認できます。
また、一部のアーキテクチャでは、ウォッチドッグ タイマーが個別の割り込みベクトルを持つことができるため、ハードウェアの完全なリセットではなく、選択レベルのリセットのみを実行する個別の wdt/特殊ベクトルが存在する可能性があることに注意してください。
そのため、WDT の使用はアーキテクチャと要件によって異なります。
一部のアーキテクチャでは、WDT はバックグラウンドで優先度が低い場合があります。バックグラウンドで実行できない場合は、デッドロックやハングなどの前述の他のシナリオとは別に、特定の予期しない条件を明示的にトリガーする必要がある場合があります。そのため、メインとは別のスレッド / isr / 呼び出しとして実行することは、アーキテクチャと要件によって異なります。