Это короткая заметка о решении одной из проблем с которой я столкнулся при настройке связки VS Code + OpenOCD + CortexDebug, для программирования под АРМ микроконтроллеры.
Суть проблемы: при запуске процесса отладки, отладчик не может сбросить программируемый процессор и просит reset, ждет .. не дожидается.. и вываливается с ошибкой:
Error: timed out while waiting for target halted
Выглядит это примерно так:
А финальное сообщение имеет вид:
Failed to launch GDB: Error erasing flash with vFlashErase packet (from target-download)
В моем случае я собрал проект под 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
У меня все, надеюсь кому-то пригодится.
Всем ветра в спину!