Отладка микроконтроллеров в Qt Creator

Для работы с микроконтроллерами есть ряд специализированных IDE, которые в основном платные. Здесь я рассмотрю вариант с использованием открытой среды Qt Creator.

Введение

Помимо платных IDE, ST выпустила свою студию TrueStudio в свободный доступ, но ограничила в ней возможности работы только своими микроконтроллерами. В остальном у всех есть бесплатная демо-версия с какими-либо ограничениями, или по функционалу, или по времени использования. Основной проблемой является то, что эти студии безнадежно отстают от современных IDE по удобству использования и функциям работы с кодом. Поэтому сейчас активно развиваются альтернативные возможности по отладке микроконтроллеров с использованием популярных студий, таких как Visual Studio Code с плагином Cortex-Debug или Qt Creator со своим плагином BareMetal.

Qt предоставляет со своим SDK очень удобную (субъективно, конечно) IDE для разработки Qt Creator. Довольно давно в ней появился экспериментальный плагин BareMetal, который позволяет настроить тулчейн для отладки на «голом железе». Помимо этого тут есть своя система сборки qbs, позволяющая собирать проекты для разных платформ.

Потребуется следующий набор инструментов:

  • Qt Creator
  • Система отладки OpenOCD
  • Компилятор arm-none-eabi-gcc

Про установку этих программ можно найти большое количество информации и никаких сложностей с этим возникнуть не должно.

OpenOCD

OpenOCD (Open On-Chip Debugger) — это открытое ПО для программирования и отладки различного железа. OpenOCD поддерживает большое количество различных программаторов. Но в данный момент интересует только поддержка J-Link и ST-Link.

Для запуска и работы он использует конфигурационные файлы. Отдельно для отладчика и для используемого микроконтроллера или отладочной платы. Не так давно туда добавили конфиг для отечественного контроллера 1986ВЕ1Т. Немного его подправив можно получить и для 1986ВЕ9х. По ссылке можно скачать архив с файлами конфигурации для обоих контроллеров. Также для удобства я объединил вызов файлов конфигурации для отладчика и контроллера в один файл: openocd_1986ve.

Запускается процесс следующей командой:

openocd -f interface/jlink.cfg -f target/1986be92.cfg

При этом отладчик запустится сервисом и будет доступен для подключения другими средствами, например, через telnet или gdb. Чтобы он корректно запустился должен быть подключен J-Link и запитан контроллер.

Чтобы подключиться к нему через telnet нужно выполнить:

telnet localhost 4444

Затем можно выполнять непосредственные команды по управлению отладкой. Подробнее можно посмотреть тут. Примеры команд:

reset halt
flash info 0
flash list 
flash banks
flash erase_sector 0 0 1
flash write_image erase "firmware.hex"
reset run
exit

GDB

В командной строке запустить gdb можно так:

arm-none-eabi-gdb firmware.elf

Далее подключиться к серверу OpenOCD и выполнять команды:

target remote localhost:3333
monitor reset halt
load
continue
b main.c:123
c

Убедившись, что все работает, можно перейти к настройке Qt Creator.

Qt Creator

Для начала нужно включить плагины QbsProjectManager и BareMetal. Для этого перейти в Справка — О модулях… найти соответствующие модули, поставить возле них галочки и перезапустить студию.

Затем в настройках «Комплекты» нужно добавить компилятор arm-none-eabi-gcc и отладчик arm-none-eabi-gdb, если они не определились автоматически

Окно настроек отладчиков в Qt Creator.
Окно настроек компиляторов в Qt Creator.

Затем нужно найти слева Устройства и в ней перейти на вкладку Голое железо. Там добавить новый сервер отладки, выбрав OpenOCD. В Linux я использовал тип подключения «Запуск в локальном режиме (pipe)», в Windows, возможно, нужно будет выбрать другое. Затем указать путь к отладчику, файл конфигурации и команды gdb для инициализации и сброса. В этих командах нужно загрузить прошивку в микроконтроллер (команда load).

Настройки подключения к OpenOCD в Qt Creator.

После этого на вкладке устройства нужно добавить новое устройство с только что созданным сервером отладки.

Добавление устройства в Qt Creator.

Теперь в комплектах нужно добавить новый комплект и настроить в соответствии с новыми инструментами

Настройка комплекта в Qt Creator.

Теперь в Qt Creator можно создавать новый проект «Без использования Qt» и настроив файл .qbs скомпилировать проект и запустить отладку в обычном режиме.

Пример проекта моргания светодиодом на плате LDM-K198692QI с контроллером K198692QI (1986ВЕ92 в пластиковом корпусе): ссылка. Проект кривой и только отображает работу всего инструмента.

Заключение

Теперь можно настроить отдельные устройства для разных процессоров и отладчиков с разными конфигурационными файлами OpenOCD и пользоваться отладкой в удобной и комфортной среде :).

Отдельно нужно разобраться с форматом qbs-файлов и сформировать для себя рабочие шаблоны (в примере он взят из источника в интернете и еще не анализировался).

Используемые источники: