1. 程式人生 > 實用技巧 >基於rt-thread功耗調優與PM管理實戰經驗分享-日誌篇

基於rt-thread功耗調優與PM管理實戰經驗分享-日誌篇

基礎篇 概念,基礎,理解什麼是功耗

除錯篇 開始搭環境,動手調起來

驅動篇 想要調功耗,程式碼也要有

系統篇 如何利用rtos或PM框架,配合PMS執行緒,管理功耗

實戰篇 具體問題的實戰思考與解決思路

日誌篇 通過console log_file parse_log,搭建功耗日誌輸出與解析

收尾篇 高調做好功耗,低調掌握知識的回顧。

本篇為日誌篇,也可以叫做功耗LOG日誌篇。

問:為何需要功耗的日誌呢?

答:其實,你可以通過高精的電源,把板子接入,然後,把vbat引出來,接到高精度電源上,然後,高精度電源,連線到電腦上,然後,開啟excel,記功耗資料,直接用excel儲存,後期,可以生成各種統計功耗的曲線等。

我之前除錯的一些低功耗的產品,其實就是這樣做的,測試環境比較難,測試的裝置過於龐大。並且,不是所以的公司,都具備這麼高階全套的裝置讓你用。

如果有條件,如產品有較大flash,有檔案系統,有emmc 或 sd卡裝置等,可以把功耗的資料,寫到檔案裡,這樣讓板子跑上一晚上,第二天,過來匯出功耗日誌檔案,放在電腦上,然後用python寫個處理指令碼,基本上,也能明白功耗的情況,並且,日誌可以搞的更豐富,明白更多的事件,遠比給你一張電流圖看的直爽。

功耗除錯的中後期,老闆想看功耗成果時,你可以生成一個比較不錯的表格或是曲線出來,這樣,更具有說服力,關鍵是,功耗LOG裡的資料,很有利於你分析整個系統的執行情況,何時電量消耗快,何時進入或是退出睡眠,都非常的利於功耗的調優。

開始搭建你的功耗日誌的環境吧!!

一、功耗日誌環境的搭建

如果你的產品,已經有日誌(如ulog),並且已經可以寫檔案了,那麼,你只要定義你的功耗的資料結構,獲取電池電壓、電量、一些事件、執行的時間、睡眠時間等,就可以完成功耗日誌的記錄了,當然,你要開一個定時器,週期性的列印,或是開一個執行緒,用來做更多的處理。

如果你還沒有日誌的環境,可以參考我的功耗日誌的demo。

git clonehttps://gitee.com/zhangsz0516/rtt_pm_log.git

環境為pandora stm32l475,檔案系統,spi flash,目前可以寫LOG到檔案了。

(1)工程clone下來,進入:

rtt_pm_log\examples\15_component_fs_flash

然後:

開啟env工具,menuconfig看一下。

接下來,scons --target=mdk5,就可以構建好工程了。

開啟:project.uvprojx 工程檔案,第一次開啟,全編譯一下。

(2)這裡基於spi flash 檔案系統,使用現有的例程,接下來,就是開啟ulog元件、PM元件,預設沒有log到檔案的功能,只有串列埠輸出的。

(3)適配一個file_be.c檔案,註冊到ulog,這樣,通過LOG_D,就可以把日誌資料,按指定的格式,寫到檔案裡儲存。

file_be.c暫時放在了 ulog相關的目錄下,定義了一個巨集:ULOG_BACKEND_USING_FILE

(4)spi flash,感覺上不是特別的好用,初始化,還不能太早,否則,檔案系統沒有正常跑起來,一寫LOG會卡住。

(5)目前加入了一個測試的程式,開啟定時器,列印LOG到檔案,還有點小問題,不過資料可以儲存了,這是關鍵。

二、功耗日誌的匯出方式:

(1)如果有USB,可以開啟,使用U盤的方式匯出,

(2)如果有BLE BT,可以通過手機匯出。

(3)串列埠,理論上,也可以匯出檔案,採用ymodem協議等,配合xshell。

(4)如果其他方式都不行,但有串列埠,可以用xshell, cat pm.log的方式,列印到xshell終端,然後複製出來。

總之,有了功耗資料,就可以分析了。這是解決功耗問題(時間段功耗、估算續航時長)的利器!!

三、功耗日誌程式的分析:

(1)如果給你一行功耗資料,

如:時間, 電量, 電壓, 睡眠時間,我估計,你很難發現有什麼作用。

如果給你一個檔案,裡面1分鐘一條這樣的資料,你會分析嗎?

有了時間,有了電量,就可以明白,一小時耗了多少電,估算一天耗了多少電。如果還有其他的事件的LOG,(最好寫在不同的log檔案裡),就可以分析每段時間裡,系統的工作情況,耗電情況,如開了GPS、或是BT等,或是開了LCD等,就可以簡單的計算出,一個小時幾個mAh,從而估算出整個系統的續航資料來!!

(2)如果分析LOG資料,直接匯入excel檢視?生成表格?

可以的,當然,你也可以用python工具,寫個簡單的處理指令碼,一行行的讀入,一條條的處理,最終,獲取到各個統計的資料。功耗的資料格式,前期調功耗,最好統一,資料可以多一些,如一些喚醒的事件標誌、喚醒次數,進入深睡眠的時間等,都可以加入。這些日誌,多了,就可以很快的定位到功耗問題的所在,或是可以很快的估算出續航情況。

(3)使用python指令碼,可以生成一些excel圖表,看起來更直觀,如可以看到電量消耗情況,看到哪個時間段,功耗資料最好或是最差等,接下來,就要與業務一起分析,如果去降功耗了。

(4)當然,也可以上一些高精的裝置,配合日誌,配合測試程式,把高功耗點找出來,優化。功耗除錯後期,基本上是靠功耗日誌來確認功耗是否有異常的。

(5)如果允許,可以把功耗的日誌,發到雲端處理,那樣會更省心。

(6)功耗日誌的擴充套件:別人家的功耗日誌!!

https://github.com/google/battery-historian

希望我們自己也能搞個出來!!

好吧,希望大家動手,認真搞一下吧,功耗是一個持久戰,當然,如果做的好,同時也可以給硬體、驅動把把技術關,如硬體改進、驅動加固等。

我想,功耗之路,沒有盡頭,但專案有盡頭,儘可能多想出一些行之有效的方法。磨好刀,用於實戰!