このページでは

VxWorks向けQt

詳細については、The Qt Companyまでお問い合わせください:https://www.qt.io/contact-us/

VxWorks向けQtのライセンス

Qt for VxWorksは、Qt for Device Creation Professional (DCP) ライセンスに基づいて提供されています。詳細については、「Qtの価格」をご覧ください。

サポート対象のアーキテクチャおよび VxWorks リリース

Qt 6.10 は VxWorks 25.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 アプリケーションに必要なすべての機能に加え、以下の機能も備えています:

  • OpenGL ES 2.0 用の GPU デバイス (GPUDEV)

サポートされるモジュール

最も重要なQtモジュールと、一部のアドオンモジュールがサポートされています。

サポート対象の主要モジュール

Qtモジュール備考
Qt CoreQProcess はサポートされていません。QLocalSocket およびQLocalServer はSOCK_SEQPACKETのみをサポートしています。
Qt GUI該当なし
Qt Network該当なし
Qt Qml該当なし
Qt Quick該当なし
Qt Quick 制御該当なし
Qt Quick ダイアログ該当なし
Qt Quick レイアウト該当なし
Qt Quick テスト該当なし
Qt Test該当なし
Qt Widgets該当なし

対応アドオン

注: 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 をビルドするには、コンパイルホストへの Qt 6 のインストール、ツールチェーン、および sysroot が必要です。詳細については、「Qt のクロスコンパイル」を参照してください。さらに、一部のデバイスでは、EGL および OpenGL 2.0 をサポートするために、ベンダー固有の適応コードが必要となります。

VxWorks イメージの要件

VxWorks 向けの Qt では、Qt が正しくコンパイルされ動作するために、特定の VxWorks イメージバンドルおよびコンポーネントをベースソフトウェアに組み込む必要があります。このリストは、プロジェクトのハードウェア、ソフトウェア、およびシステム要件によって異なるため、決して完全なものではありません。ただし、以下の表には、特定の機能(タッチスクリーンサポートを含む)が動作するために必須のものが記載されています。 また、これらはVxWorksのバージョンによって変更される可能性がある点にもご注意ください。

fsl_imx6 および itl_generic BSP 向けの VSB 設定例

Qtを正常に動作させるには、VSBに以下の機能を追加する必要があります。詳細については、WindRiver VxWorksドキュメントをご確認ください。

機能備考
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_FSLVIVGPUfsl_imx6固有
HASH該当なし
OPENSSL該当なし
RANDOM_ENTROPY_INJECT該当なし
IPNET_SSH該当なし
USER_MANAGEMENT該当なし
ICU該当なし
DRMitl_generic 特定
ITLI915itl_generic 特定
LIBDRMitl_generic 特定
MESAitl_generic および nxp_imx8 固有

以下の設定変数は暗黙的に追加されるため、これらを削除する必要があります:

変数備考
_WRS_CONFIG_EVDEV_OPTIMIZED_MODE該当なし
_WRS_CONFIG_EVDEV_DISPLAY_POINT_TRANSLATE該当なし
_WRS_CONFIG_MESA_MANGLEitl_generic 特定

設定に以下の変数を追加する必要があります:

変数値備考
_WRS_CONFIG_RTP_SSPy該当なし
_WRS_CONFIG_RTP_STACK_PROTECTORy該当なし
_WRS_CONFIG_MESA_GPUDEV_INTEL_GEN90yitl_generic固有
_WRS_CONFIG_EVDEV_COMPATIBLE_MODEyQtがタッチスクリーンで正常に動作するために必要です。

fsl_imx6 および itl_generic BSP 向けの VIP 設定例

詳細については、WindRiver VxWorksのドキュメントをご確認ください。

バンドル注
BUNDLE_POSIXこのバンドルは、Qt が要求する POSIX 関連の機能との互換性を確保するために必要です。
BUNDLE_RTP_DEPLOY該当なし
BUNDLE_RTP_DEVELOP該当なし
BUNDLE_STANDALONE_SHELL該当なし
コンポーネント備考
INCLUDE_TMP_DIR INCLUDE_RAM_DISK_FORMAT_HRFSQTemporaryFile を使用する場合は、これら 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このコンポーネントは、以下に必要な 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_0fsl_imx6固有
INCLUDE_FBDEV_SPLASH該当なし
INCLUDE_GPUDEV_FSLVIV_APIfsl_imx6 固有
INCLUDE_GPUDEV_FSLVIV_API_INITfsl_imx6 固有
INCLUDE_GPUDEV_ITLGMC_2itl_generic 固有
INCLUDE_I915itl_generic 固有
INCLUDE_MESA_FBDEVitl_generic 固有
INCLUDE_MESA_GPUDEV_DRIitl_generic 専用
INCLUDE_MESA_GPUDEV_DRI_I965itl_generic 特定

以下のコンポーネントは暗黙的に追加されるため、削除する必要があります:

レイヤー備考
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_LEN9値の例、前述を参照
FSLVIV_RTP_COMMAND_BUFFER_QUEUE32「arm」アーキテクチャの場合
SYS_CLK_RATE100該当なし
RTP_PTHREAD_STACK_SIZE_DEFAULT262144qtquick3d のサンプルを動作させるために必要です。PTHREAD_STACK_SIZE_DEFAULT 環境変数で上書き可能です。
TMP_DIR_SIZE614400Qt Testに合格するための最小値
NUM_FILES300該当なし
RTP_FD_NUM_MAX300該当なし
HRFS_DEFAULT_MAX_FILES300該当なし
ITLGMC_FBDEV_RESOLUTION_2'"1024x768-32"'HDMI経由で接続されたXenarc 706TSAタッチスクリーンの値の例。
RTP_MEM_FILLTrueデフォルトの値はTrue ですが、Qtが正常に動作するためには、この値をTrue のままにしておく必要があります。

VxWorks 向け Qt 6 のビルド

ホストビルド

Qtをクロスコンパイルするには、ホストビルドのQtが利用可能である必要があります。これは、ビルド中に、特定のツール(moc 、rcc 、qmlcachegen 、qsb など)がホストビルドから呼び出されるためです。以下のオプションがあります:

ただし、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.

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.

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)

ターゲット向けの Qt 6 `configure` の実行

以下は、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オプション」を参照してください。

警告: VxWorks が `RTP_MEM_FILL ` を false として設定されている場合 、Qt の `configure` には追加の `-DCMAKE_CXX_FLAGS="-DQT_RTP_MEM_FILL=1" ` 引数が必要です。

設定後、以下のコマンドを使用して VxWorks 用の Qt 6 をビルドおよびインストールします。

cd <host build directory>
cmake --build . --parallel
cmake --install .

VxWorks デバイス用のプラットフォームプラグイン

VxWorks 向け Qt は、ネイティブウィンドウ置換のための EGLFS プラットフォームプラグインをサポートしています。その設定の詳細については、EGLFS を参照してください。

Qtアプリケーションのビルド

Qt アプリケーションをビルドするには、環境変数または定義として QT_VXWORKS_TOOLCHAIN_FILE を設定する必要があります。

Qtのデモ「clocks」をビルドする例:

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フォントのパス。
QT_QPA_EGLFS_FBフレームバッファデバイスへのパス。
LD_LIBRARY_PATHダイナミックライブラリへのパス。
ICU_DATAICU データへのパス。
QT_QPA_EGLFS_INTEGRATIONEglfs 統合、eglfs_viv またはeglfs_kms 。
QT_QPA_EGLFS_KMS_CONFIGkms.conf へのパス。

注:QML ディスクキャッシュは機能しません。起動が遅くなるのを防ぐため、次の変数を使用して無効にしてください:QML_DISABLE_DISK_CACHE 。

例えば、起動スクリプト内で次のように環境変数を設定します:

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")

たとえば、Intel KabyLake デバイス用の `kms.conf ` ファイルは、次のような内容になります:

{
  "device": "/dev/dri/card0",
  "hwcursor": false,
  "pbuffers": true,
  "outputs": [
    {
      "name": "DP",
      "mode": "1920x1080"
    }
  ]
}

Qtアプリケーションの実行

以下の例は、VxWorksのrtpSp コマンドを使用してアプリケーションを起動する方法を示しています:

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"

コマンドラインから

  1. SSH または USB シリアル接続を介して、デバイス上でデバッグ対象のアプリケーションを起動します:
    rtpSp("<Qt 6 VxWorks application>", 200, 0x100000, 0, 0x01000000)
  2. PC上でVxWorksデバッガを起動します:
    vxgdb <binary to debug>
  3. デバッガで実行中のプロセスを一覧表示します:
    monitor ps
  4. すでに実行中のアプリケーションにデバッガをアタッチする:
    "attach <id from monitor>"
  5. デバッグにはGDBコマンドを使用します。

出典:Qt Creator

Qt Creator からのデバッグについては、Qt Creator を参照してください:VxWorksデバイス上のC++アプリケーションのデバッグ。

Workbench から

  1. CMake リアルタイムプロセスプロジェクトを作成します。

    cmake RTP プロジェクトを選択してください

  2. デバッグが設定されている VSB を設定します。
  3. CMakeLists.txt から set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static") を削除します。
  4. 「CMake のはじめ方」に従って、Qt CMake 関連のコードを CMakeLists.txt に追加します。
  5. project() の前に、unset(CMAKE_TOOLCHAIN_FILE CACHE) を追加し、Qt6 ツールチェーンファイルを指す `CMAKE_TOOLCHAIN_FILE ` と、VSB ツールチェーンファイルを指す `QT_CHAINLOAD_TOOLCHAIN_FILE ` を追加します。例:
    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")
  6. アプリケーション「Project」をビルドします。
  7. 新しい接続を作成します。

    デバイスへの接続

  8. デバッグのためにRTPプロセスを開始します。

    「リアルタイムプロセスの実行/デバッグ」を選択

  9. [詳細オプション] をクリックします。

    実行設定

  10. スタックサイズを 0x100000 に設定します。

    詳細設定

VxWorks 向け Qt 入力プラグイン

VxWorks は、libevdev の独自実装を使用しています。この実装の API は Linux のものと非常に似ていますが、機能には違いがあります。 このため、Qt では、VxWorks 向けに、マウス、キーボード、タッチスクリーンを処理するための個別の入力プラグインを実装しています。これらは {inputs-linux-device.html}{Linux evdev} に基づいていますが、以下で説明する違いがあります。

VxMouse

VxMouse は、環境変数 `QT_QPA_VXEVDEV_MOUSE_PARAMETERS` が異なる点を除き、EvdevMouse と同じ設定方式を使用します。さらに、VxMouse は、`nocompress`、`dejitter `、および `grab ` パラメータを無視します。

VxKeyboard

VxKeyboard は、環境変数 `QT_QPA_VXEVDEV_KEYBOARD_PARAMETERS` が異なる点を除き、EvdevKeyboard と同じ設定方式を使用します。

VxTouch

VxTouch は、EvdevTouch と同じ設定方式を使用しますが、環境変数が異なります:xml-ph-0000@deepl.internal。

  • QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS
  • QT_QPA_VXEVDEV_DEBUG

さらに、VxTouch には以下の 2 つの新しいパラメータが追加されています:

パラメータ説明
rangex=MIN_X,MAX_XX軸のタッチポイントの最小値と最大値を上書きします
rangey=MIN_Y,MAX_YY軸のタッチポイントの最小値と最大値を上書きします

制限事項

ビデオメモリ

専用ビデオメモリの容量が固定されているシステムでは、Qt Quick やQOpenGLWidget などのクラスに基づく Qt アプリケーションを実行する前に、特別な注意が必要です。特に高解像度(例:フル HD)の画面で表示する場合、デフォルト設定では不十分な場合があります。 その場合、予期せぬ不具合が発生する可能性があります。したがって、少なくとも 128 MB の GPU メモリが利用可能であることを確認することを推奨します。GPU 用に固定量のメモリが確保されていないシステムでは、この問題は発生しません。

© 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.