PM 組件背景
隨著物聯(lián)網(wǎng)(IoT)的興起,產(chǎn)品對(duì)低功耗的需求越來越強(qiáng)烈。例如作為數(shù)據(jù)采集的傳感器節(jié)點(diǎn),通常需要在電池供電時(shí)長期工作,還有一些產(chǎn)品需要在快速的響應(yīng)網(wǎng)絡(luò)功能的同時(shí)也能擁有較低的功耗。(文末有彩蛋)
與此同時(shí),越來越多的 IoT 產(chǎn)品使用到了 RTOS,可是與傳統(tǒng)裸機(jī)產(chǎn)品的低功耗處理相比,在 RTOS 平臺(tái)上需要增加針對(duì)調(diào)度器內(nèi)核做特殊處理,這就需要 RTOS 廠家提供低功耗相關(guān)的支持。
為了適應(yīng) IoT 的這種需求,RT-Thread 今天正式開源了電源管理(PM)框架。電源管理框架的理念是應(yīng)用盡量透明,使得低功耗功能的使用更加簡(jiǎn)單。
RTOS 中的功耗
IoT 產(chǎn)品的功耗來源可以分成2部分,一部分是 MCU 內(nèi)部的功耗,一部分是板載其他外設(shè)的功耗。而在 MCU 內(nèi)的功耗又可以分成CPU 的功耗和片內(nèi)外設(shè)的功耗。為了實(shí)現(xiàn)低功耗的功能,我們需要對(duì)它們進(jìn)行合適的管理。
與傳統(tǒng)的裸機(jī)不一樣,在 RTOS 上對(duì)于功耗的處理主要是在系統(tǒng)進(jìn)入空閑(idle)任務(wù)之后。此時(shí) RTOS 處于空閑狀態(tài),可以進(jìn)入不同的低功耗模式(這時(shí) CPU 已經(jīng)停止運(yùn)行了)。與此同時(shí),也可以根據(jù)實(shí)際產(chǎn)品的需求,選擇性關(guān)閉不同的片內(nèi)外設(shè)和板載外設(shè)。
在進(jìn)入低功耗模式之后,MCU 可以被部分中斷喚醒,例如它可以被低功耗定時(shí)器中斷、喚醒按鍵中斷等等。MCU 在被喚醒之后,系統(tǒng)需要保證依舊可以繼續(xù)執(zhí)行任務(wù)直到下一次空閑。
RT-Thread PM 組件介紹
為了在 RT-Thread 更好的實(shí)現(xiàn)低功耗功能,RT-Thread 開發(fā)了一套通用的電源管理(PM)組件,也就是大家常說到低功耗組件。該組件配合 RT-Thread 的設(shè)備管理框架,不僅對(duì)上層提供了豐富的接口,也使得底層驅(qū)動(dòng)對(duì)于該組件的適配變得更加簡(jiǎn)單。
PM 組件的主要特點(diǎn)如下:
低資源占用
RT-Thread PM 組件資源占用極低,最少使用情況:ROM 占用 0.8K,RAM 占用 0.1K,非常適合對(duì)資源受限的嵌入式平臺(tái)。
應(yīng)用透明性
用戶開啟了低功耗組件后,應(yīng)用代碼基本不需要調(diào)整,PM 組件將在底層自動(dòng)完成電源管理。這個(gè)特色功能主要用了下面兩個(gè)技術(shù):
tickless:當(dāng)系統(tǒng)空閑時(shí),系統(tǒng)會(huì)盡可能的延長下次 tick 的觸發(fā)時(shí)間,保證 MCU 盡可能長的時(shí)間處于最低功耗模式;
時(shí)間補(bǔ)償:當(dāng) MCU 喚醒時(shí),系統(tǒng)的 tick 也會(huì)自動(dòng)進(jìn)行補(bǔ)償處理,保證應(yīng)用層獲取到的 tick 依舊正常。
智能省電模式
MCU 通??梢赃\(yùn)行在不同的頻率,也可以進(jìn)入不同的休眠模式。在 PM 組件的底層實(shí)現(xiàn)里,是將這些模式做了抽象處理,形成統(tǒng)一的模式命名。例如:高性能運(yùn)行模式、低功耗運(yùn)行模式、停止模式(僅僅 CPU 停止)、定時(shí)器模式(CPU 停止,進(jìn)入深度休眠)等等。
問題:面對(duì)這么多模式,如果恰巧在產(chǎn)品上低功耗相關(guān)的外設(shè)也很多,怎么辦?
傳統(tǒng)方式:就需要用戶來處理好各個(gè)外設(shè)與電源模式切換的代碼。因?yàn)榭赡苡行┩庠O(shè)不支持低功耗模式下運(yùn)行,所以不能讓系統(tǒng)空閑時(shí)就強(qiáng)制進(jìn)入最低功耗模式,否則會(huì)導(dǎo)致一系列問題;
當(dāng)前方式:當(dāng)系統(tǒng)空閑時(shí),PM 組件會(huì)結(jié)合當(dāng)前用戶配置的電源模式以及 MCU 工作情況,選擇最適合的模式進(jìn)行切換,并且會(huì)在切換前通知相關(guān)外設(shè),做好模式切換的準(zhǔn)備工作。
通用性強(qiáng)
可支持所有通用的 MCU ,該組件也已經(jīng)在 RT-Thread 內(nèi)部經(jīng)過長期測(cè)試,并在多個(gè)平臺(tái)上做過驗(yàn)證,例如:STM32系列、EFM32系列 等等。
豐富的上層接口
PM 組件除了本身提供的功耗接口,還實(shí)現(xiàn)了一個(gè) PM 設(shè)備,上層用戶可以使用 RT-Thread 的設(shè)備接口進(jìn)行訪問。由于設(shè)備接口可以通過設(shè)備文件系統(tǒng)方式對(duì)接到文件系統(tǒng),所以 PM 組件就可以使用通用的文件接口來訪問。
同時(shí) PM 組件還提供了 Finsh/MSH 調(diào)試命令,方便用戶也可以通過輸入命令方式,調(diào)試低功耗功能。
使用簡(jiǎn)介
PM 組件目前開源在 RT-Thread 的 GitHub 倉庫中,代碼位于 rt-thread/components/drivers/pm 下,大致使用流程如下:
開啟:通過 ENV 工具,在 menuconfig 中的設(shè)備驅(qū)動(dòng)菜單下選中 PM 組件;
移植:請(qǐng)先參考《電源管理用戶手冊(cè)》完成必要的移植過程;
應(yīng)用:如果沒有對(duì)接功耗敏感的外設(shè),此時(shí)應(yīng)用代碼無需做任何更改,PM 組件會(huì)自動(dòng)在后臺(tái)工作;否則需要對(duì)這些功耗敏感外設(shè)做特殊處理。
-
電源管理
+關(guān)注
關(guān)注
117文章
6429瀏覽量
146046 -
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2930文章
46181瀏覽量
391501 -
低功耗
+關(guān)注
關(guān)注
11文章
2794瀏覽量
104855
原文標(biāo)題:RT-Thread 低功耗組件開源,開啟IoT 產(chǎn)品智能省電模式
文章出處:【微信號(hào):RTThread,微信公眾號(hào):RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
基于RT-Thread的RoboMaster電控框架設(shè)計(jì)
RT-Thread 架構(gòu)圖
RT-Thread編程指南
RT-Thread全球技術(shù)大會(huì):RT-Thread開源重塑軟件發(fā)展新生態(tài)

RT-Thread全球技術(shù)大會(huì):RT-Thread電源管理的意義

RT-Thread全球技術(shù)大會(huì):RT-Thread上的單元測(cè)試框架與運(yùn)行測(cè)試用例

評(píng)論