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

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

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

Parents
  • わわいです。

    現象を見るかぎり、あなたのコードで不正アクセスが起こっていて、それがエラーの原因になってるようです

    C言語上では、実行時のエラーチェックは行われないため、不正アクセス時にはエラーは出ません。

    どこでエラーが出てくるか、というと、不正アクセスによって発生したメモリ不整合がその後のコード実行により破綻していき、やがて実行出来なくなったらそれがエラーとして表に出てくるようになります

    ってことで、発生したエラーはたいてい不正アクセスの原因とは全く関係ないですし、エラー発生時の状況は全く参考とはなりません。

    んじゃどうすればいいのか、というと、がんばってコードとにらめっこしてバグを見つける、か、デバッグ機能を駆使して、どこでおかしなアクセスをしているかってのを見つける、しかないと思われます。

    #も一つ面倒なのが、不正アクセスをしててもエラーとして表に出てこないことだったり。

    がんばってください。

Reply
  • わわいです。

    現象を見るかぎり、あなたのコードで不正アクセスが起こっていて、それがエラーの原因になってるようです

    C言語上では、実行時のエラーチェックは行われないため、不正アクセス時にはエラーは出ません。

    どこでエラーが出てくるか、というと、不正アクセスによって発生したメモリ不整合がその後のコード実行により破綻していき、やがて実行出来なくなったらそれがエラーとして表に出てくるようになります

    ってことで、発生したエラーはたいてい不正アクセスの原因とは全く関係ないですし、エラー発生時の状況は全く参考とはなりません。

    んじゃどうすればいいのか、というと、がんばってコードとにらめっこしてバグを見つける、か、デバッグ機能を駆使して、どこでおかしなアクセスをしているかってのを見つける、しかないと思われます。

    #も一つ面倒なのが、不正アクセスをしててもエラーとして表に出てこないことだったり。

    がんばってください。

Children