close

一、摘要

本文主要介紹了在freeRTOS環境下,以STM32為例,如何快速獲取CPU利用率,配合CubeMonitor測試。

二、準備工作

1、IAR 8.32.1

2、STM32Cube_FW_H7_V1.6.0

三、CPU使用率

這裡的CPU使用率指的是,在一定周期內,除過空閒任務以外的所有任務棧CPU總運行時間的比值,osCPU_Usage = (100 - (osCPU_TotalIdleTime * 100) / CALCULATION_PERIOD)。

其實就是計算出空閒任務的時間,就能獲取CPU的利用率,而空閒任務運行時間的獲取,可以利用鈎子或者叫掛鈎函數,具體在freeRTOS下就是:


而我們所有的計算都是以CPU時基為基礎,在freeRTOS下以STM32H743為MCU,通常設時基為1ms,就是操作系統的TICK,而freeRTOS也提供了掛鈎函數。


所以,我們要使用這兩個掛鈎函數,必須先配置使能在freeRTOSConfig.h下:


四、獲取CPU利用率

在ST提供的SDK里,會有一個公共的文件cpu_utils.c和cpu_utils.h。這兩個文件提供了freeRTOS下獲取CPU利用率的方案和方法,可以供大家參考。我們可以將兩個文件加入工程,需要配置和修改一些東西。



在cpu_utilis.c的文件開頭注釋部分有說明如何利用這個模塊,按照模塊說明,首先必須使能IDEL和TICK的HOOK函數配置,同時還必須定義兩個宏,對freeRTOS就可以在freeRTOSConfig.h中定義如下:


在頭文件中添加函數聲明:


這種方法只能用來初略估計,如需精確估計可開啟一個比sysTick優先級高的硬件定時器來。但在一般正式的項目中不這樣做,因為這樣會影響系統的實時性。

對外的API接口:


直接調用就可以了。更多精細的測試和調試可以使用freeRTOS+Trace。


五、測試

編譯無誤後,可以下載進行調試,工程中有大概十幾個任務。



可以看到CPU的利用率,也可以利用ST推出的CubeMonitor進行測試,下次推送將給大家安排詳細的CubeMonitor使用。

六、參考文檔

序號
文獻
1
STM32H743RM
2
3, STM32Cube_FW_H7_V1.6.0

作者:武國平
來源:嵌入式程序猿

溫馨提示:

因最近微信公眾平台推送規則改變,很多讀者反饋沒有及時看到更新的文章。根據最新規則,建議多點擊「推薦閱讀、分享、收藏」等,成為常讀用戶。

推薦閱讀:

終於狠心做了一台自己的功放!

一男子偷竊8塊基帶處理模塊,致全區信號癱瘓

又一家芯片企業轟然倒下!三個月前剛獲6億融資


請點下【在看】給小編加雞腿


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()