回答:
一部の製品は、メーカーが決定するか、IEC 60730-1や米国でまだ使用されている古いUL1998などの国際的な安全基準を満たすために、安全要件を満たす必要があります。所定のマイクロコントローラーの内部ウォッチドッグ機能は、使用するのに適切な場合とそうでない場合があります。場合によっては、外部WDTを内部WDTと組み合わせて使用できます。
TIのHerculesシリーズなどの特定のマイクロコントローラは、安全性が重要なシステムアプリケーションを非常に重視しており、厳しい要件を満たす可能性が高くなりますが、コスト重視のアプリケーションには適さない場合があります。
通常、WDTは、財産に壊滅的な損害を与えたり、生命を傷つけたりする障害の可能性を減らすための多くの方法の1つです。MCUメモリへの予期しないアクセスを検出するメモリ保護や未使用メモリからのプログラムフェッチなど、その他の機能は通常、WDTと組み合わせて使用されます。
安全性が重視される機能を実行する安価な製品の例には、自動車サブシステム、ガレージドアコントローラー、および炉、乾燥機、給湯器で使用されるガス(天然ガスまたはプロパン)点火コントローラーがあります。もちろん、多くの医療および航空宇宙製品も安全性が重要ですが、冗長性や他のアプローチのための十分な余地があるかもしれません。場合によっては、簡単に到達できる安全な状態が存在しない場合があります。たとえば、飛行機の中です。
理想的には、ウォッチドッグタイマーは非常にシンプルで、MCUに依存せず(たとえば、独自のクロックソースとクロックモニターを備えている必要があります)、ソフトウェアエラーによって損傷を引き起こすよりも長い時間に(ソフトウェアによって)設定できません。また、タイムアウトまたはウィンドウ方式のいずれかで、時間どおりに「かわいがられない」場合、システムが安全な状態になり、頻繁なリセットが検出されます。たとえば、熱制御アプリケーションのWDTは数秒間に設定される場合があります。これは、マイクロコントローラがその時間ロックした場合に損傷が発生しないためです。
WDTは、信頼性と安全性に対するシステムレベルのアプローチの一部として最も役立ちます。
ウォッチドッグタイマーは、バグのある最先端のマイクロコントローラーのハードウェアバグから保護できます。最近使用した有名ブランドのI / Oピンには、時々割り込みを逃したり、正しく起動しなかったり、統合ウォッチドッグがシステムを既知の良好な状態にリセットできないことがありました。
これは、長期間の信頼性テストを開始するまで現れませんでした。また、マイクロコントローラを変更するよりも外部ウォッチドッグを追加する方が簡単でした。
PCBに複数のICがある場合、すべてを確実に起動させるために、外部リセットICまたは電圧モニターも必要になる場合があります。これらの多くは、ウォッチドッグとしても機能します。
内部ウォッチドッグの内部クロックは、実際には他のすべてのクロックから独立しており、常に正常に動作していると主張するのは困難です。
したがって、認証のためには、通常、ボードに外部ウォッチドッグを配置して言うのがはるかに簡単です:ウォッチドッグがあるように見える、それはその間隔でMCUによってトリガーされる必要があります。これは故障までの時間よりも短いため、デバイスは安全です定義したとおり。
コメントの一部に対処するには:
「そして常にそうあるべきように走っている」-良い点。ウォッチドッグチップを使用してそのデータシートを参照するよりも、あらゆる状況下でソフトウェアが内部ウォッチドッグを正しく初期化することを証明するのは難しい場合があります。
これは通常、認証機関に提示する障害挿入テストによって証明されます。したがって、初期化が発生する場所、およびウォッチドッグのトリガーが発生する場所のコードを表示します。彼らは通常、特定の時間が経過した後にウォッチドッグのトリガーが停止されるようにコードを変更し、コントローラーが正しくリセットされるかどうかを確認するように求めます。
または、誤って内部ウォッチドッグを無効にするバグがコードに含まれていないことを証明します。
少なくとも一部のコントローラーでは、ウォッチドッグは独立と呼ばれ、独自のクロックソースを持ち、ソフトウェア手段で無効にすることはできません。コントローラーのリセットのみがウォッチドッグを無効にします。少なくとも理論的には、ソフトウェアで停止できないことを示すのは簡単ですが、クロックが本当に独立しており、EMIで停止しないことを証明するのは困難です。
または、コードがワイルドに実行されないことを証明するために、外部ウォッチドッグをできるだけ速く連続的にリセットします。問題が解決しました。;-)
その場合、一定の間隔でトリガーする必要があるウィンドウウォッチドッグを使用します。トリガーに失敗すると(トリガーが多すぎるか少なすぎる)、回路がリセットされます。私が使用しているSTM32には内部ウィンドウウォッチドッグがありますが、メインクロックから派生したPCLK1から実行されるため、独自のクロックソースを持つ外部ウォッチドッグほど有用ではないと思います。
または、一部の天才はウォッチドッグサービスルーチンをタイマーISR内に配置しないため、メインコードはクラッシュする可能性がありますが、割り込みはウォッチドッグを完全に起動およびサービスし続けます
それは確かに真実ですが、願わくばレビューがその天才を彼の椅子に戻すことを願っています-しかし、私が始めたとき、それは私の最初のアイデアでもありました:D。私が参加した認証プロセスの間、彼らは常にソフトウェアのウォッチドッグ部分を見ていた。
マイクロコントローラに組み込まれたウォッチドッグには、別の外部ウォッチドッグでは不可能な方法で障害が発生する可能性があるという特定の特性があります。
たとえば、一般的な設計では、低電力RCオシレーターから実行されるウォッチドッグタイマーを使用します。その発振器は故障する可能性があります。多くの場合、発振器ではなくコンデンサ放電に基づく外部ウォッチドッグがマイクロコントローラーをリセットする可能性があります。
もう1つの理由は、外部ウォッチドッグがより堅牢になる可能性があることです。マイクロコントローラは特定の電圧範囲でのみ確実に動作する可能性があり、複雑なデバイスであると、独自の内部ウォッチドッグを無効にする方法でラッチアップする可能性があります。外部ウォッチドッグは、許容可能な供給範囲が広く、電気ノイズを受けたときに問題が発生する可能性が低くなります。
多くの場合、外部ウォッチドッグははるかに広い範囲のタイムアウト値も提供します。私がよく使用するマイクロコントローラーであるXMEGAの最大タイムアウトは約7秒です。1つの製品について、タイムアウトが2時間の外部ウォッチドッグを追加しました。それにより、数秒に1回ではなく、1時間に1回マイクロコントローラーを起動できるようになり、バッテリー駆動のデバイスの消費電力が削減されました。
外部ウォッチドッグには、タイマーや電圧監視/リセット制御などの複数の機能が含まれることがあります。繰り返しになりますが、これらもマイクロコントローラの組み込みシステムよりも低電力になる可能性があります。
外部ウォッチドッグのもう1つの興味深い利点は、マイクロコントローラ以外のデバイスをリセットするために使用できることです。たとえば、電圧レギュレータのイネーブルピンを制御し、回路全体の電源を切断して、複数のデバイスを一度にリセットします。いくつかの簡単なロジックを使用して、複数のソースからのウォッチドッグリセット信号を組み合わせて、ウォッチドッグが複数のデバイスを継続的にリセットすることを要求できます。
この点で、ウォッチドッグは、MCUにある他の組み込みペリフェラルと実際に違いはありません。MCUにはタイマー、RTC、ADC、EEPROM、およびリセットコントローラーが付属していますが、これらの機能はすべて個別のICとしても存在します。利用可能な組み込みブロックが要件を満たさない場合は、外部ブロックを使用する必要があります。または、適切なブロックをすべて備えたMCUを見つけようとすることもできますが、ブロックは存在しないか、コードを移植するのに費用がかかりすぎたり、移植が難しい場合があります。
ウォッチドッグはタイマーであり、ICが一定期間入力パルスを失ったときに出力をアクティブにします。
それはビルディングブロックですあり、あらゆるアプリケーションに使用できます。
そのため、これらは任意のアプリケーションで使用できます。たとえば、 フェイルセーフモードます。マイクロコントローラのクロックに障害が発生した場合、一部の重要な出力を無効にすることはできません。
外部ウォッチドッグは、マイクロコントローラーの複雑なクロックドメインとは関係ありません。 アナログRC充電タイミングまたは内部クロックがあります。
放射線のデジタル回路は、電荷がフリップフロップに当たると出力をトリガーする場合があります。しかし、一部のアナログ回路はコンデンサに電荷を統合しているため、より安全であり、統合すると安全です。