C

在NXP IMXRT1064-EVK上使用FreeRTOS

兼容版本

Qt Quick Ultralite for FreeRTOS已与FreeRTOS v10.0.1测试过,这是为NXP IMXRT1064-EVK官方支持的版本。

注意:如果您正在使用为NXP IMXRT1064-EVK预先编译的平台库,则FreeRTOS的一部分源代码已经编译到其中。如果您想更改FreeRTOS版本,则必须重新构建平台库。

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

为Qt Quick Ultralite提供FreeRTOS符号和库

如果您在项目中使用app_common,请通过设置CMake缓存条目《code translate="no">FREERTOS_DIR,为Qt Quick Ultralite提供FreeRTOS源代码的路径。

注意:MCUXpresso SDK中FreeRTOS源代码的目录名称可能发生变化。从《code translate="no">rtos目录检查正确的路径。

目录必须至少包含以下内容

  • 包含FreeRTOS头文件的《code translate="no">include目录。如果您使用的是MCUXpresso SDK 2.6或更早版本中的FreeRTOS,则从上级目录搜索include。
  • 《code translate="no">portable目录
  • 位于《code translate="no">portable下的《code translate="no">MemMang目录。该目录应包含FreeRTOS的内存管理实现。
  • 位于《code translate="no">portable/MemMang下的《code translate="no">heap_4.c文件。这是Qt Quick Ultralite默认使用的内存分配器实现。如果您无法提供《code translate="no">heap_4.c或希望使用自己的实现,通过设置目标属性《code translate="no">QUL_FREERTOS_HEAP_POLICY修改实现。请参阅《a href="qtul-freertos-application-build-process.html#changing-heap-policies" translate="no">修改堆策略。
  • 根据您使用的工具链,需要以下文件
    • 对于Arm GCC工具链
      • 位于《code translate="no">portable/GCC/ARM_CM4F下的《code translate="no">port.c文件。
      • 如果您使用的是MCUXpresso SDK 2.6或更早版本的FreeRTOS,请位于《code translate="no">portable/GCC/ARM_CM4F下的《code translate="no">fsl_tickless_systick.c文件。
    • 对于IAR工具链
      • 位于《code translate="no">portable/IAR/ARM_CM4F下的《code translate="no">port.c文件。
      • 位于《code translate="no">portable/IAR/ARM_CM4F下的《code translate="no">portasm.s文件。
      • 如果您使用的是MCUXpresso SDK 2.6或更早版本的FreeRTOS,请位于《code translate="no">portable/IAR/ARM_CM4F下的《code translate="no">fsl_tickless_systick.c文件。
  • 《code translate="no">stream_buffer.c
  • 《code translate="no">event_groups.c
  • 《code translate="no">list.c
  • 《code translate="no">queue.c
  • 《code translate="no">tasks.c
  • 《code translate="no">timers.c

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

如果您在项目中未使用 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 的项目中的设置指南,请参阅 此处

闪存 FreeRTOS 项目

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

RLE 解压缩

出于性能考虑,带有不透明效果的 RLE 图像在将其拼接到 SDRAM 的帧缓冲区之前,会解压缩到有限大小的中间缓冲区。

可以通过在 platform_nxp.cpp 中增加 qul_scratch_buffer 的大小来在一定程度上提高性能,但这会以更多 RAM 使用为代价。

根据某些 Qt 许可证提供。
了解更多信息。