[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

(itron-club 1711) Re: sysdwn時 の情報取得方法について



いくらMLと言っても、From: に名前があるとしても名乗ったほうが印象は
良いと思いますよ。
# 名乗らない人にいきなりこんなこと言われたら気悪いでしょう。:)

経験的を言えば、得られる情報量は与える情報量に比例するようですので、
差障りの無い範囲で、できる限り情報を提示したほうが良いと思います。

因みに
お使いのμITRON準拠のOSはどのような素性なのでしょう?
自作ですか?メーカ品ですか?オープンソースのものですか?

下記に例
外発生時のPCを示されていますが、すべてのμITRON準拠OSが同じ
内部シンボルを持つわけではありません。実装に関わる内容の場合は、その
OSの提供元に確認するのが最短だと思います。
# snd_mbx ならまだしも dq_rdy なんて判りません。
## 名称からすると、ReadyQ からの デキューだと思いますが。。。

また、エラーコードもμITRON仕様には規定されていないもののようですの
で、これも実装に関わるかと思います。

因みに、「書込みエラー」とはどのような状況でしょうか?
 ・メッセージキューにメッセージをつなげなかった?
 ・メモリプロテクト違反?
 ・メモリが実装されていないアドレス空間にライトアクセスした?
 ・その他?

システムダウンルーチンで止められるとのことですから、OSの内部シンボル
などの内部情報がわかれば、その時のカレントタスク(システムダウンルー
チンを発行したときのRUNNINGタスク)が判ると思います。そのスタックから
たどることはできないでしょうか?

同じ処理を繰り返しているとのことですが、条件によっては多少動きがこと
なるかと想像します。その条件の違いを明確にしてはいかがでしょうか?

ある割込みを止めてみる。という方法があります。それで問題が発生しない
のであれば、止めた割込みに関わる処理(に関わるハンドラ、タスク)に
問題があると予想できます。

そうそう、前後しますが、ハードウェアは安定しているのですか?
また、CPUは何をお使いでしょうか?
# ハードウェアが安定していない場合は、ソフトウェアのデバッグは困難
# を極めます。原因がハードウェアに依存するのかの切り分け作業が
# 発生します。

この状況だけで判断すると、OSの何かしらのキューが破壊(メモリ内容が
正しくないタイミングで書き換わっている)されているようにも見えます。
たとえば、割込み禁止(CPUロックなど)や排他制御区間の設定は妥当でし
ょうか?

それと、この例外とは何でしょうか?
 ・CPUが発生した例外?
 ・ソフトウェア的に発生した例外?
 ・その他、システムで定義した例外?

例外要因で絞り込める可能性もあります。

まとまりありませんが、まずはご参考に。

宿口雅弘

> 開発中のシステムにおいて(μITRON4.0仕様準拠のOS使用)、同じような動作を
> ただ繰り返しているにも関わらず、連続運転をさせると、ある時突然、システム
> ダウンしてしまいます。(ダウンするまでの時間は一定しておりません)
> デバッガにて連続運転をさせ、システムダウンルーチンにブレークを設定しても
> コールスタック等にて処理を辿っていけないため、複数あるタスク or 割り込み処理の
> どの処理が原因なのかなかなか絞り込めません。
> 
> システムダウンの原因となった箇所をもう少し絞り込める何らかの情報を得る方法は
> ありますでしょうか。
> ちなみに、システムダウンルーチンに渡される情報ですが....