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" uint32_t McuRTOS_RunTimeCounter; //需要一個用于測量時間的32位計數器 /* runtime counter, used for configGENERATE_RUNTIME_STATS */ 將計時器配置為0.1毫秒(RTOS滴答計時器頻率的10倍),設置為1 kHz: static void AppConfigureTimerForRuntimeStats(void) { uint32_t gptFreq; gpt_config_t gptConfig; GPT_GetDefaultConfig(&gptConfig); /* Initialize GPT module */ GPT_Init(GPT2, &gptConfig); /* Divide GPT clock source frequency by 3 inside GPT module */ GPT_SetClockDivider(GPT2, 3); /* Get GPT clock frequency */ gptFreq = CLOCK_GetFreq(kCLOCK_PerClk); /* GPT frequency is divided by 3 inside module */ gptFreq /= 3; /* Set GPT module to 10x of the FreeRTOS tick counter */ gptFreq = USEC_TO_COUNT(100, gptFreq); /* FreeRTOS tick is 1 kHz */ GPT_SetOutputCompareValue(GPT2, kGPT_OutputCompare_Channel1, gptFreq); /* Enable GPT Output Compare1 interrupt */ GPT_EnableInterrupts(GPT2, kGPT_OutputCompare1InterruptEnable); /* Enable at the Interrupt and start timer */ EnableIRQ(GPT2_IRQn); GPT_StartTimer(GPT2); } 接下來是計時器中斷服務例程的實現。 void GPT2_IRQHandler(void) { /* Clear interrupt flag.*/ GPT_ClearStatusFlags(GPT2, kGPT_OutputCompare1Flag); McuRTOS_RunTimeCounter++; /* increment runtime counter */ #if defined __CORTEX_M && (__CORTEX_M == 4U || __CORTEX_M == 7U) __DSB(); #endif } 最后,在啟動調度器之前,必須調用Timer初始化函數。 使用串行連接接口(UART、USB、SEGGER RTT),也可以使用命令行接口檢索相同的信息: |
信息顯示在Eclipse環境下的FreeRTOS任務列表的“運行時”列中(針對MCUXpresso IDE顯示):
在FreeRTOS中收集運行時信息通常需要計時器(也可以使用SysTick)。收集的信息可以很好地概括CPU時間的使用情況,從而有助檢查系統負荷。
審核編輯:湯梓紅
-
cpu
+關注
關注
68文章
10901瀏覽量
212640 -
計時器
+關注
關注
1文章
426瀏覽量
32796 -
FreeRTOS
+關注
關注
12文章
484瀏覽量
62322
原文標題:MIMXRT1064的 FreeRTOS任務運行時統計信息
文章出處:【微信號:嵌入式 MCU,微信公眾號:嵌入式 MCU】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論