在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

MIMXRT1064的FreeRTOS任務運行時統計信息

li1756686189 ? 來源:嵌入式 MCU ? 作者:嵌入式 MCU ? 2022-12-05 09:17 ? 次閱讀

FreeRTOS有很多很酷的功能,其中一個是它可以報告每個任務中花費的CPU百分比。

3b1863b0-73e0-11ed-8abf-dac502259ad0.png

需要在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初始化函數。
3b31c670-73e0-11ed-8abf-dac502259ad0.png
使用串行連接接口UARTUSB、SEGGER RTT),也可以使用命令行接口檢索相同的信息:
3b4c0418-73e0-11ed-8abf-dac502259ad0.png

信息顯示在Eclipse環境下的FreeRTOS任務列表的“運行時”列中(針對MCUXpresso IDE顯示):3b63a3ca-73e0-11ed-8abf-dac502259ad0.png

在FreeRTOS中收集運行時信息通常需要計時器(也可以使用SysTick)。收集的信息可以很好地概括CPU時間的使用情況,從而有助檢查系統負荷。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11055

    瀏覽量

    216302
  • 計時器
    +關注

    關注

    1

    文章

    430

    瀏覽量

    33571
  • FreeRTOS
    +關注

    關注

    12

    文章

    492

    瀏覽量

    63929

原文標題:MIMXRT1064的 FreeRTOS任務運行時統計信息

文章出處:【微信號:嵌入式 MCU,微信公眾號:嵌入式 MCU】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    如何縮短Vivado的運行時

    在Vivado Implementation階段,有時是有必要分析一下什么原因導致運行時間(runtime)過長,從而找到一些方法來縮短運行時間。
    的頭像 發表于 05-29 14:37 ?1.5w次閱讀
    如何縮短Vivado的<b class='flag-5'>運行時</b>間

    STM32L476+ST253993增加freertos,但是代碼下進去系統運行時就卡住,為什么?

    我準備在官方的STM32L476+ST253993增加freertos,但是代碼下進去系統運行時就卡住,單步調試,系統一直卡在prvCheckTasksWaitingTermination中
    發表于 04-15 07:27

    FreeRTOS創建任務操作Flash運行時系統調度出現錯誤

    FreeRTOS:最近在學習freeRTOS,項目描述:用的是freeRTOS V6.0.5版操作系統,cotex-M0內核。創建了4個任務,在其中的一個
    發表于 03-06 01:34

    freertos任務運行時間怎么設置

    對于相同優先級的任務采用時間片輪詢的方式運行,那比如說有兩個優先級都為5的任務,那這兩個任務運行時間如何設置呢?在rt-thread中創建
    發表于 07-19 08:03

    如何在MIMXRT1064評估套件上部署tflite模型?

    我有一個嬰兒哭聲檢測 tflite (tensorflow lite) 文件,其中包含模型本身。我如何將此模型部署到 MIMXRT1064-evk 以通過 MCUXpresso IDE 運行推理。你能推薦一些用于嬰兒哭聲檢測的教程和輸入數據集嗎?
    發表于 04-06 06:24

    如何使用MCUXpresso安全配置工具通過UART閃存MIMXRT1064

    我正在嘗試使用 MCUXpresso 安全配置工具通過 UART 閃存 MIMXRT1064。所有必要的配置都已完成。引導模式設置為串行下載器 (01)。處理器連接正確。我們反復遇到同樣的錯誤。是否有任何其他配置或設置需要完成?請幫助
    發表于 04-14 06:39

    MiMXRt1064 -EVK停止調試并報錯的原因?

    嗨,剛開始使用 MiMXRt1064 -EVK,今天它突然停止調試并出現此錯誤消息,我正在使用板載鏈接服務器漏洞和 MCUXpresso,版本如下MCUXpresso IDE v11.1.1
    發表于 04-17 06:07

    如何在MIMXRT1064 EVK中通過USB OTG寫入圖像?

    MIMXRT1064 EVK 中通過 USB OTG 寫入圖像
    發表于 04-21 06:15

    運行時軟件故障注入器的設計與實現

    針對實際故障診斷中難以有效獲得故障現場信息的問題,提出通過在軟件運行時注入故障的方式獲取故障現場信息,設計并實現一種運行時軟件故障注入器,給出其中的故障腳本描
    發表于 04-06 08:40 ?19次下載

    基于本地任務與遠程任務運行時間的CPS和PAA的概念

    針對現有單一預測策略不適用于所有異構任務的問題,提出一種基于本地任務與遠程任務運行時間的組合預測方案(CPS)和預測精度保證(PAA)的概念。使用GridSim工具集來實現CPS,將P
    發表于 01-04 14:13 ?0次下載
    基于本地<b class='flag-5'>任務</b>與遠程<b class='flag-5'>任務</b><b class='flag-5'>運行時</b>間的CPS和PAA的概念

    MIMXRT1064CVL5B連接HyperRAM

    NXP MIMXRT1064CVL5B 能否支持使用SPI接口的HyperRAM?使用HyperRam的原因是為LCD存儲幀或者USB記錄數據或者以太網采集通信數據都需要緩沖區。使用NXP
    的頭像 發表于 11-08 09:39 ?2437次閱讀

    Go運行時:4年之后

    自 2018 年以來,Go GC,以及更廣泛的 Go 運行時,一直在穩步改進。近日,Go 社區總結了 4 年來 Go 運行時的一些重要變化。
    的頭像 發表于 11-30 16:21 ?1024次閱讀

    如何在AUTOSAR OS系統運行時使用事件Event呢?

    在AUTOSAR OS系統中,事件用于向任務發送信號信息。本節解釋事件是什么,如何配置它們以及如何在運行時使用它們。
    發表于 05-22 10:04 ?3197次閱讀
    如何在AUTOSAR OS系統<b class='flag-5'>運行時</b>使用事件Event呢?

    ch32v307記錄程序運行時

    ch32v307記錄程序運行時間 在程序開發中,很重要的一項任務就是對程序的運行時間進行評估。對于大型的程序系統來說,它們通常需要處理大量的數據或進行復雜的計算操作。因此,如果程序的運行時
    的頭像 發表于 08-22 15:53 ?1229次閱讀

    如何保證它們容器運行時的安全?

    緊密耦合的容器運行時繼承了主機操作系統的安全態勢和攻擊面。運行時或主機內核中的任何漏洞及其利用都會成為攻擊者的潛在切入點。
    的頭像 發表于 11-03 15:24 ?947次閱讀
    主站蜘蛛池模板: 日韩性xxx| 欧美一级淫片免费播放口 | 国产免费糟蹋美女视频 | 日韩亚洲人成在线综合 | 看黄视频网站 | 欧美国产一区二区二区 | 国产成人午夜片在线观看 | 五月激激 | 四虎影院在线观看免费 | 亚洲成在人线久久综合 | 国产美女久久久久 | 国产一级特黄的片子 | 四虎最新网 | 伊人久久成人爱综合网 | 人人澡人人澡碰人人看软件 | 天天做人人爱夜夜爽2020 | 黑人干亚洲| 欧美潘金莲一级风流片a级 欧美片欧美日韩国产综合片 | 欧美一区二区视频三区 | 亚洲成a人片77777潘金莲 | 久久国产精品夜色 | 三级视频网 | 91md天美精东蜜桃传媒在线 | 奇米影视777欧美在线观看 | 成人欧美另类人妖 | jizz 大全欧美| 免费能看的黄色网址 | 97人人揉人人捏人人添 | 国产特黄一级片 | 一区二区三区四区电影 | 久久国产视频网站 | 夜夜春宵翁熄性放纵30 | 国产农村妇女毛片精品久久 | 中文字幕一区二区三区不卡 | 免费伦费一区二区三区四区 | 男人和女人做免费做爽爽视频 | 99视频精品全国免费 | 奇米影视777狠狠狠888不卡 | 黄色大片视频 | 天天干夜夜爽 | 欧美天堂色|