このページでは

C

Qt Quick Ultralite の使い方Zephyr

Zephyr は、組み込みシステム向けのRTOSです。完全なプリエンプティブ型ティックレスカーネル、協調型およびプリエンプティブ型のスレッド処理、セマフォ、キューを提供します。

注:これは 、新しいQt Quick Ultralite Zephyr アプリケーション向けの推奨ワークフローであり、Qt Quick Ultralite がwestモジュールとして追加されます。アプリケーションをスタンドアロンのZephyr プロジェクトとしてエクスポートするワークフローについては、「ManualQt Quick Ultralite integration withZephyr 」を参照してください。

Qt Quick Ultralite 既存のZephyr プロジェクトとの統合を容易にするツールを提供しています。Qt Quick Ultralite のZephyr モジュールは、Zephyr のCMake configureステップ中にqmlprojectexporter を実行し、Zephyr ボードをQt Quick Ultralite プラットフォームにマッピングし、生成されたソースコードをZephyr ライブラリとしてビルドに追加するWestモジュールです。このモジュールはKconfigを通じて設定され、Qt Quick Ultralite ターゲットライブラリをビルドするためのwest build-qul-libs コマンドを提供します。

サポートされているアーキテクチャ、プラットフォーム、およびZephyr のバージョン

Qt Quick Ultraliteは以下のハードウェアをサポートしています:

ハードウェアボードMCUアーキテクチャコンパイラ対応Zephyr バージョン
NXP IMXRT1060-EVKBMIMXRT1062DVL6BARM Cortex-M7Zephyr SDK 1.0.1 (arm-zephyr-eabi GCC)4.4.0
NXP IMXRT1064-EVKMIMXRT1064DVL6AARM Cortex-M7Zephyr SDK 1.0.1 (arm-zephyr-eabi GCC)4.4.0

さらに、Qt Quick Ultralite は、Zephyr のホストベースシミュレータボードをサポートしており、このボードではZephyr が開発用ホスト上でアプリケーションとして実行されます:

ボードホストアーキテクチャコンパイラ対応Zephyr バージョン
native_simLinuxx86_64GNUコンパイラコレクション (GCC)4.4.0

前提条件

Qt Quick Ultralite のZephyr モジュールを使用するには、以下の前提条件をインストールする必要があります:

  • Qt for MCUs 2.12.3
  • Qt Quick Ultraliteプラットフォームパッケージ(対応プラットフォームを参照)
  • Zephyr 4.4.0
  • ターゲット用のツールチェーン:
    • Zephyr SDK 1.0.1
    • native_sim用GNUコンパイラコレクション(GCC)
  • CMake 3.21.1 以降
  • Ninja 1.10.0 以降
  • Python 3.12 以降

ワークフロー

Qt Quick Ultralite アプリケーションを作成およびコンパイルするための全体的なワークフローは、以下の通りです:

Qt Quick Ultralite Zephyr モジュールを使用して Qt Quick Ultralite アプリケーションを作成、ビルド、フラッシュするワークフロー。アプリケーションに変更があった場合は、再ビルドを行うようにループバックする。

新しいアプリケーションの設定

このセクションでは、Qt Quick Ultralite を実行するZephyr アプリケーションの設定について説明します。Qt Quick Ultralite アプリケーションを作成するには、MCU向けドキュメントの「Qt Design Studio 」を参照してください。

Zephyr アプリケーションディレクトリの作成

Qt Quick Ultralite は、Zephyr アプリケーションによって作成される独自のZephyr スレッド内で実行されます。このスレッドは、Qul::Application::exec()を通じてQt Quick Ultralite イベントループを実行し、独立して動作します。Zephyr アプリケーションの残りの部分は、これと並行して実行されます。スレッドを作成するアプリケーションは、CMakeLists.txt ファイル、prj.conf ファイル、およびアプリケーションのソースコードで構成されています。

westワークスペース用のディレクトリを作成し、その下にアプリケーションディレクトリapp と、そのサブディレクトリとしてsrc を作成します:

mkdir myproject
cd myproject
mkdir -p app/src
mkdir myproject
cd myproject
mkdir app\src

Qt Quick Ultralite の取得Zephyr モジュールリポジトリ

Qt Quick Ultralite Zephyr モジュールは、Qt Quick Ultralite のインストールに含まれるgitバンドルファイルとして配布されています:

<QT_INSTALL>/QtMCUs/2.12.3/platform/boards/zephyr/qtultralight-zephyr-module.bundle

このバンドルを使用してモジュールリポジトリのローカルコピーを作成し、そのコピーを West ワークスペースからアクセス可能な Git サーバー上で利用可能にしてください:

git clone --origin bundle <path/to/qtultralight-zephyr-module.bundle> qtultralight-zephyr-module
cd qtultralight-zephyr-module
git branch -m main
git remote add origin <your-git-server-url>/qtultralight.git
git push origin main

次の手順で作成される `app/west.yml` 内の `qt ` リモートに対して、`url-base ` の値と同じサーバー URL を使用してください。

各Qt Quick Ultraliteリリースには、更新されたバンドルが含まれています。新しいQt Quick Ultraliteバージョンに移行するには、そのリリースのバンドルを使用してこれらの手順を繰り返し、Gitサーバー上のコピーを更新してください。その後、既存のWestワークスペースでwest update を実行して、新しいコミットを取得してください。

app/west.yml の作成

これらの手順では、west マニフェストをアプリケーションディレクトリ内に保持するため、app もマニフェストリポジトリとなります。アプリケーションとは別のマニフェストリポジトリを使用する場合も、動作は同様です。west がサポートするワークスペースのトポロジについては、「west ワークスペース」を参照してください。

app/west.yml に west マニフェストを作成します。qt リモートに対して、url-base を、前の手順でQt Quick Ultralite Zephyr モジュールリポジトリをプッシュした Git サーバーの URL に設定します。Qt Quick Ultralite Zephyr モジュールをその中のプロジェクトとして追加し、import: true を指定して、west がモジュール自身のマニフェストも読み込めるようにします。このマニフェストには、build-qul-libs 拡張コマンドが宣言されています:

manifest:
  remotes:
    - name: zephyrproject-rtos
      url-base: https://github.com/zephyrproject-rtos
    - name: qt
      url-base: https://your.git.server/path

  projects:
    - name: zephyr
      remote: zephyrproject-rtos
      revision: v4.4-branch
      import: true

    - name: qtultralight
      remote: qt
      repo-path: qtultralight.git
      revision: main
      path: qtultralight
      import: true

  self:
    path: app

qtultralight プロジェクトが指すリポジトリは、薄いラッパーです。そこにはZephyr の統合部分のみが含まれています。具体的には、Kconfig定義、Zephyr のCMakeファイル、およびwest build-qul-libs コマンドです。Qt Quick Ultralite 自体はこれに含まれていないため、west update はラッパーのみをクローンします。

qmlprojectexporter などのホストツール、プラットフォームのソースコード、およびターゲットライブラリは、west ワークスペースの外に保持されているQt Quick の Ultralite インストールから取得されます。このモジュールは、QUL_ROOT を通じてそのインストールを特定します。

ワークスペースの初期化と更新

west init -l app
west update

app/CMakeLists.txt の作成

app/ ディレクトリに、アプリケーションのソースを列挙した簡単な `CMakeLists.txt ` ファイルを作成します:

cmake_minimum_required(VERSION 3.20.0)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(myapp)

target_sources(app PRIVATE src/qul_main.cpp)

注: QML プロジェクトで C++ インターフェースやモデルを使用している場合は 、それらのソースファイルもtarget_sources に追加してください。それらのヘッダーファイルは、CONFIG_QUL_INCLUDE_DIRS によってqmlprojectexporter から利用可能になります。

生成されたプロジェクトには、プラットフォーム移植版のzephyr-linker-sources.cmake も含まれており、これにより、Zephyr で生成されたリンカースクリプトにQt Quick Ultralite のリンカーセクションが追加されます。

app/prj.conf の作成

app/prj.conf を作成して、モジュールを有効にし、qmlproject ファイルを指定します。

CONFIG_QUL=y
CONFIG_QUL_QMLPROJECT_FILE="path/to/your/qul_application.qmlproject"

CONFIG_QUL_QMLPROJECT_FILE 絶対パス、アプリケーションディレクトリを基準とした相対パス、または~ で始まるパスを指定できます。

これら2つのオプションが最小限の設定となります。Qt Quick Ultralite 固有の Kconfig 値の完全なリストについては、Kconfig リファレンスを参照してください。

app/src/qul_main.cpp の作成

app/src/qul_main.cpp 内にアプリケーションのエントリポイントを作成します。このソースファイルは、Qt Quick Ultraliteを実行するスレッドを提供します。QMLルートアイテムのヘッダーは、ビルド時に.qmlproject ファイルから生成され、自動的にインクルードパスに追加されます:

#include "MainScreen.h"

#include <qul/application.h>
#include <qul/qul.h>
#include <zephyr/kernel.h>

#define QUL_THREAD_STACK_SIZE 16384
#define QUL_THREAD_PRIORITY   5

static void qul_thread_entry(void *, void *, void *)
{
    Qul::initHardware();
    Qul::initPlatform();

    Qul::Application app;
    static MainScreen item;
    app.setRootItem(&item);
    app.exec();
}

K_THREAD_DEFINE(qul_tid, QUL_THREAD_STACK_SIZE,
                qul_thread_entry, NULL, NULL, NULL,
                QUL_THREAD_PRIORITY, 0, 0);

K_THREAD_DEFINE 起動時にZephyr スレッドを作成します。このスレッドのエントリポイントは、Qt Quick Ultralite のイベントループを開始する前に、ハードウェアとプラットフォームを初期化します。

注: MainScreen は 、Qt Quick Ultralite アプリケーションのメイン QML ファイルがMainScreen.qml であることを前提としています。アプリケーションのメイン QML ファイル名に合わせて、アイテム名を変更してください。

注: スタックサイズは 、Qt Quick Ultralite アプリケーションの複雑さによって異なります。ここでの例示値は、Qt Quick Ultralite Thermostat Demo には十分です。

注: native_sim では、 表示ウィンドウが閉じられた際にposix_exit() が呼び出されますが、これにより上記のスレッドコードを使用しているアプリケーションがクラッシュする可能性があります。native_sim では、代わりにnative_sim固有のアプリケーションスレッドを使用してください。

QUL_ROOTの設定

Qt Quick Ultralite のZephyr モジュールが動作するには、Qt for MCUs のインストールが必要です。モジュールがホストツール、プラットフォームのソース、およびライブラリを検出できるように、環境変数QUL_ROOT にインストールディレクトリを設定してください:

export QUL_ROOT=$HOME/Qt/QtMCUs/2.12.3
set QUL_ROOT=C:\Qt\QtMCUs\2.12.3

また、-- の後に、west build コマンドにQUL_ROOT を引数として渡すことで、 を設定することもできます:

west build -b <board> app -- -DQUL_ROOT=$HOME/Qt/QtMCUs/2.12.3
west build -b <board> app -- -DQUL_ROOT=C:\Qt\QtMCUs\2.12.3

注: コマンドラインで指定された値は 、QUL_ROOT 環境変数の値よりも優先されます。

設定

Qt Quick Ultralite Zephyr モジュールは、Qt Quick Ultralite をZephyr アプリケーションに組み込む方法を設定するKconfigオプションを追加します。これらのオプションは、アプリケーションのprj.conf ファイル内で、または対話型のKconfigインターフェースを通じて設定します。

west build -b <board> app -t menuconfig

ここで、<board> はZephyr ボードターゲット、-b は--board の短縮形です。menuconfig ターゲットは CMake の configure ステップを実行しますが、これにはボードターゲットが必要です。ビルドディレクトリが一度作成されると、west は CMake キャッシュからボードを再利用するため、-b <board> を省略できます。

注: CONFIG_QUL 、CONFIG_QUL_DEFAULT_CONF 、およびCONFIG_QUL_DEVICELINK は、prj.conf 内で設定する必要があります。モジュールは Kconfig が実行される前にこれらを読み込むため、menuconfig を通じてのみ設定しても反映されません。

Qt Quick のUltraliteオプションは、Modules > qtultralight にあります。変更内容はbuild/zephyr/.config に保存され、次回のwest build 実行時に反映されます。オプションの完全な一覧については、Kconfigリファレンスを参照してください。

Qt Quick Ultralite アプリケーション自体の設定は、その.qmlproject ファイルおよびプラットフォームのBoardDefaults_*.qmlprojectconfig ファイルで行われます。詳細は、QmlProject マニュアルおよび 「プラットフォームのデフォルト変数の定義」を参照してください。このモジュールは、CMake 変数および環境変数を通じて、Qt Quick Ultralite のインストール先とプラットフォームのソースを特定します。詳細は、CMake 変数リファレンスおよび環境変数リファレンスを参照してください。

ビルド

デフォルトでは、Qt Quick Ultraliteはインストール先の事前ビルド済みライブラリを使用します。ライブラリを独自にビルドするには、「Qt Quick Ultraliteライブラリのビルド」を参照してください。

ターゲットボードを指定してwest build を実行し、アプリケーションをビルドします:

west build -b <board> app

ここで、<board> はZephyr ボードターゲットです。使用するボードターゲットについては、「サポートされているアーキテクチャ、プラットフォーム、およびZephyr のバージョン」に記載されているボード固有のページを参照してください。

このモジュールは、QUL_ZEPHYR_BOARDS 変数を通じて、ボードターゲットをQt Quick Ultraliteプラットフォームにマッピングします。各プラットフォームポートは、そのzephyr-boards.cmake ファイル内でサポートするボードターゲットを列挙しており、モジュールは、そのリストにボードターゲットがそのまま記載されているポートを選択します。

変更後の再ビルド

Qt Quick Ultralite アプリケーションのQMLファイルや.qmlproject ファイルを変更した場合は、Zephyr プロジェクトを再ビルドするだけで済みます。qmlprojectexporter は、変更が検出されると自動的にQt Quick Ultralite アプリケーションを再エクスポートします。

注: QML ファイルへの変更は 自動的に反映されます。QML ファイルを変更せずに、BinaryFiles 、フォントファイル、翻訳ファイル、または画像リソースを変更した場合は、west build -t rebuild_cache を実行して、CMake の configure ステップを再実行し、アプリケーションのソースを再生成してください。

フラッシュ

ハードウェアボードの場合は、west を使用してビルド済みのアプリケーションをフラッシュします:

west flash

Qt Quick Ultralite ライブラリのビルド

デフォルトでは、Qt Quick Ultraliteはインストール時の事前ビルド済みライブラリを使用します。これらはMinSizeRel またはRelease 構成でビルドされています。独自のライブラリをビルドするには、west build-qul-libs を実行します。以下の例は、Debug 構成でライブラリをビルドするものです:

west build-qul-libs --board <board> --build-type Debug

ここで、<board> はZephyr ボードターゲットであり、west build と同じ値です。

注: アプリケーションがビルドタイプを指定しない「CONFIG_QUL_BUILD_TYPE_PLATFORM_DEFAULT 」を選択した場合、または「Zephyr 」の「.config 」がまだ存在しない場合は、--build-type を指定してください 。

このコマンドは、Qt Quick のUltraliteプラットフォームおよびコアライブラリをビルドし、それらを<build-dir>/qul_install にインストールします。アプリケーション自体はビルドしません。ライブラリのインストール後、このコマンドはZephyr のビルドディレクトリを再構成し、次回のwest build で新しいライブラリが読み込まれるようにします。

このコマンドでは、以下のオプションがサポートされています:

オプション説明
--board,-bライブラリをビルドする対象のZephyr ボード。省略された場合は、環境変数BOARD の値が使用されます。
--build-dir,-dライブラリがビルドされ、インストールされるZephyr のビルドディレクトリ。westワークスペースのルートディレクトリを基準として、デフォルトはbuild となる。
--build-typeCMakeのビルドタイプ:Debug 、Release 、RelWithDebInfo 、またはMinSizeRel 。Zephyr .config のCONFIG_QUL_BUILD_TYPE から読み込まれます。このオプションで明示的なビルドタイプが指定されている場合に限ります。いずれのビルドタイプも指定されていない場合、コマンドはエラーで終了します。

このオプションを使用すると、ライブラリのビルドタイプを上書きできます。これはライブラリのビルドにのみ適用されます。ビルドタイプはライブラリファイル名の一部であるため、異なるビルドタイプのライブラリを同じインストール環境内に共存させることができます。

アプリケーションのビルドでは、CONFIG_QUL_BUILD_TYPE で選択されたビルドタイプ、またはプラットフォームメタデータで宣言されたビルドタイプが検索されます。そのビルドタイプを一致させることで、ここでビルドしたライブラリに対してアプリケーションをリンクできます。

--jobs,-j並列ビルドジョブの数。デフォルトはホストのCPUコア数です。
--qul-rootプラットフォームのソースコード、ツールチェーンファイル、およびホストツールを含む、Qt Quick Ultraliteのインストール先のパス。
--platform-boards-dirQt Quick Ultraliteのプラットフォームボードソースが含まれるディレクトリ。例:<path/to/qul>/platform/boards 。指定がない場合は、環境変数QUL_PLATFORM_BOARDS_DIR が優先され、次に<qul-root>/platform/boards が使用されます。

ビルドディレクトリは、ライブラリのビルドと同じボード用に設定されていることが想定されています。--board がビルドディレクトリに記録されているボードと一致しない場合、コマンドはエラーで停止します。

注:このコマンドは <build-dir>/zephyr/.config からKconfigオプションを読み取りますが、このファイルはZephyr のビルドが一度設定されるまで存在しません。新しいワークスペースでは、まずwest build を実行し、次にwest build-qul-libs を実行してから、再度west build を実行してください。このファイルがない場合、アプリケーションのprj.conf の設定にかかわらず、CONFIG_QUL_* のオプションはデフォルト値が使用されます。

DeviceLinkは、デバイスとホスト間でタッチ、パフォーマンス、およびログデータを交換します。アプリケーションのprj.conf でこれを有効にします:

CONFIG_QUL_DEVICELINK=y

その後、モジュールはプラットフォームポートの DeviceLink デバイスツリーオーバーレイと Kconfig フラグメントを適用し、一致するプラットフォームメタデータを選択します。DeviceLink はコンパイル時の機能であるため、オプションを変更した後に west build-qul-libs を実行してください。

注: native_sim プラットフォームポートでは、DeviceLink はサポートされていません。

詳細については、「DeviceLink 通信の移植」を参照してください。

Kconfig リファレンス

CONFIG_QUL が有効になっている場合、以下のオプションが利用可能です。アプリケーションの `prj.conf ` または `west build app -t menuconfig` を通じて設定してください。

オプションタイプデフォルト説明
CONFIG_QULboolnQt Quick のUltraliteモジュールを有効にします。無効に設定すると、モジュールはビルドから除外され、qmlprojectexporter は実行されません。prj.conf で設定する必要があります。
CONFIG_QUL_DEFAULT_CONFboolyKconfigが実行される前に、プラットフォームのqul_module.conf をEXTRA_CONF_FILE に追加します。これにより、ボードに必要なQt Quick Ultraliteの設定が提供されます。独自の設定を使用する場合は、これを無効にしてください。prj.conf で設定する必要があります。
CONFIG_QUL_QMLPROJECT_FILE文字列空qmlprojectexporter がQt Quick Ultraliteアプリケーションのソースを生成するために使用する.qmlproject ファイルへのパス。
CONFIG_QUL_BOARD_DEFAULTS文字列空ボード固有のBoardDefaults_*.qmlprojectconfig ファイルへのパス。空欄の場合、プラットフォームと色深度から自動的に決定されます。この場合、1つのファイルが条件に一致するか、一致するファイルのいずれかがデフォルトのバリアントとしてマークされている必要があります。明示的に指定された値が優先されます。
CONFIG_QUL_PLATFORM_METADATA文字列空プラットフォームの*-metadata.json ファイルへのパス。空の場合、CONFIG_QUL_BOARD_DEFAULTS と同じ条件下で、プラットフォームとホストから解決されます。CONFIG_QUL_DEVICELINK が有効になっている場合、一致する*-metadata-devicelink.json バリアントが使用されます。
CONFIG_QUL_SELECTOR文字列空QML ファイルセレクタのカンマ区切りリスト。qmlprojectexporter に対して--selector として渡されます。空の場合は省略されます。
CONFIG_QUL_BUILD_TYPE選択From platform metadataQt Quick Ultralite ライブラリのビルドタイプ。CONFIG_QUL_BUILD_TYPE_PLATFORM_DEFAULT 、CONFIG_QUL_BUILD_TYPE_DEBUG 、CONFIG_QUL_BUILD_TYPE_RELEASE 、CONFIG_QUL_BUILD_TYPE_RELWITHDEBINFO 、またはCONFIG_QUL_BUILD_TYPE_MINSIZEREL で選択されます。

CONFIG_QUL_BUILD_TYPE_PLATFORM_DEFAULT プラットフォームの*-metadata.json ファイル内のQulBuildType の値からビルドタイプを取得します。その他の値は、qmlprojectexporter に対して--qul-build-typeとして渡されます。

CONFIG_QUL_COLOR_DEPTH選択Autoフレームバッファの色深度(1ピクセルあたりのビット数)。Auto は、選択されたBoardDefaults_<N>bpp.qmlprojectconfig ファイルから深度を導出します。CONFIG_QUL_COLOR_DEPTH_AUTO 、CONFIG_QUL_COLOR_DEPTH_8 、CONFIG_QUL_COLOR_DEPTH_16 、CONFIG_QUL_COLOR_DEPTH_24 、またはCONFIG_QUL_COLOR_DEPTH_32 で指定されます。ターゲットプラットフォームでは、Auto 以外の深度が利用可能である必要があります。
CONFIG_QUL_CONTROLS_STYLE文字列空「Qt Quick 」Ultralite Controls スタイル。qmlprojectexporter に対して--controls-style として渡されます。空の場合は省略されます。
CONFIG_QUL_INCLUDE_DIRS文字列空qmlprojectexporter に--include-dirs として渡される、コンマ区切りのインクルードディレクトリのリスト。InterfaceFiles で宣言された C++ インターフェースのヘッダーを指定するために使用します。空の場合は省略されます。
CONFIG_QUL_DEBUG_RTTI選択Noneアプリケーションに含まれるデバッグランタイム型情報の量。qmlprojectexporter に対して--debug-rtti-information として渡されます。CONFIG_QUL_DEBUG_RTTI_NONE 、CONFIG_QUL_DEBUG_RTTI_ROOTONLY 、またはCONFIG_QUL_DEBUG_RTTI_ALL で指定します。
CONFIG_QUL_ENABLE_PERFORMANCE_LOGGINGboolnランタイムのパフォーマンス統計情報を収集します。Qt Quick のUltraliteパフォーマンスロギングを参照してください。
CONFIG_QUL_PERFORMANCE_LOGGING_CONSOLEbooln2 秒ごとにパフォーマンス統計情報をコンソールに出力します。CONFIG_QUL_ENABLE_PERFORMANCE_LOGGING が必要です。
CONFIG_QUL_PERFORMANCE_LOGGING_HARDWAREbooly対応しているプラットフォームにおいて、プラットフォーム固有の CPU 使用率のロギングを有効にします。CONFIG_QUL_ENABLE_PERFORMANCE_LOGGING が必要です。
CONFIG_QUL_DEVICELINKboolnホストとタッチ、パフォーマンス、およびログデータを交換するDeviceLinkプロトコルを有効にします。prj.conf で設定する必要があります。DeviceLinkを参照してください。

注:色 深度、パフォーマンスログ、およびDeviceLinkのオプションは 、Qt Quick Ultraliteライブラリに影響を与えます。変更後は、west build-qul-libs を実行してください。

CMake 変数リファレンス

-- の実行後に、これらの変数をwest build に渡し、例えばwest build -b <board> app -- -DQUL_ROOT=<path/to/qul> のように指定します。

変数説明
QUL_ROOTQt Quick Ultralite のインストール先へのパス。ここには、qmlprojectexporter などのホストツール、プラットフォームのソース、および CMake インフラストラクチャが含まれている必要があります。QUL_ROOT/lib にあるターゲットライブラリは、QUL_INSTALL_DIR にlib サブディレクトリが含まれていない場合に使用されます。
QUL_PLATFORM_BOARDS_DIRQt Quick Ultraliteプラットフォームボードのソースコードを含むディレクトリ。この変数から解決され、次にQUL_PLATFORM_BOARDS_DIR 環境変数、最後にQUL_ROOT/platform/boards の順に解決されます。プラットフォームのソースコードがQt Quick Ultraliteインストールに含まれていない場合に設定してください。
QUL_INSTALL_DIRボード用のQt Quick Ultraliteターゲットライブラリがプリビルドされて格納されているディレクトリ。このディレクトリにlib というサブディレクトリが存在する場合、QUL_ROOT/lib 配下のライブラリではなく、そちらのライブラリが使用されます。デフォルトは<build-dir>/qul_install で、これはwest build-qul-libs が結果をインストールする場所です。

環境変数のリファレンス

変数説明
QUL_ROOTQt Quick Ultralite のインストール先へのパス。対応するコマンドラインオプションが指定されていない場合、west build およびwest build-qul-libs の両方で使用されます。
QUL_PLATFORM_BOARDS_DIRQt Quick Ultralite プラットフォームボードのソースが含まれるディレクトリ。
BOARDZephyr ボードのターゲット。--board が指定されていない場合、west build-qul-libs によって使用されます。
ZEPHYR_TOOLCHAIN_VARIANTライブラリのビルドに使用するZephyr ツールチェーン。設定されていない場合、west build-qul-libs はnative_sim ボードに対してhost を、それ以外のすべてのボードに対してzephyr を使用します。
ZEPHYR_SDK_INSTALL_DIR自動検出されたZephyr SDK のパスを上書きします。
GNUARMEMB_TOOLCHAIN_PATHGNU Arm Embedded ツールチェーンへのパス。ZEPHYR_TOOLCHAIN_VARIANT がgnuarmemb の場合に必要です。

Qt Quick Ultralite をZephyr プラットフォームに移植する

『Qt Quick Ultralite Platform Porting Guide』に従うことで、Qt Quick Ultralite をZephyr プラットフォームに移植できます。リファレンスポートでは、以下の部分がZephyr のAPIを使用して実装されています:

  • currentTimestamp() はk_uptime_get() を呼び出します。
  • タッチ操作のサポートは、Zephyr の入力APIを使用して実現されています。
  • Qt Quick Ultraliteキューは、Zephyr メッセージキューを使用しています。
  • セマフォは、Qt Quick のUltraliteスレッドの動作を一時停止および再開するために使用されます。
  • qul_malloc(),qul_realloc(), およびqul_free() は、それぞれk_malloc(),k_realloc(),k_free() を呼び出すため、Qt Quick Ultralite での動的割り当てはZephyr カーネルヒープから行われます。UI ツリー、画像バッファ、フォントデータなど、アプリケーションが行う割り当てをカバーできるよう、CONFIG_HEAP_MEM_POOL_SIZE を使用してそのヒープのサイズを調整してください。アロケータ API については、「Qt Quick Ultralite プラットフォーム抽象化におけるメモリ割り当て」を参照してください。
  • ディスプレイ割り込みは、Zephyr を使用して設定および有効化されます:
    void setInterruptPriorities()
    {
        IRQ_CONNECT(LCDIF_IRQn, 3, displayIRQHandler, NULL, 0);
        irq_enable(LCDIF_IRQn);
    }
  • LCD 画面のピンマルチプレクシングは、Zephyr のピン制御 APIを使用して初期化されます。
    #define LCDIF_DEV DT_NODELABEL(lcdif)
    
    void initializeLcdPinmux()
    {
        PINCTRL_DT_DEFINE(LCDIF_DEV);
    
        pinctrl_apply_state(PINCTRL_DT_DEV_CONFIG_GET(LCDIF_DEV), PINCTRL_STATE_DEFAULT);
    }

注: サポートされているリファレンスプラットフォームのポートのいずれかをインストールしている場合 、リファレンスZephyr ポートのソースコードは、<QT_INSTALL>/QtMCUs/2.12.3/platform/boards/zephyr/native_sim-zephyr または<QT_INSTALL>/QtMCUs/2.12.3/platform/boards/nxp/common/zephyr にあります。

Zephyr Kconfig オプション

このモジュールと併用されるプラットフォーム・ポートは、Qt Quick Ultralite がターゲット上で必要とするZephyr Kconfig オプションを、そのqul_module.conf ファイル内に提供します。モジュールは、Kconfig が実行される前にそのファイルをEXTRA_CONF_FILE に追加し、アプリケーションのビルドにオプションを適用します。

リファレンスポートで必要なオプションについては、ボードページの「必要な Kconfig オプション」を参照してください。

特定の Qt ライセンスの下で利用可能です。
詳細はこちらをご覧ください。