Спустя три года опять решил поиграться с STM32F, но уже вплотную.
В этот раз в роли IDE и дебагера будет выступать QtCreator т.к. в новых версиях есть плагинчик для работы с голыми устройствами.
Ось — Ubuntu 16.04, под Windows тут недалеко.
1. Поставим сам отладчик для STM т.е. gdb сервер
Устанавливаем всё необходимое для сборки:
sudo apt-get install libusb-1.0-0-dev
Надеюсь CMake и GCC уже стоят.
Для этого клонируем репозиторий и собираем ST-Link Utility
cd ~/Projects/ST-Link-Utility git clone https://github.com/texane/stlink.git . make release cd build/Release sudo make install sudo ldconfig sudo udevadm control --reload-rules sudo udevadm trigger
Вот впринципе сервер скомпиллен, запускать его для вывода справки:
st-util -h
2. Включаем в QtCreator плагин Help -> About Plugins -> галка напротив BareMetal и перезапускаем QtCreator
3. Дальше необходимо поставить компилятор и отладчик для архитектуры ARM
sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa sudo apt-get update sudo apt-get install gcc-arm-embedded
4. Добавляем их в QtCreator
Preferences -> Build & Run -> Compillers -> Add -> GCC
Название на ваше усмотрение, у меня: arm-none-eabi-gcc
Путь прописываем такой: /usr/bin/arm-none-eabi-gcc
Preferences -> Build & Run -> Debuggers -> Add
Название на ваше усмотрение, у меня: arm-none-eabi-gdb
Путь прописываем такой: /usr/bin/arm-none-eabi-gdb
5. Создадим устройство, переходим в Preferences ->BareMetal -> Add ST-Link
название на ваше усмотрение, у меня ST-Link-Utility
режим запуска: TCP/IP
исполняемый файл: st-util
хост: localhost, порт: 4242
5.1 Нужно дать отладчику дополнительное время для ожидания подключения:
Options->Debugger->GDB->Additional Startup Commands и прописать
set remotetimeout 10
6. Теперь добавляем комплект сборки:
Preferences -> Build & Run -> Kits -> Add
Название на ваше усмотрение, у меня Qt for Bare Metal
Тип устройства: Bare Metal
Устройство: Нажимаете Manager -> Add -> Bare Metal
Название на ваше усмотрение, у меня ST-Link1
Тип сервера gdb: ST-Link-Utility (из предыдущего шага)
Компилятор: как задали в предыдущем шаге, у меня arm-none-eabi-gcc
Отладчик: как задали в предыдущем шаге, у меня arm-none-eabi-gdb
Профиль Qt: отсутствует
7. Так, с подготовкой закончили, создаём новый проект, импортировав его шаблон из Git репозитория File-> New -> Import -> Git.
Репозиторий с шаблоном: https://github.com/Riflio/STM32F3DiscoveryQtCreatorTemplate
Путь выбираете свой.
Смените комплект на Qt for Bare Metal и можно наконец то прожать Run, в окне вывод приложения должно появиться примерно это:
Отладка запущена st-util 1.2.0-147-g3de5cf0 Flash page at addr: 0x08000000 erased Flash page at addr: 0x08000800 erased Flash page at addr: 0x08001000 erased
И светодиоды должны начать зажигаться по кругу.
[tip] Если вылетает при отладке, либо при её завершении, поставьте в Qt Creator -> Инструменты -> Параметры -> Отладчик -> GDB, расширенныегалку у «Использовать асинхронный режим для работы с программой»
[/tip] [tip]Если будет ошибка «Unknown remote qXfer reply: OK«, то см. пункт 5.1[/tip]
P.S. Как создавать шаблон под другие контроллеры?
Сделать его достаточно просто, потребуется CMSIS — в ней содержатся описания для доступа к регистрам периферии и STM32F30x_StdPeriph_Driver (в новых версиях переименован в HAL)
Всё это ищется в недрах сайта st.com ldscripts были найдены в каком-то демо-проекте 😀
Вот как-то так =)
2 комментария
Здравствуйте. Признателен вам за ваши публикации. Отличная статься по кросс компиляции для rasbberry и ubuntu. Видимо данная статья писалась слишком давно, на нынешние релизы тулчейна и QT не все гладко подходит, или я делаю что то не правильно. Можете ли подсказать с чем могут быть связаны ошибки такого плана
:-1: предупреждение: Encountered escaped linker flag ‘-Wl,—gc-sections’. This may cause the target to fail to link. Please do not escape these flags manually; qbs does that for you.
:-1: ошибка: unrecognised emulation mode: fpu=fpv4-sp-d16
Ради интереса я убирал этот ключ компиляции, но компилятор ругался на следующие ключи по порядку обьявления.
Можете ли вы посоветовать как можно решить эту проблему?
Доброго дня.
Система сборки QBS уже мертва, к сожалению. Создатели забросили её.
К сожалению, на данный момент помочь не могу, т.к. для текущего проекта использую прежнюю систему, для которой писался этот пост.
Возможно, через пару месяцев перейду на что-то новое. Вообще, можете попробовать вместо Qt Creator использовать Cube + Keil.