Раньше я без проблем отлаживал исполняемые файлы, загруженные во внутреннюю SRAM моего Cortex M3 (STM32F2). Недавно я загружал свой исполняемый файл во Flash (из-за проблем с размером).
С тех пор отладка с помощью GDB не работает. Насколько я понимаю, когда исполняемый файл находится во Flash, можно использовать только аппаратные точки останова (в отличие от программных), а аппаратных точек останова у меня шесть. Однако при установке только одной аппаратной точки останова 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.
hbreak
? - person ams   schedule 08.05.2012maintenance info breakpoints
? - person ams   schedule 08.05.2012