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

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

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

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

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



  1. Добавлена интеграция с Keil MDK

    Главным новым улучшением является интеграция с отладчиком из Keil MDK v5. Keil предоставляет некий UVSC проприетарный интерфейс для интеграции отладчика со сторонними клиентскими приложениями. В качестве прослойки они предоставляют динамическую библиотеку (которая поставляется с самим Keil) и описание API для нее.

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

    На данный момент поддерживаются следующие отладчики:
    Отладчик Архитектура Описание
    Simulator ARM Позволяет про симулировать работу MCU при отстутствии аппаратного отладчика.
    ST-Link ARM Позволяет отлаживать целевые MCU от STMicroelectronics.


    На данный момент поддерживаются следующие микроконтроллеры:
    MCU Архитектура Примечание
    STM32 от STMicroelectronics ARM По крайней мере точно работает с STM32F1x и STM32F4x.

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

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



    Итак, базовые шаги настройки комплекта для компиляции и отладки Keil-овским набором инструментов выглядит следующим образом:

    1. Создание нового «bare-metal» устройства.

      Запустить создание нового устройства в «Tools -> Options -> Devices -> Add -> Bare Metal Device» и задать любое имя для этого устройства (пусть будет stm32f4), и поле провайдера сервера отладки оставить «None»:


    2. Выбор и настройка отладчика.

      На странице нового созданного устройства нажать на кнопку «Manage» для добавления провайдера отладки:



      И в выпадающем списке «Add» выбрать «UVision ST-Link»:



      Затем, необходимо выбрать путь к файлу 'tools.ini', который обычно находится в корневой директории установленного Keil:



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

      Далее, необходимо выбрать тип целевого устройства, которое планируется отлаживать, для чего нажать на кнопку «Target device -> Manage»:



      И в открывшемся диалоговом окне выбрать интересующее устройство (в моем случае я работаю с STM32F407 из отладочной платы STM32F4DISCOVERY):



      Примечание: Для этого необходимо чтобы в Keil заранее были установлены соответствующие «DFP» пакеты при помощи утилиты PackInstaller.

      Далее, нужно выбрать драйвер отладчика для работы, нажав на кнопку «Target driver -> Manage»:



      И в открывшемся диалоговом окне выбрать «ST-Link Debugger»:



      Теперь нужно вернуться на вкладку созданного устройства и выбрать наш сконфигурированный провайдер:


    3. Создание комплекта.

      Для чего нужно добавить новый комплект на вкладке «Tools -> Options -> Kits -> Add» и установить ему компиляторы (C и C++), отладчик и наше устройство. При этом, во вкладке с Qt установить «None»:



    Теперь можно компилировать и отлаживать проекты, используя QBS (как известно, на данный момент все это «заточено» именно под QBS).

    Например, можно открыть готовый QBS пример для STM32F4DISCOVERY и поморгать светодиодом.



    Что поддерживается:

    • Запуск/останов отладчика.
    • Шаги отладки Step-in/out/over/instruction.
    • Отображение и редактирование локальных переменных.
    • Отображение и редактирование переменных в Watch окне.
    • Отслеживание стека.
    • Отображение и редактирование стандартных регистров (не периферийных).
    • Установка точек-останова.

    Что еще НЕ поддерживается:

    • Просмотр/редактирование памяти.
    • Отображение и редактирование периферийных регистров.

    Какие есть ошибки:

    • Точки останова работают частично: некоторые устанавливаются нормально, а некоторые блокируются и возвращают ошибку тайм аута через 10 секунд, что вызывает «замирания» интерфейса Qt Creator. Это связано с ошибками в самом движке UVSC. Но это уже поправлено (магическим образом, через одно место) в следующей версии Qt Creator.
    • Невозможно получить информацию о корневом 'main' стеке (адрес, имя функции и пр.). Это связано с ошибками в самом движке UVSC.
    • Невозможно получить адреса локальных переменных (за исключением массивов и структур). Это связано с ошибками в самом движке UVSC.
    • Невозможно получить информацию о текущем кадре стека после 'step-into' и 'step-over' при переходе из корневого 'main' стека: всегда возвращается ошибка. Поэтому из 'main' стека Qt Creator выполняет 'step-instruction', как обходной вариант. Это связано с ошибками в самом движке UVSC.
    • Некорректное отображение значений полей структур после их инициализации в некоторых магических случаях. Это связано с ошибками в самом движке UVSC.

    Подробнее о текущем состоянии можно ознакомиться здесь.

    Примечание: Естественно, я писал об этих найденных ошибках в UVSC в поддержку Keil, но они игнорируют все это, т.к. я использую «evaluation» версию Keil. Говорят, что, извините, купите и тогда поговорим. Но это же нонсенс! Зачем мне покупать заведомо нерабочее ПО!

    Конечно, не судите строго, это всего-лишь первый шаг… Как говорится: лиха беда начало.

  2. Добавлены новые отладчики для GDB

    Добавлена поддержка следующих новых отладчиков:
    Отладчик Тип
    Segger J-Link GDB
    EBLink GDB


    Подробно расписывать их настройку я здесь не буду, т.к. там все просто.

Улучшения в QBS


Что касается программирования микроконтроллеров, то скажу что добавлена поддержка и авто-определение новых архитектур от Renesas для IAR EW.

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

Имя архитектуры Значение свойства
Renesas V850 v850
Renesas 78K 78k
Renesas RL78 rl78
Renesas RX rx
Renesas RH850 rh850

Что дальше


В следующих версиях в QBS планируется добавить архитектуры C251, C166 для Keil, а для Qt Creator новые отладчики и поддержку новых микроконтроллеров для Keil.

На этой ноте я заканчиваю свое повествование, всем спасибо, кто уделит внимание этому обзору.