
Комментарии 10
Эх, вот бы кто-нить сделал нормальную железку с буферами и выбором напряжения логических уровней и в красивом корпусе. Но видимо придется самому)
Главный инструмент забыли, золотой стандарт сообщества, Альфа и Омега отладки: светодиод! :)
J-Link предлагает лучше чем светодиод - RTT
Это как тысяча светодиодов.
Главный инструмент забыли, золотой стандарт сообщества, Альфа и Омега отладки: светодиод! :)
Тут я полностью согласен.
При включении всяческих оптимизаций пошаговый JTAG/SWD отладчик становится абсолютно бесполезным. При высокой оптимизации пошаговая отладка показывает прыжки на случайные участки кода и это не дает никакой ценной информации о реальном пути по которому исполняется Си код. У меня это происходило при отладке загрузчика в EEPROM для MIK32 (K1948BK018) размером 8kByte.
Однако вы можете сделать программный компонент GPIO mapper и отдельной функций натуральному числу ставить в соответствие его бинарный код на наборе конкретных свободных GPIO пинов. Таким образом вы узнаете до куда доползла прошивка перед тем как зависнуть. Или делать GPIO toggle вообще на одном пине. Так можно без отладчика определить, где именно внутри system_init зависла прошивка. Достаточно просто на осциллографе посчитать количество перепадов напряжения.
есть несколько дивных гибридов на базе протокола CMSIS-DAP с добавками других протоколов dapLink в разных вариациях, dap42. плюс DirtyJTAG
для esp32 есть esplink и esp-usb-bidge
Интересная идея, но описание у проекта blackmagic-esp32-c5 крайне печальное. Сходу даже не найти, какие ноги для SWD используются.
Отлаживать прошивки можно самыми разными способами.
16 Способов Отладки и Диагностики FirmWare
https://habr.com/ru/articles/681280/
CLI через Segger J-Link RTT на ARM Cortex-M
https://habr.com/ru/articles/1018168/
BlackMagic
Он сразу в себе несет gdb сервер. Таким образом не нужен openOCD. Вы напрямую подключаетесь из arm-none-eabi-gdb и работаете.
Мое субъективное мнение - так и должен выглядеть программатор
Это звучит хорошо, пока не выяснится, что поддержка нужного микроконтроллера должна быть вкомпилирована в прошивку программатора, памяти на всё не хватает, и тогда вам приходится заниматься компиляцией своего уникального black magic probe с поддержкой нужных микроконтроллеров и флагов. По-моему, это не то, чем должен заниматься разработчик, чтобы программировать свой микроконтроллер.
Полагаю, что по этой причине уже несколько лет Blackmagic официально возможен во варианте BlackMagic Debug Application (bmda), когда приложение на ПК одним концом подключается к blackmagic probe (или stlink, или cmsis-dap, или ftdi), а с другого конца открывает tcp порт gdb сервера. Поддержка нового микроконтроллера при этом хранится в приложении на ПК, программатор используется только как транспорт. Как OpenOCD, в общем.
Обзор инструментов отладки встроенного ПО