前回の記事でウォッチドッグタイマーについて書きましたが 関連項目です
・設定をEEPROMに書き込む
・状態をバックアップされるRAMに書き込む
とありましたが、
まずは違いについての解説です
EEPROMには書き込み回数の上限があるので、
デバイスの劣化を考えると頻繁に
書き込みを行っていると、いつか書き込み不可能になります。
身近なもので設定を保存しているのもとしては、スマートフォンとか、ルーターが挙げられます。
どちらも常時電源を入れたままで使われることが多いものです。
1.ルーターの場合
・ファームウェアー
・設定
等がEEPROMに書き込まれて保存されているために電源を入れなおした時に、
同じ状態で
動作できるようになっています。
2.スマートフォンの場合
もうすこし詳しく、書いてみます
・ブートローダー
・OS
・ディスク(フラッシュメモリー)上のOS、アプリケーション、データ
スマートフォンの場合はフラッシュメモリー上にファイルシステムを構築して、
その上に
主にUnix系のOSを走らせていることが多いです。
android も iPhone も どちらも そうですね。
フラッシュメモリーの耐久性もあがってきているのと、物理ブロックに書き込みエラーが発生するようになった時に代替ブロックを割り当てる論理ブロックを使うようになってきているので出来ることだと思います。
一見すると、無制限に書き込みを行っているようですが、OSだとバージョンアップした時に書き込まれその後は、読み込みだけです。
ログファイルなども、何かのイベントが発生した結果だけなので、有限です。
製品のライフサイクルを考えて、上限の書き込み回数をしっかりと把握した状態でなら、フラッシュに
現在のシステムの状態を全て保存しておくことも可能です。
ただし、やはり性能が向上したといえども、フラッシュには書き込み回数に上限があります。
そこのところが RAMへのバックアップと違うと言う事を意識して置いてください。
データーシート等を見ていただければ、上限書き込み回数が書かれていますので、一度目を通してみてください。
組み込みシステムに関する事柄を、ソフト屋さん、ハード屋さん 両方に役に立つようにという視点で書いていければと思います。 元々はハードに興味があったのですが、いつのまにかソフト屋さんになって、 ハードとソフトの両方の知識が必要な分野の仕事を、手がけていました 細かい設定はこれからですが、とりあえず書き始めてみます 2012/05/31 制御系とも言いますね、いくつかブログを書いてると、更新がなかなか大変ですが、ぼちぼちと続けていきます。 2012/06/07 他のブログでは 一人称 風夢を使っているので、ここでも風夢を使うことにします 2012/06/11
2012年11月24日土曜日
2012年11月2日金曜日
組み込みシステム OS無し ウォッチドッグタイマー
割り込み処理の話を思いつきで書いていたら行き詰ったままなので、いったん放置して
違うことについて書いてみます。
組込みシステムでは ”フェールセーフ”になるようにシステムを設計します。
また別途書くことがあるかもしれませんが、
・データのバックアップ(主にRAM)
・設定のバックアップ(EEPROM)
・電圧監視によるリセット
・ウォッチドッグタイマーの利用
それぞれが関係してくるので、
全部を一気にとは行きませんが今回はウォッチドッグタイマーに 関して書いてみます。
ハード回路としての、ウォッチドッグタイマーもあれば、CPU内蔵のウォッチドッグタイマーも あります。
処理を簡略化してC言語のソースで表すと
void main() {
while(1) {
func1();
func2();
func3();
clear_wdc(); // ウォッチドッグタイマーのクリア処理
}
}
こんな感じです、どこかの処理に異常が起きた場合にシステムが完全に停止してしまわないように するために、使用されます。
割り込みの優先順位はかなり高く設定されます (システム全体の健全な動作に関わるため)
その割り込み処理内で、何らかの処理を行いますが、システムをリセットしてしまうこともあります。
ウォッチドッグの処理の割り込みの関数にジャンプしてきた場合は、何らかのトラブルが システムに起きていることになります。
多くの場合は、設計不良、想定外の多重割り込み、場合に寄れば電気的なトラブルの可能性もわずかにありますが、システムごとに違います。
いくつかの条件が整えば、WDT割り込みが発生したかどうかを確認できます
・バックアップ可能なメモリーに発生した情報を格納、更新できること
・その情報に何らかの形で外部からアクセスできること
例えば
・EEPROMに書き込んでおいてJTAG接続のICEで確認する
・1次電池、2次電池でバックアップされている、RAMに書き込んでおいて、
サービスコンソールで 参照する
・あるいは、システムログとして保存しておいてメール、WIFIでの転送、
SDカードへの書き込み等 方法としては幾つも考えられます
関連する項目があるのでさらっとだけ説明して終わりにします。
2013/09/27 何故だか、改行などが変になっていたので修正しました。
組込みシステムでは ”フェールセーフ”になるようにシステムを設計します。
また別途書くことがあるかもしれませんが、
・データのバックアップ(主にRAM)
・設定のバックアップ(EEPROM)
・電圧監視によるリセット
・ウォッチドッグタイマーの利用
それぞれが関係してくるので、
全部を一気にとは行きませんが今回はウォッチドッグタイマーに 関して書いてみます。
ハード回路としての、ウォッチドッグタイマーもあれば、CPU内蔵のウォッチドッグタイマーも あります。
処理を簡略化してC言語のソースで表すと
void main() {
while(1) {
func1();
func2();
func3();
clear_wdc(); // ウォッチドッグタイマーのクリア処理
}
}
こんな感じです、どこかの処理に異常が起きた場合にシステムが完全に停止してしまわないように するために、使用されます。
割り込みの優先順位はかなり高く設定されます (システム全体の健全な動作に関わるため)
その割り込み処理内で、何らかの処理を行いますが、システムをリセットしてしまうこともあります。
ウォッチドッグの処理の割り込みの関数にジャンプしてきた場合は、何らかのトラブルが システムに起きていることになります。
多くの場合は、設計不良、想定外の多重割り込み、場合に寄れば電気的なトラブルの可能性もわずかにありますが、システムごとに違います。
いくつかの条件が整えば、WDT割り込みが発生したかどうかを確認できます
・バックアップ可能なメモリーに発生した情報を格納、更新できること
・その情報に何らかの形で外部からアクセスできること
例えば
・EEPROMに書き込んでおいてJTAG接続のICEで確認する
・1次電池、2次電池でバックアップされている、RAMに書き込んでおいて、
サービスコンソールで 参照する
・あるいは、システムログとして保存しておいてメール、WIFIでの転送、
SDカードへの書き込み等 方法としては幾つも考えられます
関連する項目があるのでさらっとだけ説明して終わりにします。
2013/09/27 何故だか、改行などが変になっていたので修正しました。
登録:
投稿 (Atom)