配置 FreeRTOS 内核移植 - FreeRTOS
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

配置 FreeRTOS 内核移植

此部分提供有关将 FreeRTOS 内核移植集成到 FreeRTOS 移植测试项目的说明。有关可用内核移植的列表,请参阅 FreeRTOS 内核移植

FreeRTOS 使用 FreeRTOS 内核支持多任务处理和任务间通信。有关更多信息,请参阅 FreeRTOS 用户指南中的 FreeRTOS 内核基础知识FreeRTOS.org

注意

将 FreeRTOS 内核移植到新架构不在本文档的讨论范围内。如果您对将 FreeRTOS 内核移植到新架构感兴趣,请联系 FreeRTOS 工程团队

对于 FreeRTOS 资格认证计划,仅支持现有端口。资格认证计划中不接受对这些端口进行修改。只接受可以从 GitHubSourceforge 下载的官方端口。

先决条件

要设置 FreeRTOS 内核以进行移植,需要具备以下条件:

  • 用于目标平台的正式 FreeRTOS 内核移植。

  • 一个 IDE 项目或 CMakeLists.txt 列表文件,其中包括用于目标平台和编译器的正确 FreeRTOS 内核移植文件。

    有关设置测试项目的信息,请参阅为移植设置 FreeRTOS 源代码

  • configPRINT_STRING() 宏针对您设备的实施。

    有关实施 configPRINT_STRING() 的信息,请参阅 实现 configPRINT_STRING() 宏

配置 FreeRTOS 内核

/vendors/vendor/boards/board/aws_tests/config_files/FreeRTOSConfig.h 标头文件为 FreeRTOS 内核指定应用程序特定的配置设置。有关每个配置选项的说明,请参阅 FreeRTOS.org 上的自定义

要将 FreeRTOS 内核配置为可使用您的设备,请打开 FreeRTOSConfig.h,并验证是否已为您的平台正确指定下表中的配置选项。

配置选项 描述

configCPU_CLOCK_HZ

指定用于生成时钟周期中断的时钟频率。

configMINIMAL_STACK_SIZE

指定最小堆栈大小。作为起点,可将其设置为在正式 FreeRTOS 演示中、为要使用的 FreeRTOS 内核移植使用的值。正式 FreeRTOS 演示是指通过 FreeRTOS.org 网站发布的演示。确保将堆栈溢出检查设置为 2,并在发生溢出时增加 configMINIMAL_STACK_SIZE。为节省 RAM,将堆栈大小设置为不会导致堆栈溢出的最小值。

configTOTAL_HEAP_SIZE

设置 FreeRTOS 堆的大小。与任务堆栈大小一样,可以调整堆大小以确保未使用的堆空间不会消耗 RAM。

注意

如果您正在移植 ARM Cortex-M3、M4 或 M7 设备,还必须正确地指定 configPRIO_BITSconfigMAX_SYSCALL_INTERRUPT_PRIORITY

测试

  1. 打开 /libraries/freertos_plus/standard/utils/src/iot_system_init.c,然后注释掉从 SYSTEM_Init() 函数中调用 SOCKETS_Init() 的行。此初始化函数属于您尚未移植的库。此库的移植部分包括用于取消注释此函数的说明。

  2. 构建测试项目,然后将其刷写到您的设备以执行该项目。

  3. 如果“.”每 5 秒钟在 UART 控制台上显示一次,则 FreeRTOS 内核已正确配置且测试已完成。

    打开 /vendors/vendor/boards/board/aws_tests/config_files/FreeRTOSConfig.h,然后将 configUSE_IDLE_HOOK 设置为 0,以停止内核执行 vApplicationIdleHook() 和输出“.”。

  4. 如果“.”以 5 秒钟以外的任何频率显示,打开 FreeRTOSConfig.h 并验证 configCPU_CLOCK_HZ 是否设置为适合您主板的正确值。

为您的设备配置 FreeRTOS 内核移植后,即可开始移植 Wi-Fi 库。有关说明,请参阅移植 Wi-Fi 库