136 подписчиков

VS code + OpenOCD + CortexDebug = time out while waiting for target halted

156 прочитали

Это короткая заметка о решении одной из проблем с которой я столкнулся при настройке связки VS Code + OpenOCD + CortexDebug, для программирования под АРМ микроконтроллеры.
Суть проблемы: при запуске процесса отладки, отладчик не может сбросить программируемый процессор и просит reset, ждет .. не дожидается.. и вываливается с ошибкой:

Error: timed out while waiting for target halted

Выглядит это примерно так:

Рис.1. вид из терминала
Рис.1. вид из терминала

А финальное сообщение имеет вид:

Failed to launch GDB: Error erasing flash with vFlashErase packet (from target-download)

Рис.2. финальное сообщение об ошибке
Рис.2. финальное сообщение об ошибке

В моем случае я собрал проект под STM32H750, и отладчик ломался с обозначенной проблемой. При этом и CubeProgrammer и STLink Utility спокойно подключаются к процу по SWD и без ресета, и позволяют гулять по памяти.

Решение:

Необходимо запустить отладку с другой настройкой для сброса, а именно:

reset_config separate

Открыть конфигурационный файл на микроконтроллер из каталога OpenOCD, в моем случае это C:\Program Files (x86)\OpenOCD\share\openocd\scripts\target -> stm32h7x.cfg

найти в нем строчку reset_config srst_only srst_nogate и заменить её на reset_config separate , сохранить и запустить отладку - все.
Про это можно почитать в доках на openocd в разделе про Reset
https://openocd.org/doc/html/Reset-Configuration.html

Так же, короткое руководство от моего знакомого по настройке VScode под STM32
https://telegra.ph/VS-Code-STM32-i-vse-takoe-07-04

У меня все, надеюсь кому-то пригодится.
Всем ветра в спину!