
В разработке на микроконтроллерах широко распространены 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 | |
Настройка Пошаговой Отладки JLink+Eclipse | |
Пошаговая GDB отладка ARM процессора из консоли в Win10 | |
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 | |
Дебаггинг в реальном времени через JTAG/SWJ-DP для микроконтроллеров на ядре ARM Cortex-M |
Вопросы
--Как выглядит *.bat скрипт для автоматической загрузки прошивки через J-Link?
