В разработке на микроконтроллерах широко распространены J-link программаторы-отладчики. Также широко доступно клиентское ПО для них Ozone. У J-link есть 20 пиновый разъём. На нем заложены пины для шины SWD и UART. SWD это - двухпроводной полудуплексный интерфейс для программирования микроконтроллеров.

Для подключения потребуется программатор J-link, кабель USA-B на USB-A, перемычки гнездо-гнездо (8 шт.) и само target устройство.

Из ПО на самом деле для отладки прошивки достаточно только утилиты Segger Ozone и *.elf файла, а из документации вам потребуется разве что спецификация GCC компилятора (Using the GNU Compiler Collection).

Чтобы прошивку можно было пошагово отлаживать надо собрать её с ключами активации добавления отладочных символов (-g -gdwarf-2). Ключ -g провоцирует добавление отладочной информации в образ в родном для платформы формате. Это специально для утилиты GDB клиента.  Без этого ваш пошаговый отладчик увидит только маш��нные коды, в которых будет сложно что-либо понять. Ключ -gdwarf-2 добавляет отладочную информацию в формате  DWARF.

Итак, открываем Ozone. Это такая утилита у которой под капотом отладочный клиент и отладочный сервер. Ozone напрямую взаимодействует с программатором J-link. Выбираем Create New Project. 

Выбираем микроконтроллер целевой платформы. В моей отладке сейчас STM32F407ZG.

Указываем, что работаем с FPU (Floating Point Unit)

Выбираем интерфейс связи с целевым микроконтроллером. Тут надо указать SWD. Прописываем путь к машинному коду (т.е. *.elf файлу).

Теперь надо выбрать Debug->Start Debug session-> Download & Reset Program

И вот можно начинать прочесывать программу пошаговым отладчиком. Перезагрузиться можно кнопкой F4.

Активация UART

В качестве бонуса у Segger J-link есть также UART. Чтобы его активировать надо открыть J-Link Configurator, кликнуть на названии продукта и установить точку на Virtual COM-Port Enable.

После нажатия ОК появится сообщение

Перезагрузив программатор по питанию вы увидите, что в операционной системе появился новый последовательный COM порт.

Итог

Удалось научиться прошивать и пошагово отлаживать STM32 микроконтроллеры через SWD при помощи программатора J-Link. Можно признать, что отладка в Ozone намного удобнее нежели отладка в связке St-link + Eclipse. Плюс J-Link может также запитать микроконтроллер напряжением 3.3V от первого пина отладчика.

Можно выделить три уровня удобства пошаговой отладки микроконтроллеров:

1–Консольный GDB сервер и консольный GDB клиент. Не очень удобно. Надо наизусть знать все команды GDB клиента. Зато так можно работает с любым микроконтроллером
2–Консольный GDB сервер и GDB клиент и Eclipse. Долго стартует. Часто теряется link с target устройством (особенно при перезагрузке).  Требует конфига для проекта Eclipse. Файлы .project .cproject (которые порой повреждены и не открываются). Надо устанавливать Eclipse плагины для ARM.
3–Пошаговая отладка в Ozone. Мгновенно стартует. Стабильный Link. Быстрая перезагрузка (F4). Требует только *.elf файл и чтобы Segger знал про этот микроконтроллер. Обычно специфические вендоры MCU дают настройки для Segger или прям готовый дистрибутив J-link.

Если есть возможность, то я бы порекомендовал сразу пробовать пошагово отлаживаться в Ozone. Ozone в самом деле очень удобный.

Разрабатывать на STM32 можно с разным инструментарием. Я для себя выбрал вот этот комплект.

Источники

Название

URL

Отладочная плата NRF5340-DK в качестве программатора J-Link

https://habr.com/ru/articles/735422/

Настройка Пошаговой Отладки JLink+Eclipse

https://habr.com/ru/articles/682498/

Пошаговая GDB отладка ARM процессора из консоли в Win10

https://habr.com/ru/articles/694708/

J-Link_BASE_V11

https://kb.segger.com/J-Link_BASE_V11

Debugging STM32F103RB NUCLEO Board with Segger J-Link

https://mcuoneclipse.com/2015/08/22/debugging-stm32f103rb-nucleo-board-with-with-segger-j-link/

Дайте мне 15 минут, и я изменю ваш взгляд на GDB

https://habr.com/ru/articles/824638/

Дебаггинг в реальном времени через JTAG/SWJ-DP для микроконтроллеров на ядре ARM Cortex-M

https://habr.com/ru/articles/259205/

Вопросы

--Как выглядит *.bat скрипт для автоматической загрузки прошивки через J-Link?

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Как вы отлаживаете прошивки для STM32?
10%Консольный GDB сервер и консольный GDB клиент3
6.67%Консольный GDB сервер и GDB клиент и Eclipse2
3.33%Пошаговая отладка в Ozone1
80%другое24
Проголосовали 30 пользователей. Воздержались 3 пользователя.