C
プラットフォーム設定ファイルの作成
platform\<BOARD_MANUFACTURER_NAME>\<YOUR_PLATFORM>\CMakeLists.txt は、プラットフォームの主要な設定ファイルです。すべてのソース、インクルード・ディレクトリ、コンパイル定義、その他プラットフォームが必要とするパラメータを指定します。CMake構文の詳細については、CMakeドキュメントを参照してください。また、platform\boards\qt\example-baremetal\CMakeLists.txt をプラットフォームのCMakeLists.txt のベースとして使用することもできます。
注: ソース、インクルード・ディレクトリ、その他の属性をプラットフォーム用に定義する場合、これらの定義のターゲットとしてPlatform を指定する必要があります。
プラットフォーム・プロパティの設定
プラットフォーム関連の構成は、Platform ターゲット・プロパティとしてターゲット・プラットフォームCMakeLists.txt ファイルに設定されます。すべてのプロパティのリストとデフォルト値および説明を次の表に示します:
共通プロパティ
| プロパティ名 | デフォルト値 | 説明 |
|---|---|---|
QUL_PLATFORM_DEFAULT_SCREEN_WIDTH | 480 | デフォルトの画面幅(ピクセル)。現在はデスクトップバックエンドでのみ使用されています。 |
QUL_PLATFORM_DEFAULT_SCREEN_HEIGHT | 272 | ピクセル単位のデフォルトの画面の高さ。現在はデスクトップバックエンドでのみ使用される。 |
QUL_PLATFORM_DEFAULT_TEXT_CACHE_ENABLED | OFF | ターゲット・プラットフォームでのテキスト・キャッシュのデフォルト値。詳細はQUL_PLATFORM_DEFAULT_TEXT_CACHE_ENABLEDを参照してください。 |
QUL_PLATFORM_DEFAULT_TEXT_CACHE_SIZE | 24*1024 | ターゲット・プラットフォームでのテキスト・キャッシュのデフォルト・サイズ。詳細はQUL_PLATFORM_DEFAULT_TEXT_CACHE_SIZEを参照してください。 |
QUL_PLATFORM_DEFAULT_NUM_FRAMES_TO_PRESERVE_ASSETS | 0 | ターゲット・プラットフォームでアセットを保持するためのデフォルトのフレーム数。詳細はQUL_PLATFORM_DEFAULT_NUM_FRAMES_TO_PRESERVE_ASSETSを参照してください。 |
QUL_PLATFORM_REQUIRED_IMAGE_ALIGNMENT | 1 | ターゲット・プラットフォーム上の画像データに必要な最小アライメント。詳細はQUL_PLATFORM_REQUIRED_IMAGE_ALIGNMENTを参照してください。 |
QUL_PLATFORM_REQUIRED_PIXEL_WIDTH_ALIGNMENT | 1 | ターゲット・プラットフォームでは、画像幅はこの値の倍数になります。詳細はQUL_PLATFORM_REQUIRED_PIXEL_WIDTH_ALIGNMENTを参照してください。 |
QUL_PLATFORM_EXCLUDED_EXAMPLES | ビルドから除外すべき例のリスト。CMakeのリスト形式で定義され、各値はセミコロンで区切られます。 以下の例では、 set_target_properties(Platform
PROPERTIES
QUL_PLATFORM_EXCLUDED_EXAMPLES "multitask;image_cache"
) | |
QUL_PLATFORM_EXCLUDED_DEMOS | ビルドから除外するデモのリスト。CMakeのリスト形式で定義され、各値はセミコロンで区切られます。 次の例は、 set_target_properties(Platform
PROPERTIES
QUL_PLATFORM_EXCLUDED_DEMOS "automotive;motor_cluster"
) | |
QUL_PLATFORM_EXCLUDED_TESTS | ビルドから除外するテストのリスト。これは CMake のリスト形式で定義され、それぞれの値はセミコロンで区切られます。 次の例は、 set_target_properties(Platform
PROPERTIES
QUL_PLATFORM_EXCLUDED_TESTS "controls;flickable"
) |
Infineon プラットフォーム固有のプロパティ
| プロパティ名 | 説明 | |
|---|---|---|
| qul_private_infineon_resource_generator | Infineon SDK ディレクトリにあるResourceGenerator.exe バイナリファイルへのパス。リソースをコンパイルするには、このプロパティを設定します。 |
NXP プラットフォーム固有のプロパティ
| プロパティ名 | 説明 |
|---|---|
| NXP_CHIP_NAME | MIMXRT1052xxxxB のようなNXP チップ ファミリ名。ターゲットをフラッシュできるようにするには、この変数を設定します。 |
| nxp_connect_script | RT1050_connect.scp のようなMCUXpressoIDE からの接続スクリプトの名前。フラッシュ・ターゲットに接続できるようにするには、この変数を設定します。 |
| nxp_reset_script | RT1170_reset.scp など、MCUXpressoIDE からのリセット・スクリプトの名前。現在この変数は、NXP RT1170、フラッシュ後にボードを正しく再起動できるようにするためにのみ必要です。 |
| nxp_partfiles_dir | XML 形式のNXP パートファイルを含むディレクトリへのパス。ターゲットのフラッシュ中に使用できるようにするには、この変数を設定します。 |
STM プラットフォーム固有のプロパティ
| プロパティ名 | 説明 |
|---|---|
| stm32_external_loader | 外部メモリをフラッシュできるようにするための、STM32 外部ローダ・ファイルへのパス。 |
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"
)ソース・ファイル
プラットフォーム・ポートを実装するには、いくつかのソース・コードを書き、プラットフォーム・ライブラリでビルドする必要があります。Platform ターゲットにソース・ファイル、インクルード・ ディレクトリ、コンパイラ定義ファイルを追加して、移植用のコードを書き進 めることができます。
以下は、example-baremetal プラットフォーム用のCMakeLists.txt ファイルです:
target_sources(Platform PRIVATE
examplelayerengine.cpp
examplepath.cpp
examplestroker.cpp
examplequeue.cpp
example_custom_input.cpp
platform_context.cpp
devicelink.cpp
mem.cpp
${PLATFORM_COMMON_SRC_DIR}/singlepointtoucheventdispatcher.cpp
${PLATFORM_COMMON_SRC_DIR}/platform.cpp
# Add platform source files here
)
target_include_directories(Platform PRIVATE
# Add platform specific include directories here
)
target_compile_definitions(Platform PRIVATE
# Insert platform specific compile flags here
# e.g. APPLICATION_ADDRESS=0x90000000
)ベンダー SDK 固有の設定の指定
BSPConfig.cmake には、GPIO や割り込みハンドラなど、ベンダー SDK の関数を使用するために必要なすべての設定が含まれています。これらは通常、特定のボードとインクルード・パスに対するコンパイラ定義です。
これらの設定は、プラットフォーム・ライブラリの外でボードSDKの関数を使用する必要があるアプリケーションにもこれらのオプションを継承させるために、CMakeのインターフェース・ライブラリ・ターゲットとして利用できるようになります。
Platform SDK configを参照してください。
target_compile_definitions(PlatformBSPConfig INTERFACE
# Platform SDK specific compile definitions
USE_HAL_DRIVER
)
target_include_directories(PlatformBSPConfig INTERFACE
# Platform SDK specific include directories
# eg. ${QUL_BOARD_SDK_DIR}/Drivers/BSP/STM32F769I-Discovery/
)