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_CM4F
的fsl_tickless_systick.c
文件。
- 对于IAR工具链
port.c
文件位于portable/IAR/ARM_CM4F
下。portasm.s
文件位于portable/IAR/ARM_CM4F
下。- 如果使用的是来自MCUXpresso SDK 2.6或更早版本的FreeRTOS,则位于
portable/IAR/ARM_CM4F
的fsl_tickless_systick.c
文件。
- 对于Arm GCC工具链
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 许可证下可用。
了解详情。