突然の動作停止について

お世話になります。

動作が突然停止する原因について助言
をお願いいたします。

Minicubeとデバッガ(ID850QB)を用い、
V850(PD70F3368)をデバッグしております。

動作確認中にPCが0x03fffffeになり、
動作停止する事象に陥り、現在原因確認を
行っております。

色々確認を行ったのですが手詰まりになり
難航している状態です。

調査する観点、アドヴァイス等をいただければ
助かります。

よろしくお願いいたします。
  • 割り込み許可にしていませんか。
     割り込みポートが浮いているために、不用意な割り込みが掛かるんじゃないかな。

     ループプログラムとソフトタイマーで、ポート出力をon/offする簡単なプログラムを作ります。
     ポートにはLEDを付けたり、テスターで測ったりします。
     オシロが使えれば、ソフトタイマーは不要です。

     それで同じ症状が出るか調べれば、一歩前進すると思います。
  • 特定の処理でハングアップするのであれば不正メモリ操作によるスタック破壊も考えられます。

    リカルドさんが仰るように割り込みが一番きな臭いので、

    ・未使用割り込みはマスクする(とりあえず処理)
    ・未使用割り込みはダミー関数を呼んでブレークで引っかける(特定したい場合)

    などで割り込みによる要因を除外してみてはどうでしょう。

    RTOSを使っている場合は別タスクによるイタズラも考えられますのでコンテキスト領域の確保がキチンとできているか、メモリ関数(memsetなど)による領域を超えたアクセスはないか、等々をキーワードにしてみてください。

    何らかの接触で割り込みが発生してしまった場合、ハード的に弱いのでグランド強化・コンデンサ追加などの対策が必要となるかもしれません。


    トレースデータが暴走直前まで取れていれば、わかりやすいのですが。。。
  • スタッフのチョコです。

    投稿された内容からは,どのような状態のハード及びソフトかが分からないので,原因の特定はできません。まずは,基本的なところから抑えていく必要があるかと存じます。
    電源やRESETの信号が正しいレベルにあり,ノイズ等が載っていないかです。その上で,正常なクロックが供給されていればCPUとしては正常に動作します。
    この状態であれば,可能性が高いのはリカルドさんや,すとさんもおっしゃっている割り込みですが,V850では(V850だけではないですが)割り込みソースの設定,マスクの解除,割り込み許可の3つの条件が満足しないとマスカブル割り込みは受け付けられません。ノンマスカブル割り込みであるNMI端子だけはエッジの指定だけで有効になります。もうひとつのノンマスカブル割り込みはウォッチドッグタイマですが,こちらは初期状態ではリセットモードで動作しているので,書かれたような症状にはなりません。しかし,モードを変更してノンマスカブル割り込みに設定していたら割り込みが発生します。
    以上は基本的な割り込みですが,ここらの処理がきちんとできているとすると,可能性が考えられるのは多重割り込み処理です。特に問題なのは多重割り込みを受け付ける方の割り込み処理で,この優先順位の低い方の割り込み処理を終了するときには割り込み禁止状態にする必要があります。

    長々と書きましたが,もっと詳しい状況が分かれば,原因の絞込みもできるかと思います。
  • リカルドさん、すとさん、チョコさん
    ご助言ありがとうございます。

    未使用の割り込みはマスクしている
    はずですが、改めて確認する方向で調査を
    しようと思います。

    発生時には辛うじて各IOレジスタの値が
    残っているため、割り込みマスクレジスタ等
    の割り込み関連のレジスタを確認し、
    要因を掴みたいと思います。

    また、結果もしくは相談させていただくかも
    しれませんがよろしくお願いします。