C

在NXP IMXRT1170-EVKB上使用FreeRTOS

兼容版本

Qt Quick Ultralite对于FreeRTOS已在FreeRTOS v10.4.3上进行了测试,这是NXP IMXRT1170-EVKB官方支持的版本。

注意:如果您正在使用NXP IMXRT1170-EVKB的预编译平台库,其中已预先编译了FreeRTOS的部分源代码。如果要更改FreeRTOS版本,则必须重新构建平台库。

有关支持的平台和FreeRTOS版本的列表,请参阅支持的架构、平台和FreeRTOS版本

为Qt Quick Ultralite提供FreeRTOS符号和库

如果您在项目中使用app_common,请通过设置CMake缓存条目FREERTOS_DIR为FreeRTOS源路径提供Qt Quick Ultralite。

注意:FreeRTOS源代码在MCUXpresso SDK中的目录名可能会更改。请从rtos目录中检查正确的路径。

该目录必须包含以下内容

  • include 目录,包含FreeRTOS头文件。如果您使用的是MCUXpresso SDK 2.6或更早版本中的FreeRTOS,则从父目录中搜索包含。
  • portable 目录
  • portable 下的 MemMang 目录。该目录应包含FreeRTOS的内存管理器实现。
  • portable/MemMang 下的 heap_4.c 文件。这是Qt Quick Ultralite默认使用的内存分配器实现。如果您无法提供heap_4.c或希望使用自己的实现,请通过设置目标属性QUL_FREERTOS_HEAP_POLICY来更改实现。请参阅更改堆策略
  • 根据您使用的工具链,需要以下文件
    • 对于Arm GCC工具链
      • port.c 文件位于 portable/GCC/ARM_CM4F 下。
      • 如果使用的是来自MCUXpresso SDK 2.6或更早版本的FreeRTOS,则位于 portable/GCC/ARM_CM4Ffsl_tickless_systick.c 文件。
    • 对于IAR工具链
      • port.c 文件位于 portable/IAR/ARM_CM4F 下。
      • portasm.s 文件位于 portable/IAR/ARM_CM4F 下。
      • 如果使用的是来自MCUXpresso SDK 2.6或更早版本的FreeRTOS,则位于 portable/IAR/ARM_CM4Ffsl_tickless_systick.c 文件。
  • event_groups.c
  • list.c
  • queue.c
  • tasks.c
  • timers.c

FreeRTOSConfig.h 由平台库提供。应用程序必须使用与编译平台库相同的 FreeRTOSConfig.h。为了使用您自己的 FreeRTOS 配置,必须重新编译平台包。

注意:如果使用自定义的 FreeRTOSConfig.h 或者需要更改 configTOTAL_HEAP_SIZE 的默认值,重要的是不要将 configTOTAL_HEAP_SIZE 设置得过低。应考虑文本缓存、纹理缓存、笔划路径的中间结构或用户应用中的动态分配,以分配足够的空间。过低的 configTOTAL_HEAP_SIZE 值可能导致堆溢出和意外的应用程序崩溃。

如果您在项目中不使用 app_common,则不需要设置 FREERTOS_DIR CMake 缓存条目。但是,您必须提供以下头文件和函数,用于 Qt Quick Ultralite(即,这些头文件必须位于您的项目中)

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

有关如何在不使用 app_common 的情况下设置项目的说明,请参阅 构建不带 app_common 的应用程序

FreeRTOS 项目烧录

使用 FreeRTOS 的项目的烧录过程相同。有关详细的烧录说明,请参阅 此页面

在特定 Qt 许可证下可用。
了解详情。