組み込みシステム、コプロセッサー、MMU、Atmel 9263の実行中に、未定義の命令エラーが発生します。組み込みシステムのメモリは0x20000000〜0x23FFFFFFの範囲です。これまでに2つのケースがありました。
SP 0x0030B840、LR 2000AE78-LRは有効なコードを指しているため、SPは偽物ですが、例外の原因はわかりません。他にどのようなアドレス、レジスタ、メモリ位置を確認する必要がありますか?
SP 0x20D384A8、LR 0x1FFCA59C-SPは問題なく、LRは偽物です。LRがどのように押しつぶされたかを調べるために私ができるある種の事後分析はありますか?アドレス空間の端から後方に転がっているように見えますが、その方法がわかりません。
現在、コードの大きなチャンクをシミュレーションに置き換え、テストを実行して問題を特定しようとしています。問題が発生するまでに4時間かかる場合があります。
そこに何かヒントをいただければ幸いです、ありがとう!
チップはAT91SAM9263で、IAREWARMツールチェーンを使用しています。ストレートARMだと思いますが、確認します。
編集
UndefInstructのもう1つの例-今回はSP/LRは問題ないように見えます。LR = 0x2000b0c4、そして私がその近くで分解するとき:
2000b0bc e5922000 LDR R2、[R2、#+ 0]
2000b0c0 e12fff32 BLX R2
2000b0c4 e1b00004 MOVS R0、R4
LRはUndef例外に続く命令であるため、BLXはどのように未定義として識別されますか?CPSRは0x00000013であるため、これはすべてARMモードであることに注意してください。ただし、R2はヒープ領域にある0x226d2a08であり、間違っていると思います。分解すると、ANDEQ R0、R0、R12があり、命令は0x0000000Cであり、他の命令はデータのように見えます。だから私は悪いR2が問題だと思う、私はBLXでUndefがなぜなのか理解しようとしているだけなのか?
ありがとう!