1

GCC 4.7.4 と Lauterbach Combiprobe JTAG デバッガーを使用して STM32F2 デバイスを開発しています。私のコードには、テスト目的で常に特定の場所で中断する次のステートメントがあります。

asm volatile ("BKPT #0");

これが唯一のブレークポイントです。プログラムを実行すると、プログラムがブレークポイントに達したことがわかりますが、JTAG デバッガーを使用してこのブレークポイントを超えることはできません。代わりに、プログラムを実行するには、PC カウンターをこの命令を超えて移動する必要があります。

これは過去に機能していましたが、現在の動作が異なる理由を理解するのに途方に暮れています。手がかりやヒントをいただければ幸いです。

4

2 に答える 2

1

アプリケーション コードにブレークポイント命令がある場合、プログラム カウンターで何が起こるかという一般的なルールはありません。ブレークポイント命令を含むアドレスで停止する CPU もあれば、ブレークポイント命令の後で停止する CPU もあります。

タグ「lauterbach」を使用しているので、Lauterbach の TRACE32 デバッガーを使用していると思います。

デバッガーの動作が以前と異なっていると思われる場合は、Lauterbach サポートに連絡する必要があると思います。

今のところ、次の TRACE32 コマンドで問題を回避できます。

Break.Set T:0x1000 /Program /CMD "Register.Set PP r(PP)+2"

(0x1000 は、BKPT 命令が配置されているアドレスを表します。)

于 2015-04-13T21:38:27.520 に答える
1

非常に多くの壊れた JTAG デバッガーがあります。おそらく、JTAG アダプターのアップデートをインストールしましたか?

set PC=PC+4GDB をデバッガとして使用している場合、ボタンまたはキーにマクロを追加できるかどうかを確認できます。ただし、これが可能かどうかは、IDE によって異なります。

于 2014-03-22T08:28:33.150 に答える