C

FreeRTOS应用程序构建过程

Qt Quick Ultralite的FreeRTOS应用程序构建过程与在裸金属上构建类似,但增加了某些功能。FreeRTOS作为一个单独的库,您可以自己编译和链接,或者使用app_common辅助工具。

使用或不用app_common构建FreeRTOS应用程序

app_common是一个辅助工具,用于统一示例和演示对操作系统的需求。它配置Qt Quick Ultralite以正确使用操作系统,编译特定于操作系统的文件,例如FreeRTOS源文件,并将它们链接到项目中。

使用app_common

尽管app_common主要用于Qt Quick Ultralite的示例和演示,但它也可以用于其他项目。要使用app_common,设置FREERTOS_DIR CMake变量为包含include目录、portable目录和FreeRTOS源文件的目录。

设置FreeRTOS目录后,将以下行添加到项目的CMakeLists.txt

app_target_setup_os(<app_name>)

其中,<app_name>是项目可执行文件的名字。此函数为项目设置FreeRTOS。

现在,您的项目应该可以构建且链接到FreeRTOS和Qt Quick Ultralite库。如果您想要更改堆内存分配器或Qt Quick Ultralite提供的FreeRTOSConfig.h,请参阅更改堆策略使用自定义FreeRTOSConfig.h

不使用app_common构建应用程序

当构建使用FreeRTOS但不使用app_common的项目时,您必须手动配置、编译和将FreeRTOS链接到项目中。有关FreeRTOS构建说明,请参阅创建新的FreeRTOS项目

Qt Quick Ultralite本身需要以下FreeRTOS头文件和函数

  • FreeRTOS.h
  • task.h
  • portable.h
  • memory.h
  • void xPortSysTickHandler(void)
  • void *pvPortMalloc(size_t xSize)
  • void vPortFree(void *pv)

更改堆策略

FreeRTOS 包含不同的内存分配实现(有关更多信息,请参阅FreeRTOS 开发者文档,内存管理)。默认情况下,Qt Quick Ultralite 示例应用程序使用 heap_4,该实现“合并相邻的空闲块以避免碎片化。包括绝对地址放置选项。”然而,在某些情况下,可能更喜欢其他自定义实现而不是 FreeRTOS 提供的实现。您可以通过将以下调用添加到项目的 CmakeLists.txt 文件中来更改实现

set_property(TARGET <app_name> PROPERTY QUL_FREERTOS_HEAP_POLICY "<heap_implementation>")

其中 <app_name> 是您项目可执行文件的名字,而 <heap_implementation> 是不带文件扩展名的实现名。例如,如果您想使用 heap_1.c,您必须放置 heap_1

注意:脚本能从 FreeRTOS MemMang 目录中找到堆策略,其中包含 FreeRTOS 的内存管理器实现。

使用自定义 FreeRTOSConfig.h

FreeRTOSConfig.h 是一个头文件,用于在构建项目时配置 FreeRTOS。《FreeRTOSConfig.h》由平台包提供。《QUL_PLATFORM_TARGET_DIR》CMake 变量用于确定 FreeRTOSConfig.h 的位置。

符合条件的 Qt 许可证下可用。
了解更多信息。