1

デバッガーでコードを実行すると、一連の手順の後、コードが失われ、コマンドが順不同で実行されます。スタックがオーバーフローしているかどうかはわかりません。

これは私が通常得るエラーです:

MSP430: 長さ 0x1d2 のページ 0 の 0xffe2e でメモリ ブロックを読み取る際の問題: 無効なパラメータ

それが何であるかについて何か提案はありますか?一部の割り込みを処理しないことで発生する可能性のある問題について簡単に読みました。

また、スタックがオーバーフローしているかどうかを確認できるように、RAM を特定の値で埋めようとしています。RAM 全体を埋める方法についての提案、たとえば 0x1234 の値はありますか?

ありがとう!

4

2 に答える 2

0

どのデバッガーとコンパイラーを使用していますか? msp430-gcc と msp430-gdb/gdbproxy は、GCC 最適化がオンになっていると非常に混乱する可能性があることがわかりました。ただし、オンにせずに壊れたコードが出力されることがあります (実際には高品質の製品です)。

メモリをいっぱいにする最も簡単な方法は、crt0.s スタートアップ ファイルを変更して自分でリンクすることです。メモリが 0 に設定されている場合、そこでパターンを変更できます。

どのデバイスを使用していますか? 16 ビット デバイスでは、0xffe2e はプロセッサのアドレス空間の外にあり、おそらく配列インデックスまたは同様のものが負になっています。

于 2011-07-19T19:30:55.967 に答える
0

コード コンポーザー スタジオと TI の USBFET プログラマーを使用しているときにもこのエラーが発生しましたが、明確な原因を特定することはできませんでした。

CCS を使用していると仮定して、以下にいくつかのヒントを示します。

1) ACCV (UNMI) および VMA (SYSNMI) 割り込みをキャッチし、ハンドラ内にブレークポイントを設定します。これらのトリップのいずれかが発生した場合は、スタックを調べて、何が割り込みをトリガーしたかについての手がかりを探します。

2) 割り込み (GIE ビット) を再度有効にする割り込みハンドラがある場合は、それらが繰り返し再トリガされていないことを確認してください。

3) 最適化されたコードをステップ実行しているときに、(不可解に) このエラーが発生しました。そのため、最適化をオフにすると役立つ場合があります。

Code Composer Studio を使用している場合は、RAM を初期化する代わりに、スタック オーバーフローにブレークポイントを設定できます。また、デバッグ セッションを一時停止すると、CCS は、[メモリ] サブウィンドウで選択した任意の値でメモリの一部を埋めるオプションを提供します。 MSP430 メモリを埋める方法

于 2011-07-19T19:57:54.830 に答える