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.7 は VxWorks 24.03 で検証済みです。サポートされているアーキテクチャは ARM-v7 です。
それ以降の Qt リリースに興味がある場合は、Qt プロフェッショナルサービスにお問い合わせください。
VxWorks の要件
Qt ウィジェットアプリケーション
- POSIXサポート
- C++17 サポート
Qt Quick 2 アプリケーション
Qt Widgetsアプリケーションに必要なすべての機能、および以下の機能:
- OpenGL ES 2.0 用 GPU デバイス (GPUDEV)
サポートされるモジュール
ほとんどのQt 必須モジュールといくつかのアドオンモジュールがサポートされています。
サポートされている必須モジュール
Qt モジュール | サポートされる機能 | 備考 |
---|---|---|
Qt コア | QProcess をサポートしていません。QLocalSocket とQLocalServer は SOCK_SEQPACKET のみをサポートしています。 | |
Qt GUI | ||
Qt ネットワーク | ||
Qt Qml | ||
Qt Quick | ||
Qt クイックコントロール | ||
Qt クイックダイアログ | ||
Qt クイックレイアウト | ||
Qt クイックテスト | ||
Qt テスト | ||
Qt ウィジェット |
対応アドオン
Qt アドオン | 注意事項 |
---|---|
Qt コンカレント | |
Qt GRPC/Protobuf | |
Qt グラフ | |
Qt 画像フォーマット | |
Qt マルチメディア | |
Qt ネイティブインターフェース | |
Qt OpenGL | |
Qt クイック 3D | |
Qt クイックコンパイラ | |
Qt Quick Effects | |
Qt SQL | |
Qt SVG | |
Qt バーチャルキーボード |
Note: configure ツールを実行する際に -skip <module> オプションを指定することで、サポートされていないモジュールや使用されていないモジュールをビルドから明示的に除外することができます。
プラットフォーム
Qt 5.0 のリリースにより、Qt は独自のウィンドウシステム実装を含まなくなりました:QWS はもはやサポートされたプラットフォームではありません。シングルプロセスで使用する場合は、Qt Platform Abstractionが優れたソリューションです。
VxWorksで使えるプラグインが1つあります:EGLFSです。このプラグインを使用できるかどうかは、Qtの設定に依存します。
特定のデバイス用に設定する
VxWorks SDKをインストールし、インストーラとVxWorksイメージのビルドに必要なWindRiverライセンスを取得して環境を準備します。https://gallery.windriver.com/portal/products}で適切なインストーラを検索してください。
特定のデバイス用に Qt をビルドするには、コンパイルホスト、ツールチェーン、および sysroot 用に Qt6 をインストールする必要があります。さらに、一部のデバイスでは、EGL および OpenGL 2.0 サポートのためにベンダー固有のアダプテーションコードが必要です。
VxWorks イメージの要件
Qt for VxWorks では、Qt をコンパイルして正しく動作させるために、特定の VxWorks イメージバンドルとコンポーネントをベースソフトウェアに組み込む必要があります。このリストは、ハードウェア、ソフトウェア、およびプロジェクトのシステム要件に依存するため、決して完全ではありません。しかし、以下の表には、特定の機能を動作させるために必須であるものが含まれています。また、これらはVxWorksのバージョンによって変更される可能性があることに注意してください。
i.MX 6 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 | |
EVDEV | |
EVDEV_LIB | |
EVDEV_TI_TSC2004_TS | |
EVDEV_EETI_EXC7200_TS | |
AUDIO | |
GPUDEV_FSLVIVGPU | |
HASH | |
OPENSSL | |
RANDOM_ENTROPY_INJECT | |
IPNET_SSH | |
USER_MANAGEMENT | |
ICU |
以下の設定変数は暗黙的に追加されているので、削除する必要があります:
変数 | 注意事項 |
---|---|
_WRS_CONFIG_EVDEV_OPTIMIZED_MODE | |
_WRS_CONFIG_EVDEV_DISPLAY_POINT_TRANSLATE |
以下の変数をコンフィグに追加する必要があります:
変数 | 値 | 注意事項 |
---|---|---|
_WRS_CONFIG_RTP_SSP | y | |
_WRS_CONFIG_RTP_STACK_PROTECTOR | y |
i.MX 6 BSPのVIP設定例
詳細については、WindRiver VxWorksのドキュメントを参照してください。
レイヤー | 備考 |
---|---|
BUNDLE_POSIX | このバンドルはQtが必要とするPOSIX関連機能との互換性のために必要です。 |
INCLUDE_TMP_DIR INCLUDE_RAM_DISK_FORMAT_HRFS | QTemporaryFile を使用する場合は、この2つのコンポーネントを含める必要があります。TMP_DIR_SIZE も適切な値に設定してください。 |
BUNDLE_RTP_DEVELOP | |
BUNDLE_RTP_DEPLOY | |
BUNDLE_STANDALONE_SHELL | |
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_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_USER_DATABASE | |
INCLUDE_USER_IDENTIFICATION | |
INCLUDE_VRFS | |
INCLUDE_VXBUS_SHOW | |
DRV_TOUCH_SCREEN_TI_TSC2004 | |
DRV_TOUCH_SCREEN_EETI_EXC7200 | |
INCLUDE_FBDEV_FSLIPU_0 | |
INCLUDE_FBDEV_SPLASH | |
INCLUDE_GPUDEV_FSLVIV_API | |
INCLUDE_GPUDEV_FSLVIV_API_INIT |
以下のコンポーネントは暗黙的に追加されているので、削除する必要があります:
レイヤー | ノート |
---|---|
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 | 131072 | |
TMP_DIR_SIZE | 614400 | Qt 内部テストに合格するための最小値 |
NUM_FILES | 300 | |
RTP_FD_NUM_MAX | 300 | |
HRFS_DEFAULT_MAX_FILES | 300 |
VxWorks 用 Qt6 のビルド
ホスト用の Qt6 のビルド
VxWorks 用の Qt6 をクロスビルドする場合、クロスビルドと同じソースコードを使用するホストツールを使用するのがベストプラクティスです。そのためには、まずホスト用のQt6をビルドする必要がありますが、サブモジュールのサブセットを限定してビルドする必要があります:
- qtbase
- qtdeclarative
- qtquick3d
- qtshadertools
ホスト用の Qt6 をビルドするために必要な前提条件がすべて揃っていることを確認してください。詳細はBuilding Qt Sources を参照してください。
Qt6 for host を設定、ビルド、インストールするためのコマンドは以下の通りです:
./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> ninja ninja install
これらのコマンドを実行すると、Qt6 for host が<path_to_qt6_host_installation_dir>
にインストールされます。
Qt6 for target のビルド
configure を実行して Qt 6 をビルドする前に、コマンドプロンプトでVxWorks Development Shell を開く必要があります。
- Linuxの場合
cd <VxWorks installation directory> ./wrenv.sh -p vxworks
- Windows
cd <VxWorks installation directory> wrenv -p vxworks
以下は、BD-SL-i.MX6 用のビルド設定例です。ほとんどの VxWorks ボードでは、configure コマンドは非常によく似ています。デフォルトでは、Qt 6 は共有ライブラリを使用するように設定されています。Qt 6 を静的にビルドするには、configure に-static
オプションを追加します。
WIND_CC_SYSROOT}環境変数がVxWorks VSBルートディレクトリに設定されていることを確認してください。
./configure \ -cmake-generator "Ninja" \ -icu \ -no-feature-vulkan \ -platform vxworks-clang \ -qt-host-path <path_to_qt6_host_installation_dir> \ -submodules "qtbase,qtdeclarative,qtmultimedia,qtquick3d,qtgraphs,qtimageformats,qtsvg,qtshadertools,qtvirtualkeyboard" \ -sysroot <path_to_vxworks_vsb_dir>/fsl_imx6_<vsb_version>_VSB \ -qpa "eglfs" \ -DQT_QPA_EGLFS_INTEGRATION=eglfs_viv \ -prefix /sd0:1/qt6rtp \ -extprefix <path_to_host_dir>/qt6rtp \ -nomake tools \ -nomake examples \ -- \ -B <target_build_dir> \ -DCMAKE_TOOLCHAIN_FILE="$WIND_CC_SYSROOT/mk/rtp.toolchain.cmake"
RTP ではなく DKM 用にビルドする場合は、-static
オプションを使用し、CMAKE_TOOLCHAIN_FILE
の値を次のように変更します。"$WIND_CC_SYSROOT/mk/dkm.toolchain.cmake"
シャドウビルドを使用して Qt 6 をビルドすることをお勧めします。詳細はQt Configure Optionsを参照してください。
コンフィギュレーションが成功すると、Qt6 for VxWorks のビルドとインストールが次のように行われます:
cd <target_build_dir> ninja ninja install
VxWorks デバイス用プラットフォームプラグイン
Qt for VxWorks は EGLFS プラットフォームプラグインをサポートしています。詳しくはEGLFS の設定を参照してください。
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("<Qt6_app>", 200, 0x100000, 0, 0x01000000)
制限事項
ビデオメモリ
Qt Quick やQOpenGLWidget のようなクラスをベースとした Qt アプリケーションを実行する前に、一定量の専用ビデオメモリを搭載したシステムには特別な注意が必要かもしれません。特に、高解像度(フル HD など)の画面に表示する場合、デフォルトの設定では不十分な場合があります。このような場合、予期しない方法で失敗し始めるかもしれません。したがって、少なくとも 128 MB の GPU メモリを確保することをお勧めします。GPU 用に予約された固定量のメモリがないシステムでは、これは問題ではありません。
本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。