RL78/l1Aでマイコンリセットしてしまいます

R5F107AEで意図しないタイミングでソフトリセットが発生します。
RESFレジスタによりリセット要因を調査すると、「WDT」や「パリティエラー」や「不正命令」など、
色々な要因でリセットしていますが、「不正メモリアクセス」でリセットすることが多いです。
・PCとUART通信を1sec毎に行っていて、リセット発生頻度は連続通電で1日に1回程度です。
・リセットタイミングは、送信転送完了割り込み処理を終了し次の1バイトを送信時にリセットしています。
・CS+のスタックメモリ見積ツールを使用し、スタック領域破壊は無いことを確認しました。
・リンクディレクティブファイルに問題ないことはメーカーに確認しました。
・今のところE2Liteを接続してのオンチップデバッグではリセットしていません。
・EEPROMエミュレーション・ライブラリPack01 パッケージVer2.1.0を使用しています。

コードとコード生成ツールを確認した限りでは変な割り込みはなさそうですが(再度調査します)
何かマイコンリセットしてしまう要因は何か考えられますでしょうか。アドバイスいただけたらと思います。

Parents
  • 流し読みしてしまい送信ってことを見逃していました。失礼しました。

    既に正常に動作しているコードを移植した、かつ送信となると、ちょっと通信での発生というのは考えづらいですかね。たまたま条件が重なった可能性もあるのではないかと思います。

    となると、他に原因がある可能性が高いのではないかと思われます。

    スタック見積はスタックオーバーフローだけを見るもので、動的なスタック破壊は把握できないです。関数内で動的なポインタ操作誤りなどによるスタック破壊もあり得ます。

    おそらくポインタ操作誤りなどによる、ヒープ、スタック破壊くらいしか考えられないですが、このような場合の調査方法はモジュールをひとつずつ無効にしながら原因個所を絞っていく方法があります。(消去法ですね)

    逆にプログラムの骨組みだけ残し、ひとつづずモジュールを有効にしていく方法もあります。

Reply
  • 流し読みしてしまい送信ってことを見逃していました。失礼しました。

    既に正常に動作しているコードを移植した、かつ送信となると、ちょっと通信での発生というのは考えづらいですかね。たまたま条件が重なった可能性もあるのではないかと思います。

    となると、他に原因がある可能性が高いのではないかと思われます。

    スタック見積はスタックオーバーフローだけを見るもので、動的なスタック破壊は把握できないです。関数内で動的なポインタ操作誤りなどによるスタック破壊もあり得ます。

    おそらくポインタ操作誤りなどによる、ヒープ、スタック破壊くらいしか考えられないですが、このような場合の調査方法はモジュールをひとつずつ無効にしながら原因個所を絞っていく方法があります。(消去法ですね)

    逆にプログラムの骨組みだけ残し、ひとつづずモジュールを有効にしていく方法もあります。

Children
No Data