联络 Qt 公司了解更多信息: https://www.qt.io/contact-us/
Qt for VxWorks is available under the Qt for Device Creation Professional (DCP) license. For more information, see Qt Pricing .
Qt 6.10 is verified on VxWorks 25.03.
Supported architectures:
If you are interested in later Qt releases, please contact Qt professional services.
All features which are required for Qt Widgets applications, and in addition the following:
Most essential Qt 模块 and some add-on modules are supported.
| Qt 模块 | 注意事项 |
|---|---|
| Qt Core | No support for QProcess . QLocalSocket and QLocalServer support only SOCK_SEQPACKET. |
| Qt GUI | 不适用 |
| Qt Network | 不适用 |
| Qt QML | 不适用 |
| Qt Quick | 不适用 |
| Qt Quick Controls | 不适用 |
| Qt Quick Dialogs | 不适用 |
| Qt Quick Layouts | 不适用 |
| Qt Quick Test | 不适用 |
| Qt Test | 不适用 |
| Qt Widgets | 不适用 |
| Qt 附件 |
|---|
| Qt Concurrent |
| Qt GRPC/Protobuf |
| Qt Graphs |
| Qt Image Formats |
| Qt Multimedia |
| Qt Native Interfaces |
| Qt OpenGL |
| Qt Quick 3D |
| Qt Quick 编译器 |
| Qt Quick Effects |
| Qt SQL |
| Qt SVG |
| Qt Virtual Keyboard |
注意: You can explicitly exclude unsupported or unused modules from the build via the -skip <module> option when running the configure tool.
Qt is prepared to be used by RTP applications, there is no support for DKM.
With the release of Qt 5.0, Qt no longer contains its own window system implementation: QWS is no longer a supported platform. For single-process use cases, the Qt Platform Abstraction is a superior solution.
There is one plugin that is usable on VxWorks: EGLFS. The availability of this plugins depends on the configuration of Qt.
Prepare your environment by installing VxWorks SDK and obtaining WindRiver license which is needed by installer and for building VxWorks images. Search for appropriate installer in {https://gallery.windriver.com/portal/products}.
Building Qt for a given device requires a Qt 6 installation for compilation host, a toolchain and a sysroot. See 交叉编译 Qt for details. Additionally, some devices require vendor specific adaptation code for EGL and OpenGL 2.0 support.
Qt for VxWorks requires certain VxWorks image bundles and components to be embedded in base software to make Qt compile and work properly. The list is by no means complete as it depends on hardware, software and system requirements of your project. However, the following table contains those that are mandatory for certain functionalities to work (including touchscreen support). Note also that these might change with VxWorks versions.
You need to add the following features to VSB for Qt to work properly. For more details please check WindRiver VxWorks Documentation.
| 特征 | 注意事项 |
|---|---|
DSI_DSI_KERNEL
|
不适用 |
IPNET_COREIP
|
不适用 |
IPNET_DHCPC
|
不适用 |
SDMMC_DEVICE
|
不适用 |
SDMMC_HOST
|
不适用 |
SDMMC_SDHC
|
不适用 |
SDMMC_STORAGE
|
不适用 |
SERVICE_UN
|
不适用 |
SOCKET
|
不适用 |
USB_EHCI
|
不适用 |
USB_KEYBOARD
|
不适用 |
USB_MOUSE
|
不适用 |
USB_STORAGE
|
不适用 |
USB_TOUCHSCREEN
|
不适用 |
EVDEV
|
不适用 |
EVDEV_LIB
|
不适用 |
EVDEV_TI_TSC2004_TS
|
不适用 |
EVDEV_EETI_EXC7200_TS
|
不适用 |
AUDIO
|
不适用 |
GPUDEV_FSLVIVGPU
|
fsl_imx6 specific |
HASH
|
不适用 |
OPENSSL
|
不适用 |
RANDOM_ENTROPY_INJECT
|
不适用 |
IPNET_SSH
|
不适用 |
USER_MANAGEMENT
|
不适用 |
ICU
|
不适用 |
DRM
|
itl_generic specific |
ITLI915
|
itl_generic specific |
LIBDRM
|
itl_generic specific |
MESA
|
itl_generic and nxp_imx8 specific |
The following config variables are added implicitly and you need to remove them:
| 变量 | 注意事项 |
|---|---|
_WRS_CONFIG_EVDEV_OPTIMIZED_MODE
|
不适用 |
_WRS_CONFIG_EVDEV_DISPLAY_POINT_TRANSLATE
|
不适用 |
_WRS_CONFIG_MESA_MANGLE
|
itl_generic specific |
You need to add the following variables to the config:
| 变量 | 值 | 注意事项 |
|---|---|---|
_WRS_CONFIG_RTP_SSP
|
y
|
不适用 |
_WRS_CONFIG_RTP_STACK_PROTECTOR
|
y
|
不适用 |
_WRS_CONFIG_MESA_GPUDEV_INTEL_GEN90
|
y
|
itl_generic specific |
_WRS_CONFIG_EVDEV_COMPATIBLE_MODE
|
y
|
Needed in order for Qt to work properly with a touchscreen. |
For more details please check WindRiver VxWorks Documentation.
| Bundle | 注意事项 |
|---|---|
BUNDLE_POSIX
|
This bundle is necessary for compatibility with POSIX-related functionalities which Qt requires. |
BUNDLE_RTP_DEPLOY
|
不适用 |
BUNDLE_RTP_DEVELOP
|
不适用 |
BUNDLE_STANDALONE_SHELL
|
不适用 |
| 组件 | 注意事项 |
|---|---|
INCLUDE_TMP_DIR
INCLUDE_RAM_DISK_FORMAT_HRFS
|
Including these two components is necessary if you want to use
QTemporaryFile
. Note that you should also consider setting
TMP_DIR_SIZE
to appropriate value
|
DRV_AUDIO_FSL_SSI
|
不适用 |
DRV_AUDIO_FSL_SGTL5000
|
不适用 |
DRV_FSL_SDHC_CTRL
|
不适用 |
DRV_IMX_SDHC_CTRL
|
不适用 |
INCLUDE_EHCI_INIT
|
不适用 |
INCLUDE_FSL_IMX6Q_SABRELITE
|
不适用 |
DRV_MMCSTORAGE_CARD
|
不适用 |
DRV_SDSTORAGE_CARD
|
不适用 |
INCLUDE_AUDIO_LIB_CORE
|
不适用 |
INCLUDE_AUDIO_LIB_WAV
|
不适用 |
INCLUDE_CUSTOM_ENTROPY_ADD
|
不适用 |
INCLUDE_DEBUG_AGENT_START
|
不适用 |
INCLUDE_DEFAULT_TIMEZONE
|
不适用 |
INCLUDE_DISK_UTIL
|
不适用 |
INCLUDE_DOSFS
|
不适用 |
INCLUDE_DSAPARAM_CMD
|
不适用 |
INCLUDE_END
|
不适用 |
INCLUDE_EVDEV_LIB_CORE
|
不适用 |
INCLUDE_EVDEV_LIB_KBD
|
不适用 |
INCLUDE_EVDEV_LIB_KBD_MAP_US
|
不适用 |
INCLUDE_EVDEV_LIB_PTR
|
不适用 |
INCLUDE_EVDEV_LIB_TS
|
不适用 |
INCLUDE_GENDSA_CMD
|
不适用 |
INCLUDE_GENRSA_CMD
|
不适用 |
INCLUDE_GETADDRINFO
|
不适用 |
INCLUDE_GETNAMEINFO
|
不适用 |
INCLUDE_HRFS
|
不适用 |
INCLUDE_HRFS_ACCESS_TIMESTAMP
|
不适用 |
INCLUDE_HRFS_FORMAT
|
不适用 |
INCLUDE_HRFS_HISPEED_WRITE_MODE
|
不适用 |
INCLUDE_IFCONFIG
|
不适用 |
INCLUDE_IO_REALPATH
|
This component is needed to enable the use of the realpath function needed for
QFileInfo
|
INCLUDE_IPATTACH
|
不适用 |
INCLUDE_IPCOM_SYSLOGD_CMD
|
不适用 |
INCLUDE_IPCOM_SYSVAR_CMD
|
不适用 |
INCLUDE_IPCOM_USE_RAM_DISK
|
不适用 |
INCLUDE_IPCOM_USE_TIME_CMD
|
不适用 |
INCLUDE_IPDHCPC
|
不适用 |
INCLUDE_IPDNSC
|
不适用 |
INCLUDE_IPD_CMD
|
不适用 |
INCLUDE_IPFTPC
|
不适用 |
INCLUDE_IPFTP_CMD
|
不适用 |
INCLUDE_IPIFCONFIG_CMD
|
不适用 |
INCLUDE_IPNETSTAT_CMD
|
不适用 |
INCLUDE_IPNSLOOKUP_CMD
|
不适用 |
INCLUDE_IPPING_CMD
|
不适用 |
INCLUDE_IPROUTE_CMD
|
不适用 |
INCLUDE_IPTRACE_ROUTE_CMD
|
不适用 |
INCLUDE_IPWRAP_GETHOSTBYADDR
|
不适用 |
INCLUDE_IPWRAP_GETHOSTBYNAME
|
不适用 |
INCLUDE_IPWRAP_GETNAMEINFO
|
不适用 |
INCLUDE_IPWRAP_IFNAME
|
不适用 |
INCLUDE_IPWRAP_ROUTECMD
|
不适用 |
INCLUDE_MMAP
|
不适用 |
INCLUDE_PING
|
不适用 |
INCLUDE_PIPES
|
不适用 |
INCLUDE_POSIX_MAPPED_FILES
|
不适用 |
INCLUDE_POSIX_PIPES
|
不适用 |
INCLUDE_POSIX_PTHREAD_SCHEDULER
|
不适用 |
INCLUDE_POSIX_SHM
|
不适用 |
INCLUDE_RAM_DISK
|
不适用 |
INCLUDE_RAM_DISK_FORMAT_HRFS
|
不适用 |
INCLUDE_RANDOM_NUM_GEN
|
不适用 |
INCLUDE_ROMFS
|
不适用 |
INCLUDE_ROUTECMD
|
不适用 |
INCLUDE_SC_PIPE
|
不适用 |
INCLUDE_SC_POSIX_PIPE
|
不适用 |
INCLUDE_SD_BUS
|
不适用 |
INCLUDE_SECURITY
|
不适用 |
INCLUDE_SEC_KEY_STORE_CMD
|
不适用 |
INCLUDE_SHELL
|
不适用 |
INCLUDE_SSH
|
不适用 |
INCLUDE_STANDALONE_SYM_TBL
|
不适用 |
INCLUDE_STARTUP_SCRIPT
|
不适用 |
INCLUDE_TMP_DIR
|
不适用 |
INCLUDE_UN_COMP
|
不适用 |
INCLUDE_USB_GEN2_KEYBOARD
|
不适用 |
INCLUDE_USB_GEN2_MOUSE
|
不适用 |
INCLUDE_USB_GEN2_STORAGE_INIT
|
不适用 |
INCLUDE_USB_TOUCH_SCREEN
|
不适用 |
INCLUDE_USB_TOUCH_SCREEN_INIT
|
不适用 |
INCLUDE_USER_DATABASE
|
不适用 |
INCLUDE_USER_IDENTIFICATION
|
不适用 |
INCLUDE_VRFS
|
不适用 |
INCLUDE_VXBUS_SHOW
|
不适用 |
DRV_TOUCH_SCREEN_TI_TSC2004
|
不适用 |
DRV_TOUCH_SCREEN_EETI_EXC7200
|
不适用 |
INCLUDE_FBDEV_FSLIPU_0
|
fsl_imx6 specific |
INCLUDE_FBDEV_SPLASH
|
不适用 |
INCLUDE_GPUDEV_FSLVIV_API
|
fsl_imx6 specific |
INCLUDE_GPUDEV_FSLVIV_API_INIT
|
fsl_imx6 specific |
INCLUDE_GPUDEV_ITLGMC_2
|
itl_generic specific |
INCLUDE_I915
|
itl_generic specific |
INCLUDE_MESA_FBDEV
|
itl_generic specific |
INCLUDE_MESA_GPUDEV_DRI
|
itl_generic specific |
INCLUDE_MESA_GPUDEV_DRI_I965
|
itl_generic specific |
The following components are added implicitly and you need to remove them:
| 层 | 注意事项 |
|---|---|
INCLUDE_FTP
|
不适用 |
INCLUDE_SHELL_SECURITY
|
不适用 |
You need to add the following parameters for Qt to run properly on VxWorks:
| 参数 | Example value | 注意事项 |
|---|---|---|
SEC_VAULT_KEY_ENCRYPTING_PW
|
'"vxTarget"'
|
不适用 |
UDB_STORAGE_PATH
|
'"/ram/vxUserDB.txt"'
|
不适用 |
UDB_HASH_KEY
|
'"123456789"'
|
不适用 |
UDB_HASH_KEY_LEN
|
9
|
Example value, see previous |
FSLVIV_RTP_COMMAND_BUFFER_QUEUE
|
32
|
For 'arm' architecture |
SYS_CLK_RATE
|
100
|
不适用 |
RTP_PTHREAD_STACK_SIZE_DEFAULT
|
262144
|
Required to make qtquick3d examples work. Can be overridden with the PTHREAD_STACK_SIZE_DEFAULT env variable. |
TMP_DIR_SIZE
|
614400
|
Minimum value for passing Qt internal tests |
NUM_FILES
|
300
|
不适用 |
RTP_FD_NUM_MAX
|
300
|
不适用 |
HRFS_DEFAULT_MAX_FILES
|
300
|
不适用 |
ITLGMC_FBDEV_RESOLUTION_2
|
'"1024x768-32"'
|
Example value for the Xenarc 706TSA touchscreen connected over HDMI. |
RTP_MEM_FILL
|
True
|
默认情况下,值为
True
and it needs to remain
True
for Qt to work properly.
|
A host build of Qt needs to be available to cross-compile Qt. This is because, during the build, certain tools (such as
moc
,
rcc
,
qmlcachegen
,和
qsb
) are invoked from the host build. You have the following options:
However, it is advisable to ensure that you can build Qt for the desktop target on the host as well since the same tools are also needed when compiling for VxWorks.
The commands to configure, build, and install Qt 6 for host are the following:
./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 .
These commands install Qt 6 for the host in
<path_to_Qt 6_host_installation_dir>
.
Before you run configure and build Qt 6, you must open VxWorks Development Shell in command prompt.
cd <VxWorks installation directory> ./wrenv.sh -p vxworks export WIND_CC_SYSROOT=<path to VxWorks VSB directory>
cd <VxWorks installation directory> wrenv -p vxworks export WIND_CC_SYSROOT=<path to VxWorks VSB directory>
To include graphics libraries from the BSP, you need to first create a CMake toolchain file. An example CMake toolchain file for BD-SL-i.MX6 device:
# 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)
An example for 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)
Below is an example build configuration for the BD-SL-i.MX6. For most VxWorks boards the configure command looks very similar. By default, Qt 6 is configured to use shared libraries. To build Qt 6 statically, add
-static
option to configure.
Make sure that {WIND_CC_SYSROOT} environment variable is set to VxWorks VSB root directory.
./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> \
It is recommended to build Qt 6 using a shadow build 。见 Qt 配置选项 了解更多信息。
警告:
If VxWorks is configured with
RTP_MEM_FILL
as false, then Qt configure needs an extra
-DCMAKE_CXX_FLAGS="-DQT_RTP_MEM_FILL=1"
自变量。
After configuration, build and install Qt 6 for VxWorks with these commands:
cd <host build directory> cmake --build . --parallel cmake --install .
Qt for VxWorks supports EGLFS platform plugin for a 本机窗口 substitution. Read more about its configuration in EGLFS .
To build a Qt application, you must set the QT_VXWORKS_TOOLCHAIN_FILE as an environment variable or as a define.
An example to build the clocks Qt demo:
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
| 变量 | 描述 |
|---|---|
| QT_QPA_FONTDIR | Path to the fonts. |
| QT_QPA_EGLFS_FB | Path to the framebuffer device. |
| LD_LIBRARY_PATH | Path to the dynamic libraries. |
| ICU_DATA | Path to the ICU data. |
| QT_QPA_EGLFS_INTEGRATION |
Eglfs integration,
eglfs_viv
or
eglfs_kms
.
|
| QT_QPA_EGLFS_KMS_CONFIG |
Path to
kms.conf
.
|
注意:
QML disk cache doesn't work; disable it with the following variable to prevent the startup from becoming slower:
QML_DISABLE_DISK_CACHE
.
Set environment variables in a startup script as follows, for example:
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")
The
kms.conf
file for the Intel KabyLake device can look like this, for example:
{
"device": "/dev/dri/card0",
"hwcursor": false,
"pbuffers": true,
"outputs": [
{
"name": "DP",
"mode": "1920x1080"
}
]
}
The following example shows how to start an application using VxWorks
rtpSp
命令:
rtpSp("<Qt 6 VxWorks application>", 200, 0x100000, 0, 0x01000000)
To debug Qt Applications, you must add the following to your VxWorks VSB:
vxprj vsb config -s -add "_WRS_CONFIG_TCF_GDB_RSP=y"
To your VxWorks VIP configuration add:
"INCLUDE_DEBUG_AGENT" "INCLUDE_DEBUG_AGENT_START" "INCLUDE_STANDALONE_SYM_TBL"
rtpSp("<Qt 6 VxWorks application>", 200, 0x100000, 0, 0x01000000)
vxgdb <binary to debug>
monitor ps
"attach <id from monitor>"
To debug from Qt Creator, see Qt Creator: Debug C++ applications on VxWorks devices .
project()
add
unset(CMAKE_TOOLCHAIN_FILE CACHE)
and add
CMAKE_TOOLCHAIN_FILE
pointing to the Qt6 toolchain file and
QT_CHAINLOAD_TOOLCHAIN_FILE
to the VSB toolchain file. For example:
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")
VxWorks uses its own implementation of
libevdev
, which has an API that is very similar to that of Linux, but differs in capabilities. Because of this Qt implements separate input plugins for VxWorks to handle mouse, keyboard and touchscreen, which are based on {inputs-linux-device.html}{Linux evdev}, with differences that are explained below.
VxMouse
uses the same configuration scheme as EvdevMouse, except for different environment variable:
QT_QPA_VXEVDEV_MOUSE_PARAMETERS
. Additionally,
VxMouse
ignores
nocompress
,
dejitter
and
grab
参数。
VxKeyboard
uses the same configuration scheme as EvdevKeyboard, except for different environment variable:
QT_QPA_VXEVDEV_KEYBOARD_PARAMETERS
.
VxTouch
uses the same configuration scheme as EvdevTouch, except for different environment variables:
QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS
QT_QPA_VXEVDEV_DEBUG
Additionally, VxTouch adds two new parameters:
| 参数 | 描述 |
|---|---|
rangex=MIN_X,MAX_X
|
Overrides touch point min and max for X axis |
rangey=MIN_Y,MAX_Y
|
Overrides touch point min and max for Y axis |
Systems with a fixed amount of dedicated video memory may need extra care before running Qt application based on Qt Quick or classes like QOpenGLWidget . The default setting might be insufficient for such applications, especially when they are displayed on a high resolution (for example, full HD) screen. In this case they might start failing in unexpected ways. It is therefore recommended to ensure that there is at least 128 MB of GPU memory available. For systems that do not have a fixed amount of memory reserved for the GPU this is not an issue.