Spec-Zone.ru › Qt 5.11

Заметки по платформе и компилятору — QNX

Поддерживаемые архитектуры и релизы QNX

С точки зрения платформы разработки приложений, Qt работает поверх QNX Neutrino RTOS. Системные интеграторы и разработчики приложений используют QNX SDP (Software Development Platform), который включает компоненты QNX Neutrino RTOS для различных целевых платформ и полный набор инструментов разработки. QNX Software Systems также предоставляет дополнительные пакеты, которые расширяют стандартный набор функций QNX Neutrino RTOS. В настоящее время эти пакеты включают:

  • QNX SDK для приложений и медиа 1.0.
  • Платформа QNX CAR 2.1.

Qt 5 в настоящее время протестирован и поддерживается на QNX SDP 6.6 с QNX SDK для приложений и медиа, см. раздел Требования к сборке для получения более подробной информации. Поддерживаемые архитектуры — ARMle-v7 и x86. Более старые версии QNX SDP и другие архитектуры также могут работать, но не проходят регулярные сборки и тестирование.

Для получения конкретного списка доступных платформ, дисплеев и устройств ввода обратитесь в QNX Software Systems (info@qnx.com) или KDAB (qnx-info@kdab.com). Qt на QNX Neutrino OS также поддерживается Qt Enterprise Embedded, свяжитесь с The Qt Company для получения дополнительной информации.

Поддерживаемые модули

Почти все модули Qt Essential modules и некоторые дополнения поддерживаются в QNX Neutrino RTOS. Подробную информацию см. на странице статуса на вики-странице проекта Qt.

Если вы собираете Qt из архива распространения исходного кода, инструмент configure гарантирует, что сборка будет выполнена только для модулей, которые известны как совместимые с указанной целевой платформой. Кроме того, вы можете явно исключить неподдерживаемые или не требуемые модули из сборки, используя параметр -skip <module> при работе с инструментом configure.

Если вы собираете Qt непосредственно из репозитория Git, вы должны инициализировать репозиторий только с поддерживаемыми модулями или собирать и устанавливать модули по отдельности. Это помогает предотвратить неожиданные проблемы при сборке.

Требования к сборке

Для сборки Qt 5 требуются следующие пакеты, доступные на сайте QNX (доступ требует регистрации):

  • SDP 6.6 с QNX SDK для приложений и медиа 1.0. Это сочетание является текущей эталонной платформой для Qt на QNX Neutrino RTOS и должно быть вашим первым выбором.
  • SDP 6.6. По сравнению с предыдущей конфигурацией, этот вариант не использует QNX SDK для приложений и медиа 1.0, который обеспечивает fontconfig и поддержку мультимедиа вместе с другими функциями. В этом случае Qt будет использовать внутреннюю базу данных шрифтов вместо fontconfig, а мультимедиа будет недоступна.

Компилятор и другие части инструментальной цепочки предоставляются в пакетах SDP. Вам не требуется никакой дополнительной установки на ваш хост-ПК. Тем не менее, рекомендуется убедиться, что вы можете собрать Qt на хосте для целевой платформы настольного компьютера. Подробную информацию см. в разделе Сборка исходных кодов Qt. Все поддерживаемые целевые платформы QNX Neutrino RTOS полностью интегрированы в make-файлы, предоставленные в исходных кодах Qt. Вам просто нужно указать имя целевой платформы для кросс-компиляции при конфигурировании сборки Qt:

Для ARM:

./configure -xplatform qnx-armle-v7-qcc

Для x86:

./configure -xplatform qnx-x86-qcc

Инструмент configure выполняет различные тесты для определения возможностей SDP и его дополнений. Он устанавливает соответствующие флаги в зависимости от результатов тестирования. При необходимости проверьте сводку конфигурации в консоли или в ./qtbase/config.summary, и установите другие флаги вручную, если это необходимо. Подробную информацию см. в разделе Параметры конфигурации Qt.

Независимо от платформы, для которой вы собираете, рассмотрите использование параметра -prefix вместе с configure, например, -prefix <Qt-install-path>. Это определяет целевую папку, куда Qt будет установлен, и помещает все артефакты сборки вне дерева исходных кодов.

Требования к целевой платформе Qt Runtime

QNX Software Systems предоставляет решения ПО для создания встроенных устройств. Это включает в себя создание загрузочных образов QNX Neutrino RTOS очень гибким способом. Несмотря на то, что QNX предоставляет несколько эталонных скриптов для создания образа ОС, рано или поздно вам потребуется внести изменения или вы можете решить создать образ ОС с нуля. Qt полагается на существование нескольких компонентов сторонних производителей и выбранных сервисов ОС. По этой причине загрузочные образы QNX Neutrino RTOS для целевого устройства, на котором работает Qt, должны соответствовать нескольким требованиям, чтобы обеспечить правильную работу Qt. В разделах ниже перечислены важные компоненты для Qt.

Подсистема графики экрана QNX

Перед запуском любого приложения Qt должна быть запущена подсистема графики экрана QNX (также называемая просто «Экран»). Экран состоит не только из драйвера, но также включает несколько утилит и других служб, используемых Qt. Это включает в себя обработку событий мыши и клавиатуры. Вы можете убедиться, что экран настроен и работает правильно, убедившись, что графическое приложение, такое как gles2-gears, может быть запущено и работает без проблем. Большинство последних скриптов сборки ОС в SDP включают разделы со всеми компонентами и командами запуска для экрана. Используйте их как эталон.

Поддержка IPv6

Стек сетевых протоколов Qt требует поддержки IPv6, независимо от того, использует ли фактическая сеть IPv4 или IPv6. Это означает, что io-pkt-v6-hc должен быть запущен, а не io-pkt-v4.

Служба устройства случайных чисел /dev/random

Qt требует /dev/random для присутствия и работоспособности. Запустите её перед запуском любого приложения Qt или во время запуска системы:

random -p
waitfor /dev/random

Служба системного журналирования

QNX предоставляет slog2 — фреймворк для журналирования, адаптированный к особенностям встроенных систем. Основным преимуществом является значительно лучшая производительность по сравнению с выводом текста в файлы. Qt по умолчанию использует этот фреймворк для любого вывода в журнал, проходящего через QDebug в QNX Neutrino RTOS. Служба slog2 должна быть запущена во время запуска системы. Также slog2 зависит от существования папки /tmp, которая также должна быть настроена, например:

[type=link] /tmp=/dev/shmem
display_msg "Starting slogger2..."
slogger2 -U1001:1000 &
waitfor /dev/slog2

Переменные среды

Существует набор переменных среды, которые следует установить при запуске приложения Qt. Большинство из них не специфичны для QNX Neutrino RTOS. Они всё же упоминаются здесь, так как знание их сэкономит много времени в случае проблем.

Расположение Qt Runtime

Если вы не собирали Qt с включённым RPATH, вы можете поместить компоненты Qt runtime в любую папку в файловой системе. Следующие переменные среды должны указывать на допустимые расположения, предполагая, что установка Qt находится в <Qt-install-path>:

  • LD_LIBRARY_PATH должна содержать путь к библиотекам Qt в <Qt-install-path>/lib
  • QT_PLUGIN_PATH определяет, где расположены плагины Qt. Она должна быть установлена в <Qt-install-path>/plugins
  • QML2_IMPORT_PATH определяет, где расположены плагины Qt Quick 2. Она должна быть установлена в <Qt-install-path>/qml
  • QML_IMPORT_PATH требуется только при использовании совместимого модуля Qt Quick 1. Она должна быть установлена в <Qt-install-path>/imports
  • Если Qt не использует fontconfig, вам нужно указать путь к шрифтам, предоставленным в Qt, и установить QT_QPA_FONTDIR в <Qt-install-path>/lib/fonts

Физический размер экрана

Qt нуждается в информации о физических размерах подключённого дисплея для определения значений DPI и, таким образом, установки корректных размеров шрифтов. Обычно эта информация предоставляется подсистемой экрана. В некоторых случаях вы можете увидеть некорректный размер экрана, например, 0ммx0мм. В таком случае Qt требует переменной среды QQNX_PHYSICAL_SCREEN_SIZE с соответствующими значениями, чтобы получить необходимую информацию. Если приложения Qt завершаются с сообщением об ошибке, что физический размер экрана не может быть определён, установите переменную следующим образом перед запуском приложения Qt:

export QQNX_PHYSICAL_SCREEN_SIZE=150,100

чтобы сообщить Qt, что в этом конкретном случае экран имеет ширину 150 мм и высоту 100 мм. Физический размер экрана измеряется в миллиметрах (мм) и должен соответствовать фактическому физическому размеру дисплея в окончательной конфигурации.

Устранение неполадок при первом запуске приложения Qt

Единственный недостаток большой гибкости, предоставляемой QNX Neutrino RTOS, — это риск того, что на вашей целевой платформе что-то всё ещё отличается от ожидаемого Qt. Это очень распространённая причина, почему первое приложение Qt на новой целевой платформе не запускается. Несколько общих переменных среды могут помочь в поиске причины проблем:

  • Установка QT_DEBUG_PLUGINS в 1 помогает определить, почему плагин QPA не может загрузиться.
  • Установка LD_DEBUG в 1 помогает увидеть, где и как загружаются общие библиотеки. Это можно использовать в сочетании с QT_DEBUG_PLUGINS при невозможности загрузки плагина из-за невозможности загрузки других общих библиотек.
  • Установка QT_LOGGING_TO_CONSOLE заставит отправлять все сообщения о журнале в stderr вместо slog2. Это очень удобно при анализе проблем запуска приложения, так как вам не нужно использовать другой инструмент, чтобы увидеть сообщения.

Библиотеки сторонних производителей

Убедитесь, что ваш образ системы содержит следующие дополнительные библиотеки сторонних производителей, которые не всегда включаются в минимальные образы QNX Neutrino RTOS:

  • libfontconfig (предоставлен дополнительно к стандартной установке SDP 6.6)
  • libfreetype
  • libiconv
  • libicui18n
  • libicudata
  • libicuuc
  • libpng14
  • libxml2
  • libsqlite3
  • libssl
  • libcrypto

Обратите внимание, что вышеприведённый список не является полным списком общих библиотек, используемых Qt в QNX Neutrino OS. Довольно много общих библиотек уже доступны в типичных образах ОС или включены другими частями системы, например, подсистемой экрана.

Доступ к переменным среды

setconf и getconf необходимы для доступа к переменным среды POSIX, особенно для имени хоста, времени и даты.

Требования к целевой платформе Qt Creator

Целевой QNX Neutrino RTOS, используемый для разработки с Qt Creator, должен предоставлять несколько дополнительных командных утилит и сервисов.

SSH

Развертывание и запуск удаленных приложений полагается на SSH. Демон SSH (sshd) должен быть установлен и запущен во время запуска системы. Обратите внимание, что он требует /dev/random, о чем уже упоминалось. Он также ожидает корректной установки определенных прав доступа к своим конфигурационным файлам. Последнее делает невозможным запуск SSH из файловой системы, которая не поддерживает полные права доступа, например, FAT.

SCP и SFTP

scp и sftp утилиты используются Qt Creator для развертывания и должны быть доступны на целевом устройстве. Кроме того, демон inetd должен запускаться при запуске системы, что затем запускает соответствующие сервисы, включая FTP при необходимости.

QNX-инструменты для удаленной отладки

Удаленная отладка требует запуска pdebug (отладчика уровня процессов) на устройстве разработки. Обычно он запускается процессом qconn, который также предоставляет Qt Creator различные данные о процессах. В целом, Qt Creator использует те же интерфейсы удаленной отладки, что и IDE QNX Momentics, предоставляемая в SDP. Более подробную информацию см. в соответствующей документации.

Другие утилиты на целевом устройстве

Большинство скриптов сборки ОС включают набор стандартных командных утилит. Еще несколько утилит требуются Qt Creator и должны быть предоставлены на целевом устройстве:

  • printf
  • awk
  • ps
  • tar
  • zip
  • unzip
  • sed

Запустите тест при настройке нового целевого устройства в Qt Creator, чтобы проверить, что все необходимые компоненты доступны и запущены.

Папка назначения развертывания

Qt Creator развертывает приложение на целевом устройстве перед его удаленным запуском. На большинстве встраиваемых устройств это просто копирование бинарных файлов приложения и связанных данных в папку на целевом устройстве. Сложность заключается в том, что до сих пор нет стандарта, как эта папка называется и где она расположена. Многочисленные конфигурации используют /tmp для этого, что часто отображается на RAM-диске. Этот случай вызывает много путаницы, так как развернутые приложения исчезают при следующем выключении устройства. Еще одним популярным целевым устройством является /opt. Эта папка расположена в разделе только для чтения на многих системах, что делает развертывание невозможным. Убедитесь, что используемая папка назначения соответствует вашим потребностям. Вы можете установить ее в переменной install.path в файле .pro вашего проекта. Более подробную информацию см. в разделе Установка файлов в документации по QMake.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/platform-notes-qnx.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API