このページでは

C

Qt for MCUs 2.3へのプラットフォーム移行ガイド

以下は、Qt for MCUs 1.xまたは2.xからQt for MCUs 2.3以上にプラットフォームを移植する際に注意すべき変更点です。

最も重要な変更点は、Qt Quick Ultralite 2.3以降、BoardDefaults.cmakeBoardDefaults.qmlprojectconfig に置き換えられることです。ただし、Qt Quick Ultraliteの旧バージョン(v2.0~2.2)に基づくすべてのプラットフォーム構成は、引き続きCMake APIを使用できます。

以下への移行BoardDefaults.qmlprojectconfig

プラットフォームコンフィギュレーションのデフォルトソースとしてBoardDefaults.qmlprojectconfig を導入したことにより、プラットフォームのファイル構造にいくつかの変更が生じました。この新しいアプローチの詳細については、プラットフォーム移植ガイドを参照してください。

アーキテクチャビルド

Qt for MCUs がアーキテクチャベースのビルドを使うようになったため、ターゲットプラットフォームのアーキテクチャを指定することが重要になりました。これはBoardArchitectureConfig.cmakeQUL_PLATFORM_ARCHITECTURE 変数を使うことで行えます。詳細は「アーキテクチャとプラットフォーム固有のビルド設定」を参照してください。

注: Qt for MCUs 2.3 以降、QUL_PLATFORM_ARCHITECTURE 変数はBoardDefaults.cmake からBoardArchitectureConfig.cmake に移動した。

プラットフォーム固有のコンパイラー・フラグとリンカー・フラグを含むCompilationOptions.cmake ファイルの名前をplatform.cmake に変更します。

リンカ・スクリプト

プラットフォームのLinkerScriptConfig.cmake ファイルにあるqul_platform_add_default_linker_script() CMake 関数を使用して、 デフォルトのリンカ・スクリプトを設定します:

qul_platform_add_default_linker_script("${CMAKE_CURRENT_LIST_DIR}/example-platform.ld")

以前のバージョン(Qt for MCUs )では、LinkerScriptLoader.cmakeLINKER_SCRIPT 変数を使用していました、

プラットフォーム・キット構成ファイル

boardSdk 属性のenvVar 属性はcmakeCacheEntries 属性に置き換えられます。詳細については、 Qt Creator のプラットフォーム・キット・ファイルの作成セクションを参照してください。

プラットフォーム・ターゲット名

プラットフォーム・ターゲットの名前がQuickUltralitePlatform からPlatform に変更されました。target_sourcestarget_include_directoriestarget_compile_definitions 、およびその他の関連する CMake コマンドを更新して、新しいターゲット名を使用するようにします。

プラットフォーム API

以下の関数の実装をQul::Platform::PlatformContext クラスのサブクラスに移動します:

注: availableScreensframeBufferingTypeconst メンバ関数にします。

注:initializePlatform と は のメンバ関数でなければなりません。さらに、 メンバ関数を追加して、ハードウェアに直接関係しないプラットフォームの初期化を実行できるようにします。

最後に、Qul::Platform::getPlatformInstance ()関数を実装し、シングルトン・プラットフォームのインスタンスへのポインタを返すようにします。

プラットフォーム・プロパティ

Qt for MCUs 2.3で導入されたプラットフォーム・プロパティは、Qt Quick Ultraliteエンジン関連の設定からプラットフォーム固有の設定を分離するためのもので、BoardDefaults.qmlprojectconfig ファイルで定義されています。以下の例に示すように、プラットフォームのCMakeLists.txt で設定できます:

set_target_properties(Platform
    PROPERTIES
        NXP_CHIP_NAME "MIMXRT1052xxxxB"
        NXP_CONNECT_SCRIPT "RT1050_connect.scp"
        # variables cannot be expanded that's why there is "\" before "$". It will be later evaluated at CMake runtime using
        # qul_private_evaluate_path_from_target_property() function
        NXP_PARTFILES_DIR "\${QUL_PLATFORM_TARGET_DIR}/../mimxrt1050-evk-common/cmake"
        QUL_PLATFORM_EXCLUDED_DEMOS "automotive;motor_cluster"
        QUL_PLATFORM_EXCLUDED_EXAMPLES "freertos_app_switch;imagedecoder;layers;multiscreen;map"
        QUL_PLATFORM_EXCLUDED_TESTS "layers;layers_with_shapes;layer_transparency;resource_storage_section"
        QUL_PRIVATE_USE_PLATFORM_CONFIGURATION_HEADER ON
    EXPORT_PROPERTIES "NXP_CHIP_NAME;NXP_CONNECT_SCRIPT;NXP_PARTFILES_DIR;QUL_PLATFORM_EXCLUDED_DEMOS;QUL_PLATFORM_EXCLUDED_EXAMPLES;QUL_PLATFORM_EXCLUDED_TESTS"
)

利用可能なすべてのプラットフォーム・プロパティのリストは、プラットフォーム移植ガイドに記載されています。以下の表では、リネームされた変数のみを取り上げています:

Qt for MCUs 1.9 CMake 変数名Qt for MCUs 2.x プロパティ名
QUL_DEFAULT_SCREEN_WIDTHQUL_PLATFORM_DEFAULT_SCREEN_WIDTH
QUL_DEFAULT_SCREEN_HEIGHTQUL_PLATFORM_DEFAULT_SCREEN_HEIGHT
EXCLUDED_EXAMPLESQUL_PLATFORM_EXCLUDED_EXAMPLES
EXCLUDED_DEMOSQUL_PLATFORM_EXCLUDED_DEMOS

リソースプリロード

QUL_STATIC_ASSET_SEGMENT は使用されなくなりました。代わりに、Qul::Platform::PlatformContext から返されるメモリアロケータを使用して、プリロードされたアセットのメモリが割り当てられます。

プリロードの実装方法の詳細については、 Qt Quick Ultralite platform abstraction の Memory allocationを参照してください。

リソース保存場所

QUL_STATIC_ASSET_SEGMENTQUL_STATIC_NO_PRELOAD_ASSET_SEGMENT を使用する代わりに、リソースはデフォルトでQulResourceDataQulModuleResourceDataQulFontResourceData セグメントに配置されます。詳しくはプロジェクトのセットアップを参照してください。

OSコンフィギュレーションの定義

Qt for MCUs 2.3以降、QUL_OS の値は2つの方法で指定できます。CMake呼び出しにオプション(-DQUL_OS=<os_name> )として渡すか、すべてのQt Quick Ultraliteリファレンス・プラットフォームと同様に、QUL_PLATFORM nameの末尾にnameを追加します。例えば、mimxrt1050-evk-baremetal

現在サポートされている構成は2つだけです:

  • ベアメタル
  • FreeRTOS

注: Qt for MCUs 2.0 以降、OSQUL_OS に改名されています。既存のポートが v2.0 よりも古いQt for MCUs バージョンに基づいている場合は、それに応じて変数を変更することを検討してください。


詳細はこちらをご覧ください。