【セルフプログラミング】マイコン暴走?

CubeSuite+を使ってセルフプログラミングの開発をしています。

ライブラリ関数(FlashEnv(1))を実行していると、
逆アセンブルウィンドウでプログラムがストップします。メッセージウィンドウには「不正命令例外により停止しました」
と表示されます。原因が分からないのでアドバイスいただけないでしょうか。

-------------
_SelfLib_FlashEnv_Activate:
b013 sst.b r2\, 0x30[ep]
6119 tst r1\, sp
ff37c765 ld.hu 0x65c6[lp]\, r6
3742 satadd -0x9\, r8
8143 sst.b r8\, 0x1[ep]
fa6f ?
de4f ?
55174431 st.b r2\, 0x3144[r21] <---ここでストップ
45a5 sst.w r20\, 0x88[ep]
fcff ?
-----------

FlashEnv(1)は以下の関数からコールしています。

int erase_mem(UB startBlk\, UB endBlk)
{
__DI(); //マスカブル割込み禁止

FlashEnv(1);

・・・
}
Parents
  • よっしー9999さん

    すと@konです。


    よっしー9999さんが書かれたアセンブラ表示によれば「?」で表記されたところが不正命令に当ると思います。

    /*-----
    8143 sst.b r8\, 0x1[ep]
    fa6f ?
    de4f ?
    55174431 st.b r2\, 0x3144[r21] <---ここでストップ
    -----*/

    fa6f や de4fに当る命令コードが存在しないのだと思います。

    では、どうして不正命令が紛れ込むのか…ですが、よくわかりません。
    ライブラリがロードされていないとか、ライブラリを参照できていないとか、ライブラリがV850以外のものであるとか…なんにせよ、正しい状態ではないと思います。

    プロジェクト環境にもよると思いますが、リンクの設定(ライブラリも一緒にリンク?)やライブラリのロード(個別にロードが必要?)などを見直してみてください。


    > 「不正命令例外により停止しました」

    と出るくらいなので、デバッガが仕込んだものではないと思うのですが…予測の域をでません。
Reply
  • よっしー9999さん

    すと@konです。


    よっしー9999さんが書かれたアセンブラ表示によれば「?」で表記されたところが不正命令に当ると思います。

    /*-----
    8143 sst.b r8\, 0x1[ep]
    fa6f ?
    de4f ?
    55174431 st.b r2\, 0x3144[r21] <---ここでストップ
    -----*/

    fa6f や de4fに当る命令コードが存在しないのだと思います。

    では、どうして不正命令が紛れ込むのか…ですが、よくわかりません。
    ライブラリがロードされていないとか、ライブラリを参照できていないとか、ライブラリがV850以外のものであるとか…なんにせよ、正しい状態ではないと思います。

    プロジェクト環境にもよると思いますが、リンクの設定(ライブラリも一緒にリンク?)やライブラリのロード(個別にロードが必要?)などを見直してみてください。


    > 「不正命令例外により停止しました」

    と出るくらいなので、デバッガが仕込んだものではないと思うのですが…予測の域をでません。
Children
No Data