Как стать автором
Обновить

Обзор возможностей Qt Creator 4.11 и QBS 1.15 для программирования микроконтроллеров

Qt *Программирование микроконтроллеров *
Здравствуйте, товарищи программисты «железячники» и все кто им сочувствует. Я хотел бы продолжить обзор возможностей IDE Qt Creator в связке с системой сборки QBS в части программирования микроконтроллеров.

Ранее я уже писал про улучшения в предыдущих версиях QtC 4.10 и QBS 1.14.

Кому эта тема интересна, добро пожаловать по кат.

Буквально на днях, тихо и незаметно, вышел релиз Qt Creator 4.11, в котором добавлены некоторые улучшения для работы с микроконтроллерами (в простонародье — «baremetal» устройствами). В этот релиз Qt Creator интегрирована сборочная система QBS 1.15 в которой также есть новые улучшения (ее еще не зарелизили).

Улучшения в Qt Creator


Все эти улучшения доступны только при включенном плагине BareMetal, который активируется через меню «Help -> About Plugins -> Device Support -> BareMetal».

  1. Добавлены новые архитектуры в компиляторы GCC, SDCC и IAR EW, основные сведения о которых приведены ниже в таблице:
    Компилятор Поддерживаемые архитектуры
    IAR EW STM8, MSP430
    GCC MSP430
    SDCC STM8

    Теперь эти новые компиляторы автоматически определяются на вкладке «Tools -> Options -> Kits -> Compilers -> Auto-detected».

    Например, у меня это выглядит следующим образом:



    В ОС Windows авто-определение компилятора GCC для архитектуры MSP430 не реализовано, т.к. данный набор предоставляется в виде простого архива, а не в виде инсталлятора.

    Но никто не мешает добавить этот GCC компилятор (да и любой другой поддерживаемый) вручную, при этом, Qt Creator корректно определит ABI компилятора:



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

  2. По пожеланиям трудящихся была добавлена поддержка SVD файлов описания регистров периферии микроконтроллеров.

    Примечание: Как я знаю, эта возможность доступна только для ARM-ов (хотя, могу ошибаться) и пока что носит экспериментальный характер.

    Для использования этой возможности необходимо сначала в настройках устройства «Tools->Options->Devices->YourDevice» в поле «Peripheral description file» выбрать нужный SVD файл, соответствующий целевому микроконтроллеру:



    Примечание: Эти файлы можно скачать как с сайта ARM, так и взять из директорий с установленными продуктами Keil MDK или IAR EW.

    Далее, после запуска отладки нужно в меню «Window->Views» выбрать «Peripheral Registers». После чего откроется панель «Peripheral Registers» (аналогичная панели «Registers») в которой по клику правой клавиши мыши вызовется меню с перечнем групп регистров, которые необходимо отобразить:



    Выбираем любую группу (например RCC) и, получаем список всех регистров из данной группы с их подробным описанием и значениями, которые можно читать/писать:



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

Улучшения в QBS


QBS будет неотъемлемой частью данного обзора, поэтому имеет смысл поговорить и об его улучшениях:

  1. Добавлена поддержка этих новых компиляторов и реализована возможность автоматического определения установленных компиляторов и создания профилей.

    Свойство qbs.architecture имеет следующие значения:

    Имя архитектуры Значение свойства
    STM8 stm8
    MSP430 msp430

  2. Добавлена поддержка генераторов в проекты Keil MDK и IAR EW для следующих архитектур и версий:

    IDE Архитектура Генератор
    KEIL uVision 5.23 ARM keiluv5
    KEIL uVision 5.23 MCS51 keiluv5
    IAR EW 8.40.1 ARM iarew8
    IAR EW 3.11.1 STM8 iarew3
    IAR EW 10.10.1 MCS51 iarew10
    IAR EW 7.12.4 MSP430 iarew7
    IAR EW 7.20.1 AVR iarew7

    Примечание: В таблице выше представлены версии продуктов с которыми шла разработка генераторов и более-менее проверялась работоспособность.

    Таким образом, теперь можно этими генераторами создать нативный проект для желаемой целевой IDE. При этом, каждый генератор будет преобразовывать все компилятор-специфические флаги, пути, зависимоси, заданные в QBS проекте в соответствующие настройки целевого IDE проекта.

    Если исходный QBS проект содержал несколько продуктов (например, приложения, библиотеки и пр.), то генератор создаст целевой «workspace» с вложенными под-проектами «project» для каждого целевого IDE.

    Примечание: Сразу оговорюсь, что, как я знаю, IDE от KEIL или IAR EW не поддерживают отслеживание зависимостей (если я не прав — поправьте). Поэтому, например, если проект содержит приложение и зависимость в виде библиотеки, то пользователю нужно будет сначала собрать библиотеку, а потом уже само приложение.

    Для генерации проектов необходимо иметь уже настроенные профили QBS с соответствующими компиляторами.

    Примечание: Пока что без профилей не обойтись, т.к. генератор из профиля получает саму архитектуру, пути к пред-установленному компилятору (IDE) и прочее. Эти данные нужны для корректного поиска скриптов линковщика, путей к runtime библиотекам и прочих специфических вещей (там не простая логика).

    Например, чтобы создать целевой проект для IAR EW и ARM микроконтроллера, достаточно выполнить следующую команду:

    qbs generate -g iarew8 -d <path/to/build/directory> -f <path/to/qbs/project/file> profile:<your/qbs/profile/for/arm>
    

    Имена профилей можно получить используя, к примеру, GUI утилиту qbs-config-ui (или использовать консольный вариант).

    Примечание: На данный момент, генераторы имеют экспериментальный статус. Возможно, в некоторых случаях (если исходный проект сложный) они будут генерировать некорректные целевые файлы проектов, или пропускать некоторые флаги и прочее. Сильно не ругайте, а создавайте баг-репорты в QBS трекере.

Текущий статус поддержки компиляторов можно посмотреть здесь, а текущий статус интеграции генераторов — здесь.

Чтобы посмотреть как это все работает, QBS предоставляет набор простейших примеров.

Что дальше


В следующих версиях планируется добавить архитектуры от Renesas и генераторы в IAR EW для этих архитектур (не знаю, успеется ли). А также, если очень повезет, то в Qt Creator будет интегрирован отладчик от Keil uVision.

На этой ноте я заканчиваю свое повествование, всем спасибо, кто уделит внимание этому обзору.
Теги: qtcreatorqbsbaremetal
Хабы: Qt Программирование микроконтроллеров
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 14
Комментарии Комментарии 14

Похожие публикации

Лучшие публикации за сутки