FreeRTOS有很多很酷的功能,其中一个是它可以报告每个任务中花费的CPU百分比。
需要在FreeRTOSConfig.h中配置一些#定义:
#define configGENERATE_RUN_TIME_STATS 1
/* 1: generate runtime statistics; 0: no runtime statistics */
可以使用Systick计时器,但这不会给精确的结果,因此我们该计时器。
#define configGENERATE_RUN_TIME_STATS_USE_TICKS 0
/* 1: Use the RTOS tick counter as runtime counter. 0: use extra timer */
接下来,需要配置如何使用计时器:为此,指定计时器配置函数的名称和获取计时器值的函数:
#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() McuRTOS_AppConfigureTimerForRuntimeStats()
#define portGET_RUN_TIME_COUNTER_VALUE() McuRTOS_AppGetRuntimeCounterValueFromISR()
使用I.MX RT的GPT(通用计时器):
#include "fsl_gpt.h"
使用串行连接接口(UART、USB、SEGGER RTT),也可以使用命令行接口检索相同的信息: |
信息显示在Eclipse环境下的FreeRTOS任务列表的“运行时”列中(针对MCUXpresso IDE显示):
在FreeRTOS中收集运行时信息通常需要计时器(也可以使用SysTick)。收集的信息可以很好地概括CPU时间的使用情况,从而有助检查系统负荷。
参考文档:
mcuoneclipse/Examples/MCUXpresso/i.MX RT1064_EVK/MIMXRT1064_FreeRTOS at master · ErichStyger/mcuoneclipse · GitHub
FreeRTOS Task Runtime Statistics for NXP i.MX RT1064 | MCU on Eclipse