Использование Qbs для работы с STM8/SDCC в QtСreator (обновлено)

разделы: среда разработки, STM8, дата: 29 июля 2022, обновлено 1 сентябряг.

Спустя долгое время, я решил узнать как обстоят дела с поддержкой STM8 в SDCC. Последней версией SDCC которой я пользовался был 3.6. За это время OpenOCD официально обзавелся поддержкой STM8. И т.к. в Linux я пользуюсь преимущественно IDE QtCreator, был соблазн перетащить туда проекты на STM8. Главная сложность возникла с системой управления сборки. QtCreator умеет работать только с qmake, qbs и cmake проектами. Qmake не поддерживает sdcc никоим образом. У CMake поддержка заявлена, но она чисто декларативная. Таким образом нам остается только Qbs.

Ранее для STM8 я пользовался STVD+Cosmic, но это требовало работы из виртуальной машины. STVD - отличная среда разработки, но в визуальном плане она устарела уже давно. Отсутствие темной темы и линтера конечно не принципиально, но без этого уже не комфортно работать. Кроме того Cosmic для проверки лицензии постоянно стучится в интернет. Я же предпочитаю отключать интернет в виртуалке.

Ок, но какие сложности нас ожидают?

  • Во-первых, придется порядком повозиться с этим с этим Qbs. Система плохо документированная и малоиспользуемая.
  • Во-вторых, отладка в QtCreator не такая комфортная как в STVD. Нет периферийных регистров, а ассемблерный код не сопровождается отладочной информацией. Что бы поставить, например, точку остановки на ассемблерное прерывание, сначала нужно узнать его адрес, и затем ставить break на физический адрес.
  • Ни и конечно приходится постоянно бороться с SDCC. Современный SDCC/STM8, в принципе, не так уж плох, но за ним приходиться постоянно следить, а проблемные участки кода переписывать в виде ассемблерных функций.

Итак, софт который нам понадобится для программирования микроконтроллеров STM8:

  1. stm8-binutils - Комплект утилит, который включает в себя: отладчик stm8-gdb, stm8-size, stm8-objdump и пр.
  2. OpenOCD - версии 0.11. Начиная с этой версии появилась поддержка SWIM протокола и чипов STM8
  3. QtCreator. Я использую версию 5.0.3 из SBo
  4. Qbs. Моя версия 1.16.0 так же из SBo. Она не самая свежая, но работает без вопросов.
  5. Для линтера в QtCreator потребуется плагин qt-creator-llvm и cppcheck.

Из аппаратного обеспечения нам достаточно будет платы c чипом STM8S103F3 и ST-Link V2 с поддержкой SWIM протокола.

Руководств и мануалов по использованию Qbs в baremetal-проектах почти нет. Есть несколько примеров для STM32, но так как там используется GCC, скрипт проекта будет отличаться от такового для SDCC.

Прежде чем начать что-то делать, настоятельно рекомендуется пройти по последним трем ссылкам, и изучить их содержимое.

Содержание:

I. Консольный Qbs проект для STM8+SDCC

  1. Знакомимся с Blink из примеров QBS
  2. Отладка прошивки
  3. Сборка прошивки в ELF-формат
  4. Раздельные профили компиляции "debug" и "release"
  5. Добавляем ассемблерный файл в проект

II. Работа с проектом в Qt Creator

  1. Настраиваем STM8 baremetal kit в QtCreator
  2. Качество кода SDCC

III. Бонус

  1. Qbs-скрипт для STM32F103C8-проекта на CMSIS (пошаговая инструкция)

IV. Добавленно позже

  1. Проблема с запуском OpenOCD для STM8

Читать дальше

Настройка: Eclipse, SW4STM32, STM32CubeIDE и Qt Creator, для отладки проекта на STM32F103C8 (BluePill)

разделы: STM32, среда разработки, дата: 16 ноября 2019г.

Данную статью по содержанию можно разделить на две или три части. С одной стороны я хотел рассказать в ней о конфигурации ряда IDE основанных на кодовой базе Eclipse, т.к. когда я впервые настраивал подключение отладчика к Eclipse и SW4STM32, мне не показался этот процесс простым и "интуитивно понятным".

Вторая часть статьи в каком-то роде продолжает прошлогоднюю статью по STM32, Т.к. в качестве демонстрационного примера берётся проект из той статьи. Однако, одним заимствованием ограничиться не получилось, и для развития идеи, я описал недостатки данного проекта, и предложил более совершенный вариант Makefile'а.

Получившийся Makefile дал возможность перенести проект на систему сборки CMake. Это в свою очередь дало возможность продемонстрировать использование Qt Creator для программирования и отладки микроконтроллеров STM32.

В техническом плане, проект используемый в качестве примера, очень простой. Это обычный Blink, состоящий из Си-кода и ассемблере ARM. Из ресурсов микроконтроллера используется лишь порт ввода-вывода GPIO_C и системный таймер SysTick. В проекте не затрагиваются DMA, USB, FSMC и прочие интерфейсы. Также в стороне осталась библиотека newlib, поддержка языка программирования C++, и работа с проектами STM32CubeMX. Т.е. несмотря на доработку проекта в статье, он все ещё годится лишь для несложных задач, и более соответствует уровню микроконтроллеров с архитектурой Cortex-M0/M0+.

Используемые в статье Hardware и Software. В качестве операционной системы использовалась Slackware GNU/Linux (русские физики рекомендуют), в качестве целевого микроконтроллера - STM32F103C8T6 (Blue Pill). В качестве программатора и отладчика использовался китайский клон: "ST-Link v2", а также JTAG отладчик на чипе FT232H. Из софта, в качестве gdb сервера в статье используется: "OpenOCD", а в качестве флешера: "st-flash". Используемый туллчейн arm-none-eabi-gcc имеет версию - 8.3.1, релиз от 20190703. Версия CMake - 3.15.5. Qt Creator используемый при написании статьи был версий 4.9.2 и 4.10.2.

Должен предупредить, что свой ST-Linkv2 я покупал достаточно давно, и он на чипе STM32. Сейчас на али продаются программаторы ST-Linkv2 на чипе CKS32F103C8T6, и с ними могут быть нюансы.

Полезные материалы по теме статьи:

Содержание:

I. Отладка в Eclipse, SW4STM32 и STM32CubeIDE:

  1. Общая настройка
  2. Создание базового проекта
  3. Настройка параметров отладки (Debug)
  4. Настройка конфигурации Release
  5. Управление проектом в Eclipse
  6. Настройка SW4STM32
  7. Настройка STM32CubeIDE

II. "Допиливание" Makefile и создание на его основе CMake проекта:

  1. Использование Eclipse совместно со своим Makefile
  2. Ограничения используемого Makefile
  3. Устранение ограничений используемого Makefile
  4. Использование динамической памяти
  5. Eclipse + CMake

III. Использование Qt Creator для программирования и отладки микроконтроллеров STM32:

  1. Qt Creator + CMake + STM32

Читать дальше

STM8+SPL+COSMIC+STVD: Быстрый старт

разделы: STM8, среда разработки, дата: 6 ноября 2016г.

Как всем известно, с марта этого года компилятор COSMIC for STM8 стал полностью бесплатен и без ограничений на размер генерируемого кода. Он имеет полную поддержку SPL(Standard Peripheral Library) и фирменой среды разработки - STVD(ST Visual develop IDE).

К сожалению, Cosmic работает только под операционными системами Windows, и для активации требует лецензионный ключ который можно прождать несколько дней. С другой стороны, stm8flash в Linux не умеет прошивать STM8L151C8, а с COSMIC через виртуалку вполне можно работать, да из под Wine он тоже запускается.

Ок, для начала нам потребуется скачать SPL и STVD c сайта https://my.st.com, а с сайта http://www.cosmic-software.com/download.php сам компилятор COSMIC. Как скачать SPL я рассматривал год назад в Введение в STM8: программирование и прошивка с помощью клона ST-Link v2, версия для Linux, а связку STVP+STVD весной в STM8 + IAR + ST-LINK2: программирование, прошивка и отладка из под Windows. Однако с тех многие ссылки побились, поэтому предлагаю пройти квест заново. Потому что поиск чего-то на st.com, действительно напоминает дурной квест.

В качестве целевого чипа я буду использовать STM8S103F3P6, изредка переключаясь на STM8L051/STM8L151 там, где есть необходимость.

Читать дальше

Создание проекта для AVR: файлы Makefile и CMakeLists.txt, использование Qt Creator в качестве AVR IDE, библиотека Procyon AVRlib

разделы: среда разработки, дата: 20 октября 2015г.

Если посмотреть на исходник в предыдущем посте, то можно заметить, что программная часть работы с UART "кочует" из поста в пост, и правильно было бы выделить ее в отдельный файл, как впрочем и реализацию работы с TWI модулем. Развивая мысль, мы придем к необходимости, какой-то библиотеки, куда можно будет скидывать собственные наработки по работе с тем или иным модулем. По правде говоря такоя библиотека уже есть, называется: Procyon AVRlib. Изучение ее безусловно всем рекомендую, но... она стара, как баба-яга, а библиотека для микроконтроллера не шибко сложная вещь, и вероятно каждый, по мере изучения avr-архитектуры, захочет написать собсвенный аналог "с трехмерными шахматами и нейронными диструктурами".

Итак, цель надеюсь понятна, для начала напишем файл проекта Makefile, это будет попроще. Затем, что бы код для AVR можно было писать в Qt Creator, сделаем еще CMakeLists.txt

В качестве "подопытного" кода возмем пример из предыдущего поста. Выделим из него модули UART и TWI, тогда сруктура директорий будет примерно такой:

Читать дальше