教程:将运行时统计信息与 Amazon FreeRTOS V10 一起使用

主要观点:FreeRTOS 具有提供每个任务在系统中运行时间信息的功能,通过设置相关宏和配置定时器中断来实现,包括 IDLE 任务的运行时间及所占百分比等,还介绍了在不同环境(如 Eclipse 和直接从应用程序)中展示运行时信息的方法。
关键信息

  • 需设置configGENERATE_RUN_TIME_STATS为 1 以进行运行时分析,同时提供portCONFIGURE_TIMER_FOR_RUN_TIME_STATS()portGET_RUN_TIME_COUNTER_VALUE()宏。
  • 定时器应至少以 RTOS 滴答定时器 10 倍的频率运行,如滴答率为 1kHz 时,运行时定时器应为 10kHz。
  • 可通过添加任务、配置定时器、添加相关宏和回调函数等步骤启用运行时分析,如在 FreeRTOSConfig.h 中设置相关宏,在应用中添加定时器中断代码等。
  • 可在 Eclipse 的 Task List 视图或应用程序(如终端 LCD 显示)中展示运行时信息。
    重要细节
  • FreeRTOS 利用用户/应用特定定时器测量任务执行时间,每个任务描述符有累积计数器,定时器滴答计数在任务获取 CPU 时间和切换出时被记忆,差值即为任务执行时间并累加到计数器。
  • 运行时计数器存储在每个任务描述符中,为 32 位值,会增加每个任务的 RAM 需求 4 字节,假设 10kHz 计数器周期,变量约 5 天后溢出。
  • RTOS 维护两个额外全局变量ulTaskSwitchedInTimeulTotalRunTime,分别用于记录任务切换时间和系统总运行时间。
  • 示例中使用 MCUXpresso IDE 10.2.1、FRDM-K64F 板和 Amazon FreeRTOS V10.0.1,其他工具/IDE 或 FreeRTOS 版本也可使用(至少 9.0.0 版本)。
  • 提供了示例项目的 GitHub 链接及相关学习资源链接,如https://github.com/ErichStyger/mcuoneclipse/tree/master/Examples/MCUXpresso/FRDM-K64F/FRDM-K64F_SDK_FreeRTOS等。
阅读 7
0 条评论