VxWorks 用 Qt
詳細についてはQt Companyまでお問い合わせください: https://www.qt.io/contact-us/
Qt for VxWorks ライセンス
Qt for VxWorks は Qt for Device Creation Professional (DCP) ライセンスでご利用いただけます。詳細はQt Pricing をご覧ください。
サポートされるアーキテクチャと VxWorks リリース
Qt 6.9 は VxWorks 24.03 で検証済みです。
サポートされているアーキテクチャ
- ARM-v7-BD-SL-i.MX6でテスト。使用 BSP: fsl_imx6
- x86_64-Intel製NUC6i3SYHでテスト済み。使用BSP:itl_generic
それ以降の Qt リリースに興味がある場合は、Qt プロフェッショナルサービスにお問い合わせください。
VxWorks の要件
Qt Widgets アプリケーション
- POSIXサポート
- C++17サポート
Qt Quick 2 アプリケーション
Qt Widgets アプリケーションに必要なすべての機能と、それに加えて以下の機能があります:
- GPU デバイス (GPUDEV) for OpenGL ES 2.0
サポートされるモジュール
ほとんどの必須Qt モジュールといくつかのアドオンモジュールがサポートされています。
サポートされている必須モジュール
Qt モジュール | 注意事項 |
---|---|
Qt Core | QProcess をサポートしていません。QLocalSocket とQLocalServer は SOCK_SEQPACKET のみをサポートしています。 |
Qt GUI | 非対応 |
Qt Network | 該当なし |
Qt Qml | 該当なし |
Qt Quick | 該当なし |
Qt Quick 制御 | 該当なし |
Qt Quick ダイアログ | 該当なし |
Qt Quick レイアウト | 該当なし |
Qt Quick テスト | 該当なし |
Qt Test | 該当なし |
Qt Widgets | 該当なし |
対応アドオン
Qt アドオン |
---|
Qt Concurrent |
Qt GRPC/プロトブーフ |
Qt Graphs |
Qt Image Formats |
Qt Multimedia |
Qt ネイティブインターフェース |
Qt OpenGL |
Qt Quick 3D |
Qt Quick Compiler |
Qt Quick Effects |
Qt SQL |
Qt SVG |
Qt Virtual Keyboard |
Note: configure ツールを実行する際に -skip <module> オプションを指定することで、サポートされていないモジュールや使用されていないモジュールをビルドから明示的に除外することができます。
プラットフォーム
Qt は RTP アプリケーションで使用するために準備されており、DKM はサポートされていません。
Qt 5.0 のリリースにより、Qt は独自のウィンドウシステム実装を含まなくなりました:QWS はもはやサポートされたプラットフォームではありません。シングルプロセスで使用する場合は、Qt Platform Abstractionが優れたソリューションです。
VxWorksで使えるプラグインが1つあります:EGLFSです。このプラグインが使用できるかどうかは、Qtの設定に依存します。
特定のデバイス用に設定する
VxWorks SDKをインストールし、インストーラとVxWorksイメージのビルドに必要なWindRiverライセンスを取得して環境を準備します。https://gallery.windriver.com/portal/products}から適切なインストーラを検索してください。
特定のデバイス用に Qt をビルドするには、コンパイルホスト、ツールチェーン、および sysroot 用に Qt 6 をインストールする必要があります。さらに、デバイスによっては、EGL と OpenGL 2.0 をサポートするためにベンダー固有のアダプテーションコードが必要です。
VxWorks イメージの要件
Qt for VxWorks では、Qt をコンパイルして正しく動作させるために、特定の VxWorks イメージバンドルとコンポーネントをベースソフトウェアに組み込む必要があります。このリストは、ハードウェア、ソフトウェア、およびプロジェクトのシステム要件に依存するため、決して完全ではありません。しかし、以下の表には、特定の機能(タッチスクリーンのサポートを含む)を動作させるために必須であるものが含まれています。また、これらはVxWorksのバージョンによって変更される可能性があることに注意してください。
ffl_imx6およびitl_generic BSPのVSB設定例
Qtを正しく動作させるには、VSBに以下の機能を追加する必要があります。詳細は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固有 |
HASH | 該当なし |
OPENSSL | 該当なし |
RANDOM_ENTROPY_INJECT | 該当なし |
IPNET_SSH | 該当なし |
USER_MANAGEMENT | 該当なし |
ICU | 該当なし |
DRM | itl_汎用特定 |
ITLI915 | 一般的な |
LIBDRM | 特定ジェネリック |
MESA | 特定用途向け |
以下の設定変数は暗黙的に追加されているので、削除する必要がある:
変数 | 備考 |
---|---|
_WRS_CONFIG_EVDEV_OPTIMIZED_MODE | 該当しない |
_WRS_CONFIG_EVDEV_DISPLAY_POINT_TRANSLATE | 該当なし |
_WRS_CONFIG_MESA_MANGLE | itl_generic特定 |
コンフィグに以下の変数を追加する必要があります:
変数 | 値 | 備考 |
---|---|---|
_WRS_CONFIG_RTP_SSP | y | 該当なし |
_WRS_CONFIG_RTP_STACK_PROTECTOR | y | 該当なし |
_WRS_CONFIG_MESA_GPUDEV_INTEL_GEN90 | y | itl_generic 固有 |
_WRS_CONFIG_EVDEV_COMPATIBLE_MODE | y | Qt がタッチスクリーンで正しく動作するために必要です。 |
fsl_imx6 および itl_generic BSP の VIP 設定例
詳しくはWindRiver VxWorks Documentationをご覧ください。
バンドル | 注意事項 |
---|---|
BUNDLE_POSIX | このバンドルは、Qt が必要とする POSIX 関連の機能との互換性のために必要です。 |
BUNDLE_RTP_DEPLOY | 該当なし |
BUNDLE_RTP_DEVELOP | 該当なし |
BUNDLE_STANDALONE_SHELL | 該当なし |
コンポーネント | 注意事項 |
---|---|
INCLUDE_TMP_DIR INCLUDE_RAM_DISK_FORMAT_HRFS | QTemporaryFile を使用する場合は、これら2つのコンポーネントを含める必要がある。また、TMP_DIR_SIZE を適切な値に設定することも考慮すべきである。 |
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 | このコンポーネントは、以下の機能を使用するために必要です。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固有 |
INCLUDE_FBDEV_SPLASH | 該当なし |
INCLUDE_GPUDEV_FSLVIV_API | fsl_imx6指定 |
INCLUDE_GPUDEV_FSLVIV_API_INIT | fsl_imx6指定 |
INCLUDE_GPUDEV_ITLGMC_2 | itl_generic指定 |
INCLUDE_I915 | イトルジェネリック指定 |
INCLUDE_MESA_FBDEV | イトルジェネリック指定 |
INCLUDE_MESA_GPUDEV_DRI | イットルジェネリック指定 |
INCLUDE_MESA_GPUDEV_DRI_I965 | 特定用途向け |
以下のコンポーネントは暗黙的に追加されているので、削除する必要がある:
レイヤー | 備考 |
---|---|
INCLUDE_FTP | 該当なし |
INCLUDE_SHELL_SECURITY | 該当なし |
VIPパラメータ
VxWorks 上で Qt を正しく実行するには、以下のパラメータを追加する必要があります:
パラメータ | 値の例 | 備考 |
---|---|---|
SEC_VAULT_KEY_ENCRYPTING_PW | '"vxTarget"' | 該当しない |
UDB_STORAGE_PATH | '"/ram/vxUserDB.txt"' | 該当なし |
UDB_HASH_KEY | '"123456789"' | 該当なし |
UDB_HASH_KEY_LEN | 9 | 例値、前述参照 |
FSLVIV_RTP_COMMAND_BUFFER_QUEUE | 32 | arm」アーキテクチャの場合 |
SYS_CLK_RATE | 100 | 該当なし |
RTP_PTHREAD_STACK_SIZE_DEFAULT | 262144 | qtquick3d のサンプルを動作させるために必要です。PTHREAD_STACK_SIZE_DEFAULT 環境変数でオーバーライドできます。 |
TMP_DIR_SIZE | 614400 | Qt 内部テストに合格するための最小値。 |
NUM_FILES | 300 | 該当なし |
RTP_FD_NUM_MAX | 300 | 該当なし |
HRFS_DEFAULT_MAX_FILES | 300 | 該当なし |
ITLGMC_FBDEV_RESOLUTION_2 | '"1024x768-32"' | Xenarc 706TSA タッチスクリーンを HDMI で接続した場合の例です。 |
RTP_MEM_FILL | True | デフォルトではこの値はTrue で、Qt が正しく動作するためにはTrue のままである必要があります。 |
VxWorks 用 Qt 6 のビルド
ホストのビルド
Qtをクロスコンパイルするには、Qtのホストビルドが必要です。これは、ビルド中に特定のツール(moc
、rcc
、qmlcachegen
、qsb
など)がホストビルドから呼び出されるためです。以下のオプションがあります:
- ホスト用にQt ソースをビルドする、
- Qt Online Installer を使用してホストビルドをインストールする。
ただし、VxWorks 用にコンパイルする場合にも同じツールが必要になるため、ホスト上でデスクトップターゲッ ト用の Qt をビルドできるようにしておくことをお勧めします。
Configure スクリプトの実行
ホスト上で Qt 6 をコンフィグレーション、ビルド、インストールするためのコマンドは次のとおりです:
./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 .
これらのコマンドは<path_to_Qt 6_host_installation_dir>
にホスト用の Qt 6 をインストールします。
ターゲット用に Qt 6 をビルドする
ビルド環境のセットアップ
configure を実行して Qt 6 をビルドする前に、コマンドプロンプトでVxWorks Development Shell を開く必要があります。
- 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>
カスタムCMakeツールチェーンファイルの準備
BSPからグラフィック・ライブラリをインクルードするには、まずCMakeツールチェーン・ファイルを作成する必要があります。BD-SL-i.MX6デバイス用のCMakeツールチェインファイルの例です:
# 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)
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)
I.MX8 の例
# 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}/libgfxNxpVivEGL.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}/libgfxNxpVivGLESv2.so CACHE PATH "Path to GLES lib" FORCE) set(VxWorksPlatformGraphics_DEFINES "-D_NXPVIV -D__vxworks -D__VXWORKS__") set(VxWorksPlatformGraphics_LIBRARIES_PACK "${_common_lib_path}/libgfxNxpVivGAL.so" "${_common_lib_path}/libgfxNxpVivEGL.so" "${_common_lib_path}/libgfxNxpVivGLSLC.so" "${_common_lib_path}/libgfxNxpVivGLESv2.so" "${_common_lib_path}/libgfxNxpVivGLESv1_CM.so" "${_common_lib_path}/libgfxNxpVivVSC.so" "${_common_lib_path}/libxml.so" ) set(VxWorksPlatformGraphics_REQUIRED_LIBRARIES ${VxWorksPlatformGraphics_LIBRARIES_PACK} ${EGL_LIBRARY} ${GLESv2_LIBRARY} ) unset(_common_lib_path)
Qt 6 の実行 ターゲットの設定
以下は BD-SL-i.MX6 のビルド設定例です。ほとんどの VxWorks ボードでは、configure コマンドは非常によく似ています。デフォルトでは、Qt 6 は共有ライブラリを使用するように設定されています。Qt 6 を静的にビルドするには、configure に-static
オプションを追加します。
WIND_CC_SYSROOT}環境変数が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> \
シャドウビルドを使用してQt 6をビルドすることをお勧めします。詳細はQt Configure Optionsを参照してください。
警告 VxWorks がRTP_MEM_FILL
を false として設定されている場合、Qt configure は-DCMAKE_CXX_FLAGS="-DQT_RTP_MEM_FILL=1"
の追加引数を必要とします。
設定後、Qt 6 for VxWorks を以下のコマンドでビルドしてインストールしてください:
cd <host build directory> cmake --build . --parallel cmake --install .
VxWorks デバイス用プラットフォームプラグイン
Qt for VxWorks はネイティブ・ウィンドウの代用として EGLFS プラットフォーム・プラグインをサポートしています。設定についてはEGLFS を参照してください。
Qtアプリケーションのビルド
Qtアプリケーションをビルドするには、QT_VXWORKS_TOOLCHAIN_FILEを環境変数またはdefineとして設定する必要があります。
clocks Qtデモのビルド例です:
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.9.0/demos/clocks -B <path/to/build/directory> cd <path/to/build/directory> cmake --build . --parallel
Qtアプリケーションの実行
以下の例では、共有ライブラリを使用して Qt 6 をビルドした場合のアプリケーションの起動方法を示します。静的にビルドされた Qt 6 では、Qt ライブラリ用にLD_LIBRARY_PATH
環境変数を使用する必要はありませんが、VxWorks 共有ライブラリ(例えば libc や OpenGL ES 2.0)の場所を指定する必要があります。Qt 6のスタティック・ライブラリには必要ありません。
putenv "LD_LIBRARY_PATH=/sd0:1/lib" cd "/sd0:1" rtpSp("<Qt 6 VxWorks application>", 200, 0x100000, 0, 0x01000000)
Qtアプリケーションのデバッグ
Qt アプリケーションをデバッグするには、VxWorks VSB に以下を追加する必要があります:
vxprj vsb config -s -add "_WRS_CONFIG_TCF_GDB_RSP=y"
VxWorks VIP 設定に以下を追加します:
"INCLUDE_DEBUG_AGENT" "INCLUDE_DEBUG_AGENT_START" "INCLUDE_STANDALONE_SYM_TBL"
コマンドラインから
- SSH または USB シリアル接続を介してデバイス上でデバッグするアプリケーションを起動します:
rtpSp("<Qt 6 VxWorks application>", 200, 0x100000, 0, 0x01000000)
- PC上でVxWorksデバッガを起動します:
vxgdb <binary to debug>
- デバッガで実行中のプロセスを一覧表示します:
monitor ps
- 実行中のアプリケーションにデバッガをアタッチします:
"attach <id from monitor>"
- デバッグにGDBコマンドを使用する。
ワークベンチから
- CMake Real Time Processプロジェクトを作成します。
- デバッグが設定されているVSBを設定する。
- CMakeLists.txtからset(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static")を削除する。
- Getting started with CMake に従って、CMakeLists.txt に Qt CMake 関連のコードを追加します。
project()
の前にunset(CMAKE_TOOLCHAIN_FILE CACHE)
を追加し、CMAKE_TOOLCHAIN_FILE
を Qt6 toolchain ファイルに、QT_CHAINLOAD_TOOLCHAIN_FILE
を VSB toolchain ファイルに追加します。例えば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")
- アプリケーションをビルドします。
- 新しい接続を作成します。
- デバッグのためにRTPプロセスを開始する。
- 詳細オプションをクリックする。
- スタックサイズを 0x100000 に設定します。
Qt for VxWorks 入力プラグイン
VxWorks は独自の実装であるlibevdev
を使用しています。この API は Linux の API と非常によく似ていますが、機能は異なります。このため、Qt はマウス、キーボード、タッチスクリーンを処理するために VxWorks 用の個別の入力プラグインを実装しています。
VxMouse
VxMouse
はEvdevMouseと同じ設定スキームを使いますが、環境変数が異なります: 。さらに、 は 、 、 パラメータを無視します。QT_QPA_VXEVDEV_MOUSE_PARAMETERS
VxMouse
nocompress
dejitter
grab
VxKeyboard
VxKeyboard
は異なる環境変数: を除いて EvdevKeyboard と同じ設定スキームを使用します。QT_QPA_VXEVDEV_KEYBOARD_PARAMETERS
VxTouch
VxTouch
は異なる環境変数を除いて EvdevTouch と同じ設定スキームを使用します:
QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS
QT_QPA_VXEVDEV_DEBUG
さらに、VxTouch は2つの新しいパラメータを追加します:
パラメータ | パラメータ |
---|---|
rangex=MIN_X,MAX_X | X軸のタッチポイントの最小値と最大値を上書きします。 |
rangey=MIN_Y,MAX_Y | Y軸のタッチポイントの最小値と最大値を上書きします。 |
制限
ビデオメモリ
専用のビデオメモリが一定量しかないシステムでは、Qt Quick やQOpenGLWidget のようなクラスをベースとした Qt アプリケーションを実行する前に、特に注意が必要な場合があります。このようなアプリケーションでは、特に高解像度(例えばフル HD)の画面に表示する場合、デフォルトの設定では不十分な場合があります。このような場合、予期しない方法で失敗し始めるかもしれません。したがって、少なくとも 128 MB の GPU メモリを確保することをお勧めします。GPU 用に予約された固定量のメモリがないシステムでは、これは問題ではありません。
© 2025 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.