2011-07-19 29 views
1

デバッガを使用してコードを実行すると、一連の手順の後に最終的にコードが失われ、順不同のコマンドが実行されます。私はスタックがオーバーフローしているかどうか分からない。メモリの読み込みに問題があります

これは、私は通常、取得エラーです:

MSP430:トラブル長0x1d2のページ0に0xffe2eでメモリブロックを読む:無効なパラメータ(複数可)

それが何ができるか上の任意の提案ですか?いくつかの割り込みを処理しない可能性のある問題について簡単に読んでいます。

また、RAMに特定の値を書き込むと、スタックがオーバーフローしているかどうかを知ることができます。また、RAM全体をどのように埋めるか、0x1234の値を指定することもできます。

ありがとうございます!

答えて

0

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

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

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

0

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

あなたはCCSを使用していると仮定すると、ここでいくつかのヒントがあります:

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

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

3)最適化されたコードをステップ実行しているときにこのエラー(不可解)が発生しています。最適化を無効にすることができます。

RAMを初期化する代わりに、コードコンポーザースタジオを使用している場合は、スタックオーバーフロー時にブレークポイントを設定できます。また、一時停止したデバッグセッションでは、CCSはメモリの一部に "メモリ"サブウィンドウで選択した値を入力するオプションを提供します。 How to fill MSP430 memory

関連する問題