過去に、Cortex M3 (STM32F2) の内部 SRAM にロードされた実行可能ファイルを問題なくデバッグしていました。最近、実行可能ファイルを Flash にロードしています (サイズの問題のため)。
それ以来、GDB でのデバッグは機能していません。私が理解しているように、実行可能ファイルがフラッシュにある場合、(ソフトウェア ブレークポイントではなく) ハードウェア ブレークポイントしか使用できず、6 つのハードウェア ブレークポイントがあります。ただし、ハードウェア ブレークポイントを 1 つだけ設定すると、GDB で次のエラー メッセージが表示されます。
(gdb) break main
Breakpoint 1 at 0x800019a: file src/main.c, line 88.
(gdb) c
Continuing.
Note: automatically using hardware breakpoints for read-only addresses.
(gdb) Warning:
Cannot insert hardware breakpoint 1.
Could not insert hardware breakpoints:
You may have requested too many hardware breakpoints/watchpoints.
何がうまくいかないのですか?ハードウェア ブレークポイントはバックグラウンドで実行されますか?
注: OpenOCD を使用して、JTAG 経由で実行可能ファイルをロードしました。