組み込み系(車載系)の質問です。
マイコンのプログラムにて、ウォッチドッグタイマ
の仕様検討をしています。
通常ウォッチドッグはマイコン暴走時の検知として、
Resetを発生させるような作りになっていると思うのですが、
なぜ暴走したかわからないまま、単純にResetを
かけて、何もなかったように再び起動してよいものか?
と疑問に感じております。
(例えば、すでにハード的に異常が発生しており、マイコンの
Resetをかけてもある事象が発生すると必ず暴走してしまい。
それが原因で恐ろしい事態へとつながる・・等)
このような状態を防ぐためにも、何か定石的な考え方は
ありませんでしょうか?例でも結構ですので、ご教示
頂きたく思っております。
■例(自分なりに検討してみました)
例えばウォッチドッグタイマ割り込みを使用して、
割り込みルーチン内でソフトウェアリセットを掛ける。
その時同時に E2PROM等にウォッチドッグタイマ割り込み発生
回数を記憶しておき、Resetスタート後この発生回数を確認し、
ある回数を超えた時点で、エラーモードへ遷移する。
No.4ベストアンサー
- 回答日時:
かなり昔の話で間違いも多くて恐縮なのですが、交換器などの顧客の利用状況のデータが最重要なシステムではシステムのリセットにグレードを設けております。
かなりうろおぼえなのですが、どのようなグレードかと申しますと
0.5:現状発生しているイベントを保障する(新規のイベントは棄てる)
1.0:現状のイベントで重要度の高いもののみ保障する
1.5:課金情報のみを保障する
2.0:メモリのダンプを取って一部の装置をリセットする
2.5:メモリの全ダンプを取って全リセットする→再起動を数回失敗するとOFFの状態に
のような感じだったかと・・・(正確でなくてごめんなさい)。
一応、多重構成になっているのでWDTがオーバーフロー(数百ミリ秒単位)するとまず系が切り替わり、その繰り返し回数が一定量を超えると上記のような試みが複数回ずつ実行されて遷移してゆきます。
このようなクリティカルなイベントをフェーズ番号という番号(0.5,1,1.5,2,2.5)で表していた記憶があります。
ご参考になりますかどうか・・・。
なるほど。。
大変参考になりました。
「エラーの頻度によってフェーズを切り替え、最終的にはシステムダウンさせる。」
使えそうです!有り難うございます。
No.3
- 回答日時:
この様な時に『フェイルセーフ』と言う考え方が有ります。
自動車はエンジンが故障した場合、エンジンの回転を制御できないような故障ではなく、回転が停止するような故障であれば車自体が止まることになり安全である。このため、回転を止めるような故障モードに自動的に(自然に)落とし込むような設計思想がフェイルセーフとなる。
* ウィキペディアより
と言う事ですのでウォッチドッグタイマ割り込みで転移する動作モードが
上記の様に成っていれば問題は無いでしょうね。
ご回答ありがとうございます。
ウォッチドッグタイマ割り込みが発生した要因で、
>エンジンの回転を制御できないような故障ではなく、
>回転が停止するような故障
の判定ができれば良いのですが、デバッグをしない限り、
ウォッチドッグの要因を判定するのは難しいですよねぇ?
No.2
- 回答日時:
>その時同時に E2PROM等にウォッチドッグタイマ割り込み発生回数を記憶しておき、Resetスタート後この発生回数を確認し、ある回数を超えた時点で、エラーモードへ遷移する。
E2PROM等に記録される発生回数はずっとカウントアップでしょうか?
気になるのは、稀にハードに起因するとかで発生する問題の積み重ねで1年後とか2年後とかエラー遷移した場合で、その場合は原因がわからないんじゃないでしょうか?
それにエラーモードに遷移されても困る状況って無いのか気になります。車が走らないとかなって、それが多発したらリコールが怖そうです^^;
って事でWDTが発生する時間間隔についても知らべないとまずいと思います。
この回答への補足
アドバイスありがとうございます。
そうですね。時間測定の機能を使用出来れば、
時間間隔に関しても考慮することで詳細な
エラー判定ができそうですね!
一言でエラーモードと言っても”何のエラーで?”といった所を
考慮する必要がありそうですね。。難しそうですが・・
>それにエラーモードに遷移されても困る状況って無いのか気になりま>す。車が走らないとかなって、それが多発したらリコールが怖そうで>す^^;
⇒
信頼をとるか安全をとるかですね。。
No.1
- 回答日時:
なるほど、ですね。
昔、汎用機をやっていたころはウォッチドックタイマ割込みは
即メモリダンプを取って原因を1件ずつ追求していましたが、
車載用は、無限ループ解除、に使っているのですね。
確かに、解除、リセットでは現象を回避するだけで根本問題の
解決にはならないですね。
回数を記録するだけでも、進歩と思います。欲を言えば動いて
た場所なども記録して、原因追及の足がかりも作りたいですが、
欲が大きいでしょうか。
車載に限らず、民生品等に関しても無限LOOPや暴走等の検知で
リセットをかけるような仕組みになっています。
民生品であれば即リセットでも特に問題ないと思うのですが、
(当然ユーザーはびっくりしますが、命にかかわることは
ないと思います。)
しかし車となる話は別になるのかなと・・
デバッグ時であれば、オンチップデバッグ等のトレース機能を
用いて、ある程度原因追究できそうですけどね!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(病気・怪我・症状) 新型コロナワクチン接種後死亡にサイトカインストームが関連しているようです 接種後の高熱は多数の人が訴 3 2022/11/08 07:14
- au(KDDI) 特定の画面を見るとスマホが固まります ご覧頂き有難うございます。 特定のページを見るとスマホが固まり 1 2023/08/21 19:29
- 国産バイク レギュレーター交換してもまたパンク。 ヤマハのTMAX500(sj04j)です。 電圧計を付けてるの 5 2023/02/03 22:02
- ドライブ・ストレージ SSDを追加したら昔のHDDがおかしくなった 4 2023/03/23 13:25
- バイク車検・修理・メンテナンス CBR250R(MC17)について質問があります。 1 2022/10/02 20:23
- その他(データベース) 業務用のデータベースサーバーの選び方について 4 2022/11/22 10:22
- Firefox(ファイヤーフォックス) Firefoxでグーグルの検索画面が変です 2 2022/09/20 19:25
- 車検・修理・メンテナンス 4GR-FSE 電動ファンが止まらない 3 2022/09/10 17:35
- 運転免許・教習所 停車中はクリープ現象を防がない方が良いのですか? 13 2023/06/27 12:25
- プリンタ・スキャナー キャノンmp490プリンター【エラー番号5400】で【プリンタートラブルが発生しました。電源を入れ直 2 2023/07/24 17:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スーパーのレジで並んでいたら...
-
マイコン C言語 割り込み処理...
-
C-Builder OnChangeをマスク
-
USJでの割り込み
-
(H8マイコン)タイマ割込で変更...
-
AKI-H8/3048Fでのタイマ割り込み
-
PIC(MOVFで何故、STATUS Zフラ...
-
【組込み】割り込み中のstatic...
-
picのタイマ1発振開始時間に関...
-
PCの割り込み処理とはなんでし...
-
【H8-3052F】タイマ割り込み
-
Macターミナルで実行中のプログ...
-
緯度、経度の 10進法と 60進法...
-
家電製品の電力周波数を変える機械
-
大容量のメモリ確保をスワップ...
-
Mac 乗数の入力方法
-
【C言語 数独】 C言語で9×9の数...
-
符号付きにすべきか、符号なし...
-
Excel-VBAのmsgBox()の不思議
-
VBA
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CPUの処理量を減らすコーデ...
-
pic 複数の割り込み関数 切り分...
-
【組込み】割り込み中のstatic...
-
USJでの割り込み
-
CPU負荷率の安全な上限と計...
-
ウォッチドッグタイマ(WDT)の...
-
電車乗車時、並んでいるのに割...
-
USB機器からのデータ受信による...
-
一定時間操作がなかったら、と...
-
Amazonfireタブレットにわから...
-
マイコン C言語 割り込み処理...
-
PICマイコンでエンコーダパルス...
-
電車で待機列の割り込みについ...
-
駅のトイレでナイチンに邪魔さ...
-
実行した後、どうしてもフリー...
-
電車のドアの前での並び方
-
V.B.6 多重Call用スプール作成...
-
H8マイコンでの割り込み(シリ...
-
VB.net 割り込みの禁止
-
割り込みについて
おすすめ情報