Существует проверенный способ определения, подключен ли отладчик к Cortex-M, как видно здесь .
Я использовал как способ автоматической установки точки останова, когда я в сеансе отладки:
void autobreak() {
if (CoreDebug->DHCSR & CoreDebug_DHCSR_C_DEBUGEN_Msk) {
__asm__ __volatile__ ("bkpt #0");
}
}
Я использую J-Link и OpenOCD в CLion для отладки. При autobreak()
J-Link останавливает выполнение программы без указания вручную точек останова в режиме отладки . Однако, похоже, что в режиме выполнения J-Link по-прежнему останавливает выполнение программы, что нежелательно для моего приложения.
Позвольте мне быстро уточнить, что я имею в виду под каждым режимом:
- Режим работы : только программа fla sh
- Режим отладки : программа Fla sh затем позволяет пользователю приостанавливать выполнение программы и устанавливать точки останова вручную
Есть ли способ проверить, подключен ли J-Link в режиме отладки или в режиме работы ?