マイコンの暴走と対策
● マイコンの停止問題
静電気放電や雷からのパルス・ノイズなど多種多様な原因でマイコンを用いた製品、システムは停止する事が有ります。これは内蔵されているマイコンに組込まれているソフトウェアの実行が正常にできなくなる事が原因です。
● 暴走状態
この異常状態では外からは、マイコンは止まって見える事が多いので、フリーズした、暴走している、止まった、デジ切れを起こしている、と言われています。ここではマイコンのCPUは設定された順番にソフトウェアを実行せず、と言ってもソフトウェアの実行が停止する訳ではないので、ソフトウェアとして設定されていない所や順番を無視して実行する事から、何を実行しているか分からない実行を継続している状態を指します。
そこで、まとめて「暴走」として説明します。製品やシステムが止まられては困るので対策は必須の事項です。ところが厄介なのは、暴走しても何もしなくても元の正常な実行状態に数パーセントですが戻る場合もあります。と言っても、これを頼りにはできないので何等かの対策が行われるのが普通です。
● ウィッチドッグ・タイマー パッシブな暴走防止方法
この対策としては、ウォッチドッグ・タイマーによるマイコンのリセットが一般的であり、通常、唯一の解決方法です。
このウォッチドッグ・タイマーによる方法とは、マイコンのCPUが出鱈目のソフトウェアを実行していて予定されている順番での実行がされない事を利用して、専用のタイマーが正しい手順であれば初期化されるのにたいして異常状態では初期化がされない事を利用し、タイマーが設定されている時間になると、全体をリセットする
● デバッグされない暴走対策
マイコンの暴走が問題になっても、システムの製作現場では所要の機能の実現とデバッグに集中しているのが普通で、暴走はしないもの、として開発は進められます。
製品が完成に近づくとウォッチドッグ・タイマーを有効にしてみる程度で暴走に対するデバッグは不十分な場合がほとんどです。この原因としてデバッグ環境では、ノイズ等によりマイコンの暴走と同じ様な事を再現するのが困難な事もあります。
● アクティブな暴走対策
これに対して当社は従来から、アクティブな暴走対策を研究してきました。
● マイコンの停止問題をパッシブからアクティブ対策へ
マイコンの異常停止対策と言えば、ウォッチドッグ・タイマーが唯一の方法と言われてきています。
しかし、この方法は有効度が100%どころか、一般に、60〜70%と言われています。
マイコンが暴走してもウォッチドッグ・タイマーが動作しな場合が多々有ります。
ウォッチドッグ・タイマーは、マイコンのソフトウェア実行が正常時には周期的に通過するソフトウェアにより初期化され、タイム・アップしません。
しかしソフトウェアの実行が異常になると周期的に通過するソフトウェアが実行されない事で初期化されなくなり、暫くしてタイマーの設定時間になると動作してリセットを発行します。
そしてマイコン・システムを初期化する事で回復します。
これはウォッチドッグ・タイマーが初期化されない、という間接的な事象を利用したパッシブな対策です。
当、リバイブ・システムが提唱し提供するのは、ソフトウェア実行の異常状態を、システムの機能として探しに行き、異常を検知したら、システムに合った対処をするという、アクティブな対処方法です。
同時に、人工的に、マイコンを暴走させて回復度合いを検査するソフトウェアの作り方も紹介しています。
何故、アクティブな暴走対策が必要なのでしょう?そしてソフトウェアのパッケージではなく、実現する方法を有料にてお教えするのでしょうか?
その理由は、マイコンの応用が多岐に渡り、単一な回復方法ではカバーしきれないからです。
機能安全が必須でなくても、フェール・セーフとしておく必要があればウォッチドッグ・タイマーによる初期化では対応できません。
更に何がセーフなのか?も多種多用です。
モーターも急停止させて良ければ初期化もできますが、エラー時にはスローダウンさせる、としただけで初期化ができなくなります。
個別対応するには単一のパッケージにはできません。
更に、数十万種有ると言われている全てのマイコンへ、単一の方法では対応できないからです。