ウォッチドッグタイマによるIoTシステム堅牢性の強化
DigiKeyの北米担当編集者の提供
2016-12-29
モノのインターネット(IoT)を設計するとき、セキュリティが重要なのは当然のことですが、開発中のシステムに障害が発生したときに人手による介入なしに回復できるだけの堅牢性を持つことの重要性は、しばしば見過ごされています。 この堅牢性を保証するため、注目されることの少ないウォッチドッグタイマ(WDT)について、設計者は十分に検討する必要があります。現在のWDTには、単純なタイマから、スマートな統合ウォッチドッグまでのさまざまな形態があります。
この記事では、内部および外部WDTの基本について復習してから、最新のWDTデバイスのいくつかを紹介し、それらを使用してシステムの堅牢性を保証する方法について解説します。
IoTにおいてウォッチドッグタイマが重要な理由
数十億ものIoTデバイスが現場に展開されている現状では、何か問題が発生したとき、技術者がそれらのデバイスに対して迅速なサービスを行うことは不可能です。 このため、IoTシステムは人手による介入を必要とせず、自分自身で障害を検出し、回復できる必要があります。
ウォッチドッグには多くの異なる形状とサイズがありますが、一般には単純なタイマ、ウィンドウタイマ、スマートウォッチドッグに分類できます。 ウォッチドッグには、マイクロコントローラの内部にハードウェアおよびソフトウェアとして存在するもの、外部にハードウェアとして存在するもの、さらには独立したマイクロコントローラとして存在し、ハードウェアとソフトウェアの両方のコンポーネントで構成されるものもあります。 どのようなウォッチドッグソリューションを使用する場合でも、最終的な目的はシステムを監視し、回復させることです。 この目的のため、各ウォッチドッグには独自の特性および設計上の課題があり、開発者は堅牢なIoTシステムを設計するために、それらを考慮する必要があります。
内部ウォッチドッグの基礎
内部ウォッチドッグタイマはハードウェア周辺機器で、単独のマイクロコントローラのほとんどに搭載されており、オンボードの周辺機器やシステムクロックと連携できます(図1)。 デフォルトでは、内部ウォッチドッグタイマはディスエーブルされており、開発者はウォッチドッグをイネーブルするまでの期間をあらかじめ設定する必要があります。 ソフトウェアがロックした場合、またはハードウェアの障害によりソフトウェアの実行に影響が及んだ場合、ウォッチドッグタイマが時間切れになり、マイクロコントローラを強制的にリセットします。 この処理によってエラーがクリアされ、マイクロコントローラはシステムを再初期化できるようになります。

図1:Texas Instruments製のMSP430G2210など、ほとんどのマイクロコントローラにはウォッチドッグタイマが搭載されており、ソフトウェアがロックしたときにプロセッサをリセットできます (画像提供:Texas Instruments)
内部ウォッチドッグタイマは理論上非常に単純ですが、正しく実装するには十分な検討が必要です。 たとえば、このウォッチドッグ用に開発されるソフトウェアは、ウォッチドッグタイマを単純にクリアしてはいけません。 ソフトウェアはウォッチドッグをクリアする前にシステムのチェックを実行し、すべてのタスクとハードウェアが正しく動作していることを確認します。
内部ウォッチドッグソリューションを開発するときは、開発者が従うべきいくつかのヒントがあります。
- どのような理由でも、ウォッチドッグをディスエーブルしてはいけません。 実際のところ、マイクロコントローラを選択するときは、一度イネーブルされたウォッチドッグは絶対にディスエーブルできないことを確認します。
- ソフトウェアの機能チェックから独立して、定期的にウォッチドッグをクリアしてはいけません。
- ウォッチドッグタイマが、独立のウォッチドッグであることを確認します。 独立のウォッチドッグには別のクロックがあるため、システムクロックが停止した場合にも検出できます。
- ウィンドウウォッチドッグの機能を持つウォッチドッグを使用します。 これらのウォッチドッグは、クリア可能になるまでの最小限の時間が必要です。 ウィンドウの開始前に試行が行われた場合、ウォッチドッグはシステムをリセットします。 これによって、ソフトウェアの暴走によりウォッチドッグタイマがオーバーライドされることを防止できます。
内部ウォッチドッグは堅牢な組み込みシステムの構築に向けた適切な手順ですが、それだけでは十分に堅牢なシステムを完成できません。 実際に高い堅牢性を実現するため、開発者は外部ウォッチドッグ検討する必要があります。
外部ウォッチドッグによる堅牢性の強化
開発者がどれだけ注意深く内部ウォッチドッグを実装しても、内部ウォッチドッグですべての問題を解決可能なわけではありません。 多くの実装には欠点があります。例として、システムクロックの共有や、ディスエーブルオプションの存在が挙げられます。
システムが現場において単独で動作する必要があるとき、外部ウォッチドッグの使用には次のような多くの利点があります。
- システムのハードリセットを実行し、マイクロコントローラの電力サイクルが行われたことを保証します。これによって、内部周辺機器の電力サイクルも行われます。
- ウォッチドッグを、マイクロコントローラの発振器回路から分離します。
- システムを監視するための、完全に独立したプロセスを提供します。
これらの要素はすべてシステムの堅牢性に寄与しますが、外部WDTの使用にはいくつかの欠点もあります。 たとえば、ICの追加によりハードウェアのコストが増加することや、システムがさらに複雑化することなどです。 ただし、後で説明するように、あらゆる条件を考慮すれば、これらは小さな欠点に過ぎません。 単純で堅牢な外部ウォッチドッグ回路を設計する方法について考えてみましょう(図2)。

図2:マイクロコントローラの動作と状態を監視する外部ウォッチドッグ回路の例で、これ自体に独自の内部ウォッチドッグタイマが存在します (この図はDigi-KeyのScheme-it®を使用して作図されたものです)
この回路は、独自の内部ウォッチドッグタイマを実行するマイクロコントローラと、外部のウォッチドッグ回路で構成されます。 この例で使用されているウォッチドッグ回路はTexas Instruments製のTPL5010 Nano-powerシステムタイマで、ウォッチドッグ機能が備えています。 外部ウォッチドッグには出力リセットピンがあり、マイクロコントローラのリセットピンへ直結されています。 WAKEピンがトグルされたとき、TPL5010はマイクロコントローラがDONEピンにハートビートを発行して応答することを期待します。 マイクロコントローラが応答しない場合、リセットピンがLOWにプルされ、マイクロコントローラはリセットされます。 ウォッチドッグ期間はR2の値により設定されます。
このような単純で低コストの回路を設計に追加することは、システムを堅牢にするための非常に優れた方法です。 開発者は、基板の完成を待たずにテストを開始できます。 TPL5010開発キットは他の開発キットと簡単に組み合わせてセットアップでき、ハードウェアが利用可能になるよりもはるかに前にウォッチドッグの機能をテストできます(図3)。

図3:Texas Instruments TPL5010開発ボードのコストは30ドル未満で、ヘッダをテスト用にマイクロコントローラへ接続するだけでなく、TPL5010の構成や電流消費の測定にも使用できます (画像提供:Texas Instruments)
外部ウォッチドッグを選択するとき、開発者は次のようないくつかの要因を検討する必要があります。
- 最小および最大タイムアウト時間
- ウィンドウウォッチドッグのサポート
- 電流消費
- ピン数の最小化
- 電位障害モード(存在する場合)
スマートウォッチドッグソリューションの設計
IoTデバイス用の最高段階のウォッチドッグは、スマートウォッチドッグです。 スマートウォッチドッグはスーパーバイザとなるマイクロコントローラで、基本的なハートビート監視に加えて、システムの通信も監視できます(図4)。 マイクロコントローラがインターネットへの応答を停止しながら、外部ウォッチドッグのクリアは正しく行う状況が発生することがあります。 この状況が発生したとき、インターネット上でコマンドを送信し、マイクロコントローラをリセットできます。 スマートウォッチドッグは、UARTの送信および受信ラインなどの通信ライン上で、システムの再起動を指示する特定のコマンドを監視できます。
この例では、マイクロコントローラとスマートウォッチドッグの両方に、通信モジュールが接続されています。 スマートウォッチドッグには、外部のTPL5010も存在することに注目してください。 これは、スマートウォッチドッグはソフトウェアを実行するマイクロコントローラであり、堅牢性を実現するには専用の外部ウォッチドッグが必要なためです。

図4:スマートウォッチドッグのシステムアーキテクチャの例 (この図はDigi-KeyのScheme-itを使用して作図されたものです)
スマートウォッチドッグを設計するとき、開発者は次のようないくつかの重要な要因を検討する必要があります。
- ハートビートの特性
- 入力/出力の可用性
- コスト
- 利用可能なフラッシュメモリ
- エネルギー消費
- 障害モード
- 物理的なフットプリントの最小化
今日では、優れたスマートウォッチドッグとして使用可能なマイクロコントローラがいくつか利用できます。 まず、Texas Instruments製のMSP430G2xxには2kBのフラッシュと4つのI/Oラインが搭載されています。 このマイクロコントローラには、非常に単純なスマートウォッチドッグ実装を作成するために十分なコーディング空間とピン数があります。
通信の監視を必要とするアプリケーションでは、もう少しI/Oラインとメモリが多い方が便利です。 このような場合、MSP430G2231IPW14RまたはMSP430G2553IPW20Rが候補として適切です。
これらを前提として、ウォッチドッグを真に「スマート」にするのはスマートウォッチドッグソフトウェアであり、開発者は十分な注意を払って数行のコードを作成する必要があります。 コードを複雑にする必要はありません。実際のところ、単純なコードの方が適切です。 小さく、単純で、証明可能なソフトウェアが、ウォッチドッグには最適です。 TPL5010評価モジュールのドキュメントに基づいた、MSP430用の単純なコードの例を次に示します(コードリスト)。
static volatile bool Reset = true;
void main(void)
{
WDTCTL = WDTPW | WDTHOLD; // ウォッチドッグタイムを停止する
P1OUT |= BIT0; // P1.0をHIGHに設定する
P1DIR |= BIT0; // P1.0を出力方向に設定する
P1DIR &= ~BIT1; // P1.1を入力方向に設定する
P2IES &= ~BIT0; // P2.0のLo/Hiエッジ
P2IFG &= ~BIT0; // P2.0のIFGがクリアされる
P2IE |= BIT0; // P2.0の割り込みがイネーブルされる
while(1)
{
__delay_cycles(500000); // 遅延を設定する
// trueの場合、ハートビートが受信されていない
if(Reset == true)
{
// ハートビートが受信されていないため プロセッサをリセットする
P1OUT &=~ BIT0;
__delay_cycles(100); // 遅延を設定する
P1OUT |= BIT0;
Reset = false;
}
else
{
Reset = true;
}
}
}
// ポート2の割り込みサービスルーチン
#pragma vector=PORT2_VECTOR
__interrupt void Port_2(void)
{
P2IFG &= ~BIT0; // P2.0のIFGをクリアする
P2IE |= BIT0; // P2.0の割り込みがイネーブルされる
Reset = false;
}
コードリスト:マイクロコントローラのハートビートを監視するMSP430ソフトウェアの例。 予測される時間内にハートビートが受信されない場合、マイクロコントローラはリセットされます。 (提供元:Texas InstrumentsのSNAU173アプリケーションノートを元に作成)
このコード例は、スマートウォッチドッグが初期化されてから、特定の時間だけ待ち、その後でマイクロコントローラを再起動すべきかどうかをチェックすることを示しています。 スマートウォッチドッグはマイクロコントローラに障害が発生したと想定し、Reset変数をtrueに設定します。 ハートビートパルスを送信するかどうかはマイクロコントローラ次第で、送信された場合には割り込みがトリガされ、Reset変数はfalseに戻されます。 このサンプルコードに、次のような多くの機能を追加できます。
- ウィンドウウォッチドッグ
- 低消費電力状態への移行
- スマートウォッチドッグを監視しているTPL5010のクリア
- 通信ラインの監視
- リセットが何回発生したかの追跡
堅牢な設計を保証するために本当に必要な機能は、どのようなものでも追加できます。
結論
IoTのセキュリティは重要ですが、開発者はシステムの堅牢性にも十分に注目すべきです。 この目的のため、IoTにおいてウォッチドッグは重要な役割を果たします。これらのデバイスは人間がアクセスできないような遠く離れた現場に展開されるだけでなく、問題なくほぼ年中無休で動作することが期待されるためです。 内部ウォッチドッグを使用すると最小限の回復機能を実現できます。これに対して外部ウォッチドッグやスマートウォッチドッグに多少のソフトウェアを追加すると、堅牢で回復可能な設計への道を開くことができます。
免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、DigiKeyの意見、信念および視点またはDigiKeyの公式な方針を必ずしも反映するものではありません。


