Ранее я уже писал про улучшения в предыдущих версиях QtC 4.10 и QBS 1.14, QtC 4.11 и QBS 1.15.
Кому эта тема интересна, добро пожаловать по кат.
Буквально на днях, тихо и незаметно, вышел релиз Qt Creator 4.12, в котором добавлены некоторые улучшения для работы с микроконтроллерами (в простонародье — «baremetal» устройствами). В этот релиз Qt Creator интегрирована сборочная система QBS 1.16 в которой также есть новые улучшения.
Улучшения в Qt Creator
- Добавлена интеграция с 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-овским набором инструментов выглядит следующим образом:
- Создание нового «bare-metal» устройства.
Запустить создание нового устройства в «Tools -> Options -> Devices -> Add -> Bare Metal Device» и задать любое имя для этого устройства (пусть будет stm32f4), и поле провайдера сервера отладки оставить «None»:
- Выбор и настройка отладчика.
На странице нового созданного устройства нажать на кнопку «Manage» для добавления провайдера отладки:
И в выпадающем списке «Add» выбрать «UVision ST-Link»:
Затем, необходимо выбрать путь к файлу 'tools.ini', который обычно находится в корневой директории установленного Keil:
Примечание: Этот файл содержит конфигурацию Keil-а, включающую в себя пути к установленным пакетам описания микроконтроллеров, а также список доступных отладчиков.
Далее, необходимо выбрать тип целевого устройства, которое планируется отлаживать, для чего нажать на кнопку «Target device -> Manage»:
И в открывшемся диалоговом окне выбрать интересующее устройство (в моем случае я работаю с STM32F407 из отладочной платы STM32F4DISCOVERY):
Примечание: Для этого необходимо чтобы в Keil заранее были установлены соответствующие «DFP» пакеты при помощи утилиты PackInstaller.
Далее, нужно выбрать драйвер отладчика для работы, нажав на кнопку «Target driver -> Manage»:
И в открывшемся диалоговом окне выбрать «ST-Link Debugger»:
Теперь нужно вернуться на вкладку созданного устройства и выбрать наш сконфигурированный провайдер:
- Создание комплекта.
Для чего нужно добавить новый комплект на вкладке «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. Говорят, что, извините, купите и тогда поговорим. Но это же нонсенс! Зачем мне покупать заведомо нерабочее ПО!
Конечно, не судите строго, это всего-лишь первый шаг… Как говорится: лиха беда начало.
- Создание нового «bare-metal» устройства.
- Добавлены новые отладчики для 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.
На этой ноте я заканчиваю свое повествование, всем спасибо, кто уделит внимание этому обзору.
Siemargl
А как же Deprecation of Qbs, или оно не касается Qt for Devices etc?
Sazonov
Этот вопрос регулярно всплывает в темах этого автора.
Впрочем, если инструмент задепрекейтили, то это вовсе не значит что он перестал решать свои задачи.
kuzulis Автор
Есть люди, заинтересованные в продолжении развития QBS. Тот факт, что от него отказались Qt-шники ничего не меняет. Есть очень хорошая (но маленькая) команда которая продолжает развитие.
PS: Да и надоело, если честно, это ежедневное «нытье» в комментариях о депрекации QBS. Вышло уже несколько релизов «от сообщества», а народ все ноет и ноет.
Siemargl
Ну я не ною, просто вообще 1й раз про QBS слышу, а попытка нагуглить дает второй ссылкой про устаревание.
То что ее развивает сообщество, а не фирма — не надо стесняться, можно было просто это упомянуть.
И ссылку, чем она хороша.