Вот уже несколько месяцев мы работаем над проектом под названием Boot to Qt, и наконец настал тот день, когда мы можем продемонстрировать его как Technology Preview.
Boot to Qt предназначен для создания пользовательских приложений для встроенных устройств. В его состав входят:
- Легкий UI-стек для встраиваемых Linux-систем на основе Qt Framework — Boot to Qt использует ядро и драйвера Android, а вместо Dalvik и Java-приложений используются приложения, написанные на Qt и QML;
- Готовые образы — создано несколько образов различных устройств, которые позволяют приступить к разработке под Boot to Qt с минимальными усилиями;
- Полная интеграция с Qt Creator позволяет в один клик запускать и отлаживать программы на реальном оборудование;
- Simulator — симулятор на основе VirtualBox позволяет программировать без использования реальных устройств.
Пока что за основу взят Android, однако мы планируем предоставить Boot to Qt и для традиционных встраиваемых Linux-систем этим летом. А официальный релиз состоится, предположительно, в конце этого года.
Видео работы на реальном железе:
Пример работы с Boot to Qt SDK:
Состав Boot to Qt
В Boot to Qt доступны почти все модули, которые предоставляет Qt:
- Qt Core, Qt Gui, Qt Network, Qt Widgets, Qt Xml
- Qt QML и Qt Quick
- Qt Quick Controls
- Qt Graphical Effects
- Дополнительно доступны специфические возможности: виртуальная клавиатура, регулировка яркости и выключение/перезагрузка и т.д.
В рамках Technology Preview поддерживаемых устройств 3:
- Google Nexus 7 — 1.2 GHz Quad-Core ARM Cortex A9, Tegra 3 GPU, 1GB RAM
- Beagle Board xM — 1GHz ARM Cortex A8, PowerVR SGX530 GPU, 512MB RAM
- Boundary Devices SabreLite (Freescale i.MX 6) – 1 GHz Quad-Core ARM Cortex A9, Vivante GC2000 GPU, 1GB RAM
Пока что немного, но достаточно, чтобы начать. Если у вас есть предложения относительно других устройств, дайте нам знать. Архитектура x86 также поддерживается.
Текущая версия однопроцессная: имеющийся QML-лаунчер запускает остальные приложения в своем же процессе. Мы смотрели в сторону Android Gralloc API, но, похоже, его использование выходит за рамки первой версии Boot to Qt. Что касается модулей Multimedia и Webkit, то их поддержка предполагается, но, скорее всего, не в первой версии. В целом, текущего инструментария достаточно для решения многих сложных задач.
Производительность
Qt5 с его новой системой вывода Qt Quick 2.0 отлично подходит для работы на аппаратах даже с очень скромными характеристиками. Например, наш демо-лаунчер отображался с частотой 60 кадров на секунду на всех тестовых устройствах.
Мы следили за загрузкой процессора во время работы лаунчера на Nexus 7. В режиме ожидания, он использует шейдеры, чтобы добавить свечение на выбранный элемент, а также отрисовывает систему частиц на логотипе Qt в углу. Мы обнаружили, что в этом режиме загрузка процессора составляет около 50%. Когда мы коснулись экрана, она снизился до 30%, а когда мы начали водить пальце по экрану, она упала до уровня ниже 20%. Таким образом, чем больше мы делали на планшете, тем меньше была нагрузка на процессор! На самом же деле, мы столкнулись с динамическим изменением частоты процессора. Процессор Nexus 7 четырехъядерный, с тактовой частотой 1,2 ГГц (1.3Ghz при одноядерном режиме работы), но в режиме ожидания использовалось всего одно ядро, при этом частота снизилась до 102Mhz. Таким образом, для прорисовки большей части экрана с разрешением 1280×800 при 60fps на процессор с тактовой частотой 102Mhz использовался лишь наполовину!
Для сравнения, та же анимация работает на 2% CPU на i.MX6 и 15% на Beagle, на которых динамическое изменение частоты отсутствует.
Также, время запуска с нуля до рабочего состояния, по сравнению с аналогичным показателем Android, уменьшилось. Ниже приводятся результаты сравнения Boot to Qt и родного Android. Конечно, Android приносит много дополнительных вещей, но большинству встроенных устройств все это не нужно.
Результаты не слишком впечатляют, но мы надеемся немного сократить время запуска при использовании различных встраиваемых Linux-конфигураций. Ведь для запуска Qt5 на Raspberry Pi нужно всего лишь 3 секунды.
Получить дополнительную информацию вы можете на странице Boot to Qt.
Пока Boot to Qt доступна только по запросу, для этого вам нужно заполнить контактную форму. И, конечно, вы можете задавать вопросы и комментировать оригинальный пост (не забывайте, что это перевод).
Наслаждайтесь!
Автор: tsymbaliuk