C

从Qt for MCUs 2.3迁移到平台指南

以下是当从Qt for MCUs 1.x或2.x移植平台到Qt for MCUs 2.3或更高版本时应注意的变化。

最重要的变化是,从Qt Quick Ultralite 2.3开始,BoardDefaults.cmake被替换为BoardDefaults.qmlprojectconfig。但是,所有基于较旧版本的Qt Quick Ultralite(v2.0 - 2.2)的平台配置仍可继续使用CMake API。

迁移到BoardDefaults.qmlprojectconfig

BoardDefaults.qmlprojectconfig引入作为平台配置的默认来源,导致平台文件结构中发生了一些变化。有关此新方法的更多信息,请参阅平台移植指南

架构构建

Qt for MCUs现在使用基于架构的构建,因此指定目标平台的架构非常重要。这可以通过在BoardArchitectureConfig.cmake中使用QUL_PLATFORM_ARCHITECTURE变量来实现。有关更多信息,请参阅架构和平台特定构建设置

注意:从Qt for MCUs 2.3开始,QUL_PLATFORM_ARCHITECTURE变量从BoardDefaults.cmake移动到BoardArchitectureConfig.cmake

将包含特定于您的平台的编译器和链接器标志的CompilationOptions.cmake文件重命名为platform.cmake

链接器脚本

使用平台LinkerScriptConfig.cmake文件中的CMake函数qul_platform_add_default_linker_script()设置默认链接器脚本

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

在之前的Qt for MCUs版本中,这是通过在LinkerScriptLoader.cmake中使用LINKER_SCRIPT变量来完成的

平台工具包配置文件

boardSdk属性的envVar属性被替换为cmakeCacheEntries属性。有关更多信息,请参阅创建平台工具包配置文件部分。

平台目标名称

平台目标已被重命名为 QuickUltralitePlatformPlatform。更新 target_sourcestarget_include_directoriestarget_compile_definitions 以及其他相关 CMake 命令,以使用新的目标名称。

平台 API

将以下功能的实现移动到 Qul::Platform::PlatformContext 类的子类中

注意: availableScreensframeBufferingType 应该是 const 成员函数。

此外,添加 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"
        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 平台抽象中的内存分配

资源存储位置

现在不再使用 QUL_STATIC_ASSET_SEGMENTQUL_STATIC_NO_PRELOAD_ASSET_SEGMENT。现在资源默认放置在 QulResourceDataQulModuleResourceDataQulFontResourceData 段中。更多信息请参阅 入门

定义 OS 配置

自 Qt for MCUs 2.3 以来,QUL_OS 的值可以通过两种方式指定。它可以作为选项(-DQUL_OS=<os_name>)传递给 CMake 调用,或者将名称添加到 QUL_PLATFORM 名称的末尾,类似于所有 Qt Quick Ultralite 参考平台。例如,mimxrt1050-evk-baremetal

目前支持两种配置

  • baremetal
  • FreeRTOS

注意:自 Qt for MCUs 2.0 以来,OS 已更名为 QUL_OS。如果您现有的端口基于低于 v2.0 的 Qt for MCUs 版本,请考虑相应地更改变量。

在某些 Qt 许可证下可用。
了解更多。