私は、同様の他のデバイスと無線で通信し、データをフラッシュに記録する単純な MSP430 アプリケーションに取り組んでいます。電力を節約するためにウェイク オン ラジオを使用しています。Cでのプログラミングにmspgccとmspdebugを使用しています。
私の問題は次のとおりです。タイマーはしばらくすると動作を停止しますが、デバイスはデータを受信し続けます。つまり、受信割り込みは動作し続けますが、タイマーが停止し、メインループがタイマーに依存するため、すべてが停止します。
スタックが破損している可能性があることを理解しています。デバイスが動かなくなって現在のレジスタ値を出力すると、それらは常に同じになります:
pc/r0: 8092 sp/r1: 053e sr/r2: 0059 r3: 0000
fp/r4: ffff r5: 5a08 r6: ffff r7: ffff
r8: ffff r9: ffff r10: ffff r11: 0000
r12: 0009 r13: 000c r14: 0009 r15: 0001
単純なバックトレースでは、スタックに何も表示されません。main() だけです。SP と SR に対して常に同じ値が得られます。私は現在のスタックを持っていますが、アセンブリの知識はほとんどありません。アセンブリを学習してすべてを手動でバックトレースするのではなく、何が起こっているのかを理解する方法はありますか? さらに情報が必要な場合は、お知らせください。このような質問をして本当に申し訳ありませんが、Google はほとんど役に立ちませんでした。メモリダンプ全体を持っている場合、(手動ではなく) バックトレースできる方法はありますか?