Qt pour VxWorks
Contactez The Qt Company pour plus d'informations : https://www.qt.io/contact-us/
Licence de Qt pour VxWorks
Qt pour VxWorks est disponible sous la licence Qt for Device Creation Professional (DCP). Pour plus d'informations, voir Qt Pricing.
Architectures et versions de VxWorks prises en charge
Qt 6.10 est vérifié sur VxWorks 25.03.
Architectures prises en charge :
- ARM-v7-Testé sur BD-SL-i.MX6. BSP utilisé : fsl_imx6
- x86_64-Testé sur Intel NUC6i3SYH. BSP utilisé : itl_generic
Si vous êtes intéressé par les versions ultérieures de Qt, veuillez contacter les services professionnels de Qt.
Configuration requise pour VxWorks
Qt Widgets Applications
- Prise en charge de POSIX
- Prise en charge de C++17
Qt Quick 2 applications
Toutes les fonctionnalités requises pour les applications Qt Widgets, ainsi que les éléments suivants :
- Dispositif GPU (GPUDEV) pour OpenGL ES 2.0
Modules pris en charge
La plupart des modules Qt essentiels et certains modules complémentaires sont pris en charge.
Modules essentiels pris en charge
| Module Qt | Remarques |
|---|---|
| Qt Core | Pas de support pour QProcess. QLocalSocket et QLocalServer supportent seulement SOCK_SEQPACKET. |
| Qt GUI | Sans objet |
| Qt Network | Sans objet |
| Qt Qml | Sans objet |
| Qt Quick | Sans objet |
| Qt Quick Contrôles | Sans objet |
| Qt Quick Dialogues | Sans objet |
| Qt Quick Mises en page | Sans objet |
| Qt Quick Test | Sans objet |
| Qt Test | Sans objet |
| Qt Widgets | Sans objet |
Compléments pris en charge
Note : Vous pouvez explicitement exclure les modules non supportés ou non utilisés de la compilation via l'option -skip <module> lors de l'exécution de l'outil de configuration.
Notes sur la plate-forme
Qt est préparé pour être utilisé par des applications RTP, il n'y a pas de support pour DKM.
Avec la sortie de Qt 5.0, Qt ne contient plus sa propre implémentation du système de fenêtres : QWS n'est plus une plate-forme prise en charge. Pour les cas d'utilisation d'un seul processus, l'abstraction de plate-forme Qt est une solution supérieure.
Il existe un plugin utilisable sur VxWorks : EGLFS. La disponibilité de ce plugin dépend de la configuration de Qt.
Configuration pour un appareil spécifique
Préparez votre environnement en installant le SDK VxWorks et en obtenant la licence WindRiver qui est nécessaire à l'installateur et à la construction des images VxWorks. Recherchez le programme d'installation approprié sur {https://gallery.windriver.com/portal/products}.
La construction de Qt pour un dispositif donné nécessite une installation de Qt 6 pour l'hôte de compilation, une chaîne d'outils et un sysroot. Voir la section Compilation croisée de Qt pour plus de détails. En outre, certains appareils nécessitent un code d'adaptation spécifique au fournisseur pour le support EGL et OpenGL 2.0.
Exigences de l'image VxWorks
Qt pour VxWorks nécessite que certains bundles et composants d'images VxWorks soient intégrés dans le logiciel de base pour que Qt se compile et fonctionne correctement. La liste n'est en aucun cas exhaustive car elle dépend du matériel, du logiciel et des exigences du système de votre projet. Cependant, le tableau suivant contient ceux qui sont obligatoires pour que certaines fonctionnalités fonctionnent (y compris la prise en charge des écrans tactiles). Notez également que ces exigences peuvent changer en fonction des versions de VxWorks.
Exemple de configuration VSB pour les BSP fsl_imx6 et itl_generic
Vous devez ajouter les fonctionnalités suivantes au VSB pour que Qt fonctionne correctement. Pour plus de détails, veuillez consulter la documentation WindRiver VxWorks.
| Fonctionnalité | Notes (en anglais) |
|---|---|
DSI_DSI_KERNEL | Sans objet |
IPNET_COREIP | Sans objet |
IPNET_DHCPC | Sans objet |
SDMMC_DEVICE | Sans objet |
SDMMC_HOST | Sans objet |
SDMMC_SDHC | Sans objet |
SDMMC_STORAGE | Sans objet |
SERVICE_UN | Sans objet |
SOCKET | Sans objet |
USB_EHCI | Sans objet |
USB_KEYBOARD | Sans objet |
USB_MOUSE | Sans objet |
USB_STORAGE | Sans objet |
USB_TOUCHSCREEN | Sans objet |
EVDEV | Sans objet |
EVDEV_LIB | Sans objet |
EVDEV_TI_TSC2004_TS | Sans objet |
EVDEV_EETI_EXC7200_TS | Sans objet |
AUDIO | Sans objet |
GPUDEV_FSLVIVGPU | fsl_imx6 spécifique |
HASH | Non applicable |
OPENSSL | Non applicable |
RANDOM_ENTROPY_INJECT | Sans objet |
IPNET_SSH | Sans objet |
USER_MANAGEMENT | Sans objet |
ICU | Sans objet |
DRM | itl_générique spécifique |
ITLI915 | itl_générique spécifique |
LIBDRM | itl_generic spécifique |
MESA | itl_generic et nxp_imx8 spécifiques |
Les variables de configuration suivantes sont ajoutées implicitement et vous devez les supprimer :
| Variable | Remarques |
|---|---|
_WRS_CONFIG_EVDEV_OPTIMIZED_MODE | Sans objet |
_WRS_CONFIG_EVDEV_DISPLAY_POINT_TRANSLATE | Sans objet |
_WRS_CONFIG_MESA_MANGLE | itl_generic spécifique |
Vous devez ajouter les variables suivantes à la configuration :
| Variable | Valeur | Remarques |
|---|---|---|
_WRS_CONFIG_RTP_SSP | y | Sans objet |
_WRS_CONFIG_RTP_STACK_PROTECTOR | y | Sans objet |
_WRS_CONFIG_MESA_GPUDEV_INTEL_GEN90 | y | itl_generic spécifique |
_WRS_CONFIG_EVDEV_COMPATIBLE_MODE | y | Nécessaire pour que Qt fonctionne correctement avec un écran tactile. |
Exemple de configuration VIP pour les BSP fsl_imx6 et itl_generic
Pour plus de détails, veuillez consulter la documentation WindRiver VxWorks.
| Paquet | Remarques |
|---|---|
BUNDLE_POSIX | Ce bundle est nécessaire pour la compatibilité avec les fonctionnalités liées à POSIX dont Qt a besoin. |
BUNDLE_RTP_DEPLOY | Sans objet |
BUNDLE_RTP_DEVELOP | Sans objet |
BUNDLE_STANDALONE_SHELL | Sans objet |
| Composant | Remarques |
|---|---|
INCLUDE_TMP_DIR INCLUDE_RAM_DISK_FORMAT_HRFS | L'inclusion de ces deux composants est nécessaire si vous souhaitez utiliser QTemporaryFile. Notez que vous devriez également envisager de donner à TMP_DIR_SIZE la valeur appropriée. |
DRV_AUDIO_FSL_SSI | Sans objet |
DRV_AUDIO_FSL_SGTL5000 | Sans objet |
DRV_FSL_SDHC_CTRL | Sans objet |
DRV_IMX_SDHC_CTRL | Sans objet |
INCLUDE_EHCI_INIT | Sans objet |
INCLUDE_FSL_IMX6Q_SABRELITE | Sans objet |
DRV_MMCSTORAGE_CARD | Sans objet |
DRV_SDSTORAGE_CARD | Sans objet |
INCLUDE_AUDIO_LIB_CORE | Sans objet |
INCLUDE_AUDIO_LIB_WAV | Sans objet |
INCLUDE_CUSTOM_ENTROPY_ADD | Sans objet |
INCLUDE_DEBUG_AGENT_START | Sans objet |
INCLUDE_DEFAULT_TIMEZONE | Sans objet |
INCLUDE_DISK_UTIL | Sans objet |
INCLUDE_DOSFS | Sans objet |
INCLUDE_DSAPARAM_CMD | Sans objet |
INCLUDE_END | Sans objet |
INCLUDE_EVDEV_LIB_CORE | Sans objet |
INCLUDE_EVDEV_LIB_KBD | Sans objet |
INCLUDE_EVDEV_LIB_KBD_MAP_US | Sans objet |
INCLUDE_EVDEV_LIB_PTR | Sans objet |
INCLUDE_EVDEV_LIB_TS | Sans objet |
INCLUDE_GENDSA_CMD | Sans objet |
INCLUDE_GENRSA_CMD | Sans objet |
INCLUDE_GETADDRINFO | Sans objet |
INCLUDE_GETNAMEINFO | Sans objet |
INCLUDE_HRFS | Sans objet |
INCLUDE_HRFS_ACCESS_TIMESTAMP | Sans objet |
INCLUDE_HRFS_FORMAT | Sans objet |
INCLUDE_HRFS_HISPEED_WRITE_MODE | Sans objet |
INCLUDE_IFCONFIG | Sans objet |
INCLUDE_IO_REALPATH | Ce composant est nécessaire pour permettre l'utilisation de la fonction realpath nécessaire pour QFileInfo |
INCLUDE_IPATTACH | Sans objet |
INCLUDE_IPCOM_SYSLOGD_CMD | Sans objet |
INCLUDE_IPCOM_SYSVAR_CMD | Sans objet |
INCLUDE_IPCOM_USE_RAM_DISK | Sans objet |
INCLUDE_IPCOM_USE_TIME_CMD | Sans objet |
INCLUDE_IPDHCPC | Sans objet |
INCLUDE_IPDNSC | Sans objet |
INCLUDE_IPD_CMD | Sans objet |
INCLUDE_IPFTPC | Sans objet |
INCLUDE_IPFTP_CMD | Sans objet |
INCLUDE_IPIFCONFIG_CMD | Sans objet |
INCLUDE_IPNETSTAT_CMD | Sans objet |
INCLUDE_IPNSLOOKUP_CMD | Sans objet |
INCLUDE_IPPING_CMD | Sans objet |
INCLUDE_IPROUTE_CMD | Sans objet |
INCLUDE_IPTRACE_ROUTE_CMD | Sans objet |
INCLUDE_IPWRAP_GETHOSTBYADDR | Sans objet |
INCLUDE_IPWRAP_GETHOSTBYNAME | Sans objet |
INCLUDE_IPWRAP_GETNAMEINFO | Sans objet |
INCLUDE_IPWRAP_IFNAME | Sans objet |
INCLUDE_IPWRAP_ROUTECMD | Sans objet |
INCLUDE_MMAP | Sans objet |
INCLUDE_PING | Sans objet |
INCLUDE_PIPES | Sans objet |
INCLUDE_POSIX_MAPPED_FILES | Sans objet |
INCLUDE_POSIX_PIPES | Sans objet |
INCLUDE_POSIX_PTHREAD_SCHEDULER | Sans objet |
INCLUDE_POSIX_SHM | Sans objet |
INCLUDE_RAM_DISK | Sans objet |
INCLUDE_RAM_DISK_FORMAT_HRFS | Sans objet |
INCLUDE_RANDOM_NUM_GEN | Sans objet |
INCLUDE_ROMFS | Sans objet |
INCLUDE_ROUTECMD | Sans objet |
INCLUDE_SC_PIPE | Sans objet |
INCLUDE_SC_POSIX_PIPE | Sans objet |
INCLUDE_SD_BUS | Sans objet |
INCLUDE_SECURITY | Sans objet |
INCLUDE_SEC_KEY_STORE_CMD | Sans objet |
INCLUDE_SHELL | Sans objet |
INCLUDE_SSH | Sans objet |
INCLUDE_STANDALONE_SYM_TBL | Sans objet |
INCLUDE_STARTUP_SCRIPT | Sans objet |
INCLUDE_TMP_DIR | Sans objet |
INCLUDE_UN_COMP | Sans objet |
INCLUDE_USB_GEN2_KEYBOARD | Sans objet |
INCLUDE_USB_GEN2_MOUSE | Sans objet |
INCLUDE_USB_GEN2_STORAGE_INIT | Sans objet |
INCLUDE_USB_TOUCH_SCREEN | Sans objet |
INCLUDE_USB_TOUCH_SCREEN_INIT | Sans objet |
INCLUDE_USER_DATABASE | Sans objet |
INCLUDE_USER_IDENTIFICATION | Sans objet |
INCLUDE_VRFS | Sans objet |
INCLUDE_VXBUS_SHOW | Sans objet |
DRV_TOUCH_SCREEN_TI_TSC2004 | Sans objet |
DRV_TOUCH_SCREEN_EETI_EXC7200 | Sans objet |
INCLUDE_FBDEV_FSLIPU_0 | fsl_imx6 spécifique |
INCLUDE_FBDEV_SPLASH | Non applicable |
INCLUDE_GPUDEV_FSLVIV_API | fsl_imx6 spécifique |
INCLUDE_GPUDEV_FSLVIV_API_INIT | fsl_imx6 spécifique |
INCLUDE_GPUDEV_ITLGMC_2 | itl_generic spécifique |
INCLUDE_I915 | itl_generic spécifique |
INCLUDE_MESA_FBDEV | itl_generic spécifique |
INCLUDE_MESA_GPUDEV_DRI | itl_generic spécifique |
INCLUDE_MESA_GPUDEV_DRI_I965 | itl_generic spécifique |
Les composants suivants sont ajoutés implicitement et vous devez les supprimer :
| Couche | Notes |
|---|---|
INCLUDE_FTP | Sans objet |
INCLUDE_SHELL_SECURITY | Sans objet |
Paramètres VIP
Vous devez ajouter les paramètres suivants pour que Qt fonctionne correctement sur VxWorks :
| Paramètre | Exemple de valeur | Remarques |
|---|---|---|
SEC_VAULT_KEY_ENCRYPTING_PW | '"vxTarget"' | Sans objet |
UDB_STORAGE_PATH | '"/ram/vxUserDB.txt"' | Sans objet |
UDB_HASH_KEY | '"123456789"' | Sans objet |
UDB_HASH_KEY_LEN | 9 | Exemple de valeur, voir ci-dessus |
FSLVIV_RTP_COMMAND_BUFFER_QUEUE | 32 | Pour l'architecture "arm |
SYS_CLK_RATE | 100 | Sans objet |
RTP_PTHREAD_STACK_SIZE_DEFAULT | 262144 | Nécessaire pour que les exemples de qtquick3d fonctionnent. Peut être remplacé par la variable env PTHREAD_STACK_SIZE_DEFAULT. |
TMP_DIR_SIZE | 614400 | Valeur minimale pour passer les tests internes de Qt Test |
NUM_FILES | 300 | Non applicable |
RTP_FD_NUM_MAX | 300 | Sans objet |
HRFS_DEFAULT_MAX_FILES | 300 | Sans objet |
ITLGMC_FBDEV_RESOLUTION_2 | '"1024x768-32"' | Exemple de valeur pour l'écran tactile Xenarc 706TSA connecté via HDMI. |
RTP_MEM_FILL | True | La valeur par défaut est True et doit rester True pour que Qt fonctionne correctement. |
Construction de Qt 6 pour VxWorks
Construction de l'hôte
Une version hôte de Qt doit être disponible pour la compilation croisée de Qt. En effet, lors de la compilation, certains outils (tels que moc, rcc, qmlcachegen, et qsb) sont invoqués à partir de la compilation hôte. Vous disposez des options suivantes :
- Construire les sources Qt pour l'hôte,
- Installer la compilation de l'hôte à l'aide de Qt Online Installer.
Cependant, il est conseillé de s'assurer que vous pouvez également construire Qt pour la cible desktop sur l'hôte car les mêmes outils sont également nécessaires lors de la compilation pour VxWorks.
Exécution du script de configuration
Les commandes pour configurer, construire et installer Qt 6 pour l'hôte sont les suivantes :
./configure \
-cmake-generator "Ninja" \
-extprefix <path/to/Qt6/host/installation/dir> \
-submodules qtbase,qtdeclarative,qtquick3d,qtshadertools \
-nomake tests \
-nomake examples \
-- \
-B <host/build/directory>
cd <host/build/directory>
cmake --build . --parallel
cmake --install .Ces commandes installent Qt 6 pour l'hôte dans <path_to_Qt 6_host_installation_dir>.
Construction de Qt 6 pour la cible
Configuration de l'environnement de construction
Avant d'exécuter la configuration et la construction de Qt 6, vous devez ouvrir le VxWorks Development Shell dans l'invite de commande.
- Linux :
cd <VxWorks installation directory> ./wrenv.sh -p vxworks export WIND_CC_SYSROOT=<path to VxWorks VSB directory>
- Windows :
cd <VxWorks installation directory> wrenv -p vxworks export WIND_CC_SYSROOT=<path to VxWorks VSB directory>
Préparation du fichier CMake Toolchain personnalisé
Pour inclure des bibliothèques graphiques à partir du BSP, vous devez d'abord créer un fichier CMake toolchain. Exemple de fichier CMake toolchain pour le périphérique BD-SL-i.MX6 :
# Copyright (C) 2024 The Qt Company Ltd.
# SPDX-License-Identifier: BSD-3-Clause
if(QT_VXWORKS_TOOLCHAIN_FILE)
set(_original_toolchain_file "${QT_VXWORKS_TOOLCHAIN_FILE}")
elseif(DEFINED ENV{QT_VXWORKS_TOOLCHAIN_FILE})
set(_original_toolchain_file "$ENV{QT_VXWORKS_TOOLCHAIN_FILE}")
else()
message(FATAL_ERROR "QT_VXWORKS_TOOLCHAIN_FILE is not set.")
endif()
if(NOT EXISTS "${_original_toolchain_file}")
message(FATAL_ERORR "${_original_toolchain_file} doesn't exists.")
endif()
include("${_original_toolchain_file}")
unset(_original_toolchain_file)
list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES QT_VXWORKS_TOOLCHAIN_FILE)
set(_common_lib_path "${CMAKE_SYSROOT}/usr/lib/common")
set(EGL_INCLUDE_DIR ${CMAKE_SYSROOT}/usr/h/public CACHE PATH "Path to EGL include directory" FORCE)
set(EGL_LIBRARY ${_common_lib_path}/libgfxFslVivEGL.so CACHE PATH "Path to EGL lib" FORCE)
set(GLESv2_INCLUDE_DIR ${CMAKE_SYSROOT}/usr/h/public CACHE PATH "Path to GLES include directory" FORCE)
set(GLESv2_LIBRARY ${_common_lib_path}/libgfxFslVivGLESv2.so CACHE PATH "Path to GLES lib" FORCE)
set(VxWorksPlatformGraphics_DEFINES "-D_FSLVIV")
set(VxWorksPlatformGraphics_LIBRARIES_PACK
"${_common_lib_path}/libgfxFslVivEGL.so"
"${_common_lib_path}/libgfxFslVivGLESv2.so"
"${_common_lib_path}/libgfxFslVivGAL.so"
"${_common_lib_path}/libgfxFslVivGLSLC.so"
"${_common_lib_path}/libgfxFslVivVDK.so"
"${_common_lib_path}/libxml.so"
)
set(VxWorksPlatformGraphics_REQUIRED_LIBRARIES
${VxWorksPlatformGraphics_LIBRARIES_PACK}
${EGL_LIBRARY}
${GLESv2_LIBRARY}
)
unset(_common_lib_path)Un exemple pour Intel NUC6i3SYH :
# Copyright (C) 2024 The Qt Company Ltd.
# SPDX-License-Identifier: BSD-3-Clause
if(QT_VXWORKS_TOOLCHAIN_FILE)
set(_original_toolchain_file "${QT_VXWORKS_TOOLCHAIN_FILE}")
elseif(DEFINED ENV{QT_VXWORKS_TOOLCHAIN_FILE})
set(_original_toolchain_file "$ENV{QT_VXWORKS_TOOLCHAIN_FILE}")
else()
message(FATAL_ERROR "QT_VXWORKS_TOOLCHAIN_FILE is not set.")
endif()
if(NOT EXISTS "${_original_toolchain_file}")
message(FATAL_ERORR "${_original_toolchain_file} doesn't exists.")
endif()
include("${_original_toolchain_file}")
unset(_original_toolchain_file)
list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES QT_VXWORKS_TOOLCHAIN_FILE)
set(_common_lib_path "${CMAKE_SYSROOT}/usr/lib/common")
set(EGL_INCLUDE_DIR ${CMAKE_SYSROOT}/usr/h/public CACHE PATH "Path to EGL include directory" FORCE)
set(EGL_LIBRARY ${_common_lib_path}/libgfxMesaEGL.so CACHE PATH "Path to EGL lib" FORCE)
set(GLESv2_INCLUDE_DIR ${CMAKE_SYSROOT}/usr/h/public CACHE PATH "Path to GLES include directory" FORCE)
set(GLESv2_LIBRARY ${_common_lib_path}/libgfxMesaGL.so CACHE PATH "Path to GLES lib" FORCE)
set(VxWorksPlatformGraphics_DEFINES "-D__vxworks -D__VXWORKS")
set(VxWorksPlatformGraphics_LIBRARIES_PACK
"${_common_lib_path}/libgfxMesaEGL.so"
"${_common_lib_path}/libgfxMesaGL.so"
"${_common_lib_path}/libgfxMesaSw.so"
"${_common_lib_path}/libgfxMesa.so"
"${_common_lib_path}/libgfxMesaDriI965.so"
"${_common_lib_path}/libgfxLibDRM.so"
"${_common_lib_path}/libxml.so"
)
set(VxWorksPlatformGraphics_REQUIRED_LIBRARIES
${VxWorksPlatformGraphics_LIBRARIES_PACK}
${EGL_LIBRARY}
${GLESv2_LIBRARY}
)
unset(_common_lib_path)Configuration de Qt 6 pour la cible
Vous trouverez ci-dessous un exemple de configuration pour la BD-SL-i.MX6. Pour la plupart des cartes VxWorks, la commande configure est très similaire. Par défaut, Qt 6 est configuré pour utiliser des bibliothèques partagées. Pour construire Qt 6 statiquement, ajoutez l'option -static à la commande configure.
Assurez-vous que la variable d'environnement {WIND_CC_SYSROOT} est définie sur le répertoire racine de la carte VxWorks VSB.
./configure \
-cmake-generator "Ninja" \
-icu \
-eglfs \
-qpa eglfs \
-submodules "qtbase,qtdeclarative,qtmultimedia,qtquick3d,qtgraphs,qtimageformats,qtsvg,qtshadertools,qtvirtualkeyboard" \
-- \
-B <target/build/directory> \
-DQT_VXWORKS_TOOLCHAIN_FILE=<path/to/VSB/mk/toolchain.cmake> \
-DFEATURE_vulkan=OFF \
-DQT_QMAKE_TARGET_MKSPEC=vxworks-clang \
-DQT_HOST_PATH=<path/to/Qt6/host/installation/dir> \
-DCMAKE_STAGING_PREFIX:PATH=<path/to/Qt6/target/installation/dir> \
-DCMAKE_TOOLCHAIN_FILE=<path/to/cmake/for/graphics/file/created/above> \Il est recommandé de construire Qt 6 à l'aide d'une compilation fantôme. Voir les options de configuration de Qt pour plus d'informations.
Attention : Si VxWorks est configuré avec RTP_MEM_FILL comme false, alors Qt configure a besoin d'un argument supplémentaire -DCMAKE_CXX_FLAGS="-DQT_RTP_MEM_FILL=1".
Après la configuration, construisez et installez Qt 6 pour VxWorks avec ces commandes :
cd <host build directory> cmake --build . --parallel cmake --install .
Plugins de plate-forme pour les périphériques VxWorks
Qt pour VxWorks supporte le plugin de plateforme EGLFS pour une substitution de fenêtre native. Pour en savoir plus sur sa configuration, voir EGLFS.
Construire des applications Qt
Pour construire une application Qt, vous devez définir le fichier QT_VXWORKS_TOOLCHAIN_FILE comme variable d'environnement ou comme définition.
Un exemple pour construire la démo Qt des horloges :
export WIND_CC_SYSROOT=<path/to/VxWorks/VSB/directory> export QT_VXWORKS_TOOLCHAIN_FILE=<path/to/the/BSP/toolchain.cmake> <path/to/Qt6/target/installation/dir>/bin/qt-cmake -G Ninja -S ~/Qt/Examples/Qt-6.10.0/demos/clocks -B <path/to/build/directory> cd <path/to/build/directory> cmake --build . --parallel
Définition des variables d'environnement
| Variable | Variable Description |
|---|---|
| QT_QPA_FONTDIR | Chemin d'accès aux polices de caractères. |
| QT_QPA_EGLFS_FB | Chemin d'accès au périphérique framebuffer. |
| LD_LIBRARY_PATH | Chemin d'accès aux bibliothèques dynamiques. |
| ICU_DATA | Chemin d'accès aux données ICU. |
| QT_QPA_EGLFS_INTEGRATION | Intégration Eglfs, eglfs_viv ou eglfs_kms. |
| QT_QPA_EGLFS_KMS_CONFIG | Chemin d'accès à kms.conf. |
Note : Le cache disque QML ne fonctionne pas ; désactivez-le avec la variable suivante pour éviter que le démarrage ne devienne plus lent : QML_DISABLE_DISK_CACHE.
Définissez les variables d'environnement dans un script de démarrage comme suit, par exemple :
putgenv("QT_QPA_FONTDIR=/bd0a/fonts")
putgenv("QT_QPA_EGLFS_FB=/dev/fb0")
putgenv("LD_LIBRARY_PATH=/bd0a/lib/gfx;/bd0a/lib/llvm;/bd0a/lib/icu")
putgenv("ICU_DATA=/bd0a/icu/icudt73l.dat")
putgenv("QT_QPA_EGLFS_INTEGRATION=eglfs_kms")
putgenv("QT_QPA_EGLFS_FB=/dev/fb0")
putgenv("QT_QPA_EGLFS_KMS_CONFIG=/bd0a/kms.conf")
putgenv("QML_DISABLE_DISK_CACHE=1")Le fichier kms.conf pour le périphérique Intel KabyLake peut ressembler à ceci, par exemple :
{
"device": "/dev/dri/card0",
"hwcursor": false,
"pbuffers": true,
"outputs": [
{
"name": "DP",
"mode": "1920x1080"
}
]
}Exécution d'applications Qt
L'exemple suivant montre comment démarrer une application à l'aide de la commande VxWorks rtpSp:
rtpSp("<Qt 6 VxWorks application>", 200, 0x100000, 0, 0x01000000)Débogage des applications Qt
Pour déboguer les applications Qt, vous devez ajouter les éléments suivants à votre VSB VxWorks :
vxprj vsb config -s -add "_WRS_CONFIG_TCF_GDB_RSP=y"
Dans votre configuration VIP VxWorks, ajoutez :
"INCLUDE_DEBUG_AGENT" "INCLUDE_DEBUG_AGENT_START" "INCLUDE_STANDALONE_SYM_TBL"
À partir de la ligne de commande
- Lancez l'application à déboguer sur l'appareil via SSH ou la connexion série USB :
rtpSp("<Qt 6 VxWorks application>", 200, 0x100000, 0, 0x01000000) - Démarrer le débogueur VxWorks sur le PC :
vxgdb <binary to debug>
- Lister les processus en cours dans le débogueur :
monitor ps
- Attacher le débogueur à l'application déjà en cours d'exécution :
"attach <id from monitor>"
- Utiliser les commandes GDB pour le débogage.
A partir de Qt Creator
Pour déboguer à partir de Qt Creator, voir Qt Creator: Debug C++ applications on VxWorks devices.
À partir de Workbench
- Créez un projet CMake Real Time Process.

- Définissez le VSB pour lequel le débogage est configuré.
- Supprimer set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static") de CMakeLists.txt.
- Ajoutez le code lié à Qt CMake au fichier CMakeLists.txt en suivant la rubrique "Getting started with CMake" (Démarrer avec CMake).
- Avant
project(), ajoutezunset(CMAKE_TOOLCHAIN_FILE CACHE)etCMAKE_TOOLCHAIN_FILEpointant vers le fichier de la chaîne d'outils Qt6 etQT_CHAINLOAD_TOOLCHAIN_FILEvers le fichier de la chaîne d'outils VSB. Par exemple :unset(CMAKE_TOOLCHAIN_FILE CACHE) set(CMAKE_TOOLCHAIN_FILE "/home/qtuser/VxWorks/qt/target_gdb/lib/cmake/Qt6/qt.toolchain.cmake") set(QT_CHAINLOAD_TOOLCHAIN_FILE "/home/qtuser/VxWorks/fsl_imx6_2_0_6_2_VSB_gdb/mk/toolchain.cmake")
- Créez le projet d'application.
- Créez une nouvelle connexion.

- Lancez le processus RTP pour le débogage.

- Cliquez sur Options avancées.

- Définir la taille de la pile à 0x100000.

Plugins d'entrée Qt pour VxWorks
VxWorks utilise sa propre implémentation de libevdev, dont l'API est très similaire à celle de Linux, mais dont les capacités diffèrent. Pour cette raison, Qt implémente des plugins d'entrée séparés pour VxWorks afin de gérer la souris, le clavier et l'écran tactile, qui sont basés sur {inputs-linux-device.html}{Linux evdev}, avec des différences qui sont expliquées ci-dessous.
VxMouse
VxMouse utilise le même schéma de configuration que EvdevMouse, à l'exception d'une variable d'environnement différente : QT_QPA_VXEVDEV_MOUSE_PARAMETERS. En outre, VxMouse ignore les paramètres nocompress, dejitter et grab.
VxKeyboard
VxKeyboard utilise le même schéma de configuration que EvdevKeyboard, à l'exception d'une variable d'environnement différente : QT_QPA_VXEVDEV_KEYBOARD_PARAMETERS.
VxTouch
VxTouch utilise le même schéma de configuration qu'EvdevTouch, à l'exception de variables d'environnement différentes :
QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERSQT_QPA_VXEVDEV_DEBUG
De plus, VxTouch ajoute deux nouveaux paramètres :
| Paramètre | Paramètre Description |
|---|---|
rangex=MIN_X,MAX_X | Remplace les valeurs min et max du point de contact pour l'axe X |
rangey=MIN_Y,MAX_Y | Remplace les valeurs min et max du point de contact pour l'axe Y |
Limitations
Mémoire vidéo
Les systèmes disposant d'une quantité fixe de mémoire vidéo dédiée peuvent nécessiter une attention particulière avant d'exécuter des applications Qt XML basées sur Qt Quick ou des classes telles que QOpenGLWidget. Le paramètre par défaut peut être insuffisant pour de telles applications, en particulier lorsqu'elles sont affichées sur un écran à haute résolution (par exemple, full HD). Dans ce cas, elles peuvent commencer à échouer de manière inattendue. Il est donc recommandé de s'assurer qu'il y a au moins 128 Mo de mémoire GPU disponible. Pour les systèmes qui ne disposent pas d'une quantité fixe de mémoire réservée au GPU, ce problème ne se pose pas.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.