Qt for VxWorks: Build, Configure, and Deployment Guide
Qt for VxWorks enables modern GUI development on real-time embedded systems using the Qt 6 framework. This guide provides a structured overview of supported platforms, system requirements, build workflow, and deployment practices for production-grade environments.
📦 Licensing and Availability #
Qt for VxWorks is distributed under the Qt for Device Creation Professional (DCP) license. This commercial offering includes long-term support, tooling, and access to Qt professional services.
🧩 Supported Platforms #
Verified Configuration #
- Qt Version: 6.10
- VxWorks Version: 25.03
Supported Architectures #
-
ARMv7
- Device: BD-SL-i.MX6
- BSP:
fsl_imx6
-
x86_64
- Device: Intel NUC6i3SYH
- BSP:
itl_generic
Support for newer Qt versions may require engagement with Qt professional services.
⚙️ System Requirements #
Qt Widgets Applications #
- POSIX support
- C++17 support
Qt Quick 2 Applications #
In addition to Widgets requirements:
- GPU device (GPUDEV)
- OpenGL ES 2.0 support
📚 Supported Qt Modules #
Essential Modules #
- Qt Core (limitations apply: no QProcess, restricted socket support)
- Qt GUI
- Qt Network
- Qt QML / Quick stack
- Qt Widgets
Add-On Modules #
- Qt Concurrent
- Qt GRPC / Protobuf
- Qt Multimedia
- Qt OpenGL
- Qt Quick 3D
- Qt SQL
- Qt SVG
- Qt Virtual Keyboard
- Qt Graphs
Modules can be excluded during build using:
-skip <module>
🧠 Platform Constraints #
Runtime Model #
- Only RTP (Real-Time Process) is supported
- DKM (Downloadable Kernel Modules) are not supported
Windowing System #
- Qt no longer includes QWS
- Uses Qt Platform Abstraction (QPA)
- Only supported platform plugin: EGLFS
🏗️ Build Environment Setup #
Prerequisites #
- VxWorks SDK installation
- Valid Wind River license
- Qt 6 host build (required for tools like
moc,rcc,qmlcachegen) - Toolchain and sysroot
Environment Initialization #
Linux #
cd <VxWorks install dir>
./wrenv.sh -p vxworks
export WIND_CC_SYSROOT=<path to VSB>
Windows #
cd <VxWorks install dir>
wrenv -p vxworks
set WIND_CC_SYSROOT=<path to VSB>
🔧 VxWorks Image Requirements #
Qt requires specific VSB and VIP configurations.
Key VSB Features #
-
Networking:
IPNET_COREIP,SOCKET -
Storage:
SDMMC_* -
Input:
EVDEV,USB_* -
Security:
OPENSSL,HASH -
Graphics:
GPUDEV_FSLVIVGPU(ARM)DRM,MESA,ITLI915(x86)
Required Config Variables #
_WRS_CONFIG_RTP_SSP=y
_WRS_CONFIG_RTP_STACK_PROTECTOR=y
_WRS_CONFIG_EVDEV_COMPATIBLE_MODE=y
VIP Bundles #
BUNDLE_POSIX(mandatory)- RTP deployment and development bundles
Critical Components #
INCLUDE_TMP_DIR(for QTemporaryFile)INCLUDE_IO_REALPATH(for QFileInfo)- Input, storage, networking, and GPU drivers depending on BSP
🛠️ Building Qt 6 #
Host Build #
./configure \
-cmake-generator "Ninja" \
-extprefix <host_install_dir> \
-submodules qtbase,qtdeclarative,qtquick3d,qtshadertools \
-nomake tests -nomake examples
cmake --build . --parallel
cmake --install .
Target Build Configuration #
./configure \
-cmake-generator "Ninja" \
-eglfs \
-qpa eglfs \
-submodules "qtbase,qtdeclarative,qtmultimedia,qtquick3d" \
-- \
-DQT_QMAKE_TARGET_MKSPEC=vxworks-clang \
-DQT_HOST_PATH=<host_qt_path> \
-DCMAKE_TOOLCHAIN_FILE=<graphics_toolchain.cmake>
Notes #
- Use shadow builds
- Add
-staticfor static builds - If
RTP_MEM_FILL=false, define:
-DCMAKE_CXX_FLAGS="-DQT_RTP_MEM_FILL=1"
🎮 Graphics and EGLFS #
Qt uses EGLFS for rendering:
-
Requires BSP-specific EGL/OpenGL libraries
-
Toolchain file must include graphics paths and libraries
-
Supports integrations like:
eglfs_viv(i.MX6)eglfs_kms(Intel)
📱 Building Applications #
Example build:
qt-cmake -G Ninja \
-S <Qt example path> \
-B <build dir>
cmake --build . --parallel
Required Environment Variables #
QT_QPA_FONTDIRQT_QPA_EGLFS_FBLD_LIBRARY_PATHICU_DATAQT_QPA_EGLFS_INTEGRATION
Disable QML disk cache:
QML_DISABLE_DISK_CACHE=1
🚀 Running Applications #
Launch via RTP:
rtpSp("<app>", 200, 0x100000, 0, 0x01000000);
🐞 Debugging #
Enable Debug Support #
VSB:
_WRS_CONFIG_TCF_GDB_RSP=y
VIP:
INCLUDE_DEBUG_AGENTINCLUDE_STANDALONE_SYM_TBL
GDB Workflow #
vxgdb <binary>
monitor ps
attach <pid>
🎛️ Input Handling #
Qt provides VxWorks-specific input plugins:
- VxMouse
- VxKeyboard
- VxTouch
Differences from Linux evdev:
-
Custom environment variables
-
Additional touchscreen parameters:
rangexrangey
⚠️ Limitations #
Video Memory Constraints #
Qt Quick and OpenGL-based components require sufficient GPU memory:
- Minimum recommended: 128 MB
- Insufficient memory may cause rendering failures
Other Limitations #
- No QML disk cache support
- Limited POSIX feature coverage
- No DKM support
📌 Conclusion #
Qt for VxWorks provides a robust foundation for building modern embedded GUIs in real-time environments. However, successful deployment requires careful alignment between BSP configuration, graphics stack, and Qt build settings.
For production systems, focus on:
- Correct VSB/VIP configuration
- Verified toolchain integration
- GPU and EGL readiness
- Controlled module selection
When properly configured, Qt enables high-performance, hardware-accelerated interfaces on VxWorks with predictable real-time behavior.