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

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

3天內不再提示

FreeRTOS如何降低功耗

麥辣雞腿堡 ? 來源:嵌入式Linux系統(tǒng)開發(fā) ? 作者:嵌入式Linux系統(tǒng)開 ? 2023-07-30 11:18 ? 次閱讀

1、如何降低功耗?

一般的簡單應用中處理器大量的時間都在處理空閑任務,所以我們就可以考慮當處理器處理空閑任務的時候就進入低功耗模式,當需要處理應用層代碼的時候就將處理器從低功耗模式喚醒。FreeRTOS 就是通過在處理器處理空閑任務的時候將處理器設置為低功耗模式來降低能耗。一般會在空閑任務的鉤子函數(shù)中執(zhí)行低功耗相關處理,比如設置處理器進入低功耗模式、關閉其他外設時鐘、降低系統(tǒng)主頻等等。

我們知道 FreeRTOS 的系統(tǒng)時鐘是由滴答定時器中斷來提供的,系統(tǒng)時鐘頻率越高,那么滴答定時器中斷頻率也就越高。以前講過,中斷是可以將 STM32F103 從睡眠模式中喚醒,周期性的滴答定時器中斷就會導致 STM32F103 周期性的進入和退出睡眠模式。因此,如果滴答定時器中斷頻率太高的話會導致大量的能量和時間消耗在進出睡眠模式中,這樣導致的結果就是低功耗模式的作用被大大的削弱。

為此,F(xiàn)reeRTOS 特地提供了一個解決方法——Tickless 模式,當處理器進入空閑任務周期以后就關閉系統(tǒng)節(jié)拍中斷(滴答定時器中斷),只有當其他中斷發(fā)生或者其他任務需要處理的時候處理器才會被從低功耗模式中喚醒。為此我們將面臨兩個問題:

問題一:關閉系統(tǒng)節(jié)拍中斷會導致系統(tǒng)節(jié)拍計數(shù)器停止,系統(tǒng)時鐘就會停止。

FreeRTOS 的系統(tǒng)時鐘是依賴于系統(tǒng)節(jié)拍中斷(滴答定時器中斷)的,如果關閉了系統(tǒng)節(jié)拍中斷的話就會導致系統(tǒng)時鐘停止運行,這是絕對不允許的!該如何解決這個問題呢?我們可以記錄下系統(tǒng)節(jié)拍中斷的關閉時間,當系統(tǒng)節(jié)拍中斷再次開啟運行的時候補上這段時間就行了。這時候我們就需要另外一個定時器來記錄這段該補上的時間,如果使用專用的低功耗處理器的話基本上都會有一個低功耗定時器,比如 STM32L4 系列(L 系列是 ST 的低功耗處理器)就有一個叫做 LPTIM(低功耗定時器)的定時器。STM32F103 沒有這種定時器那么就接著使用滴答定時器來完成這個功能,具體實現(xiàn)方法后面會講解。

問題二:如何保證下一個要運行的任務能被準確的喚醒?

即使處理器進入了低功耗模式,但是我的中斷和應用層任務也要保證及時的響應和處理。中斷自然不用說,本身就可以將處理器從低功耗模式中喚醒。但是應用層任務就不行了,它無法將處理器從低功耗模式喚醒,無法喚醒就無法運行!這個問題看來很棘手,既然應用層任務無法將處理器從低功耗模式喚醒,那么我們就借助其他的力量來完成這個功能。如果處理器在進入低功耗模式之前能夠獲取到還有多長時間運行下一個任務那么問題就迎刃而解了,我們只需要開一個定時器,定時器的定時周期設置為這個時間值就行了,定時時間到了以后產(chǎn)生定時中斷,處理器不就從低功耗模式喚醒了。這里似乎又引出了一個新的問題,那就是如何知道還有多長時間執(zhí)行下一個任務?這個時間也就是低功耗模式的執(zhí)行時間,值得慶辛的是 FreeRTOS已經(jīng)幫我們完成了這個工作。

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

    關注

    68

    文章

    19100

    瀏覽量

    228813
  • 嵌入式
    +關注

    關注

    5059

    文章

    18973

    瀏覽量

    302010
  • FreeRTOS
    +關注

    關注

    12

    文章

    483

    瀏覽量

    61915
收藏 人收藏

    評論

    相關推薦

    降低電路漏電功耗低功耗設計方法

    概念: Power/Ground Gating是集成電路中通過關掉那些不使用的模塊的電源或者地來降低電路漏電功耗低功耗設計方法。該方法能降低電路在空閑狀態(tài)下的靜態(tài)
    的頭像 發(fā)表于 09-16 16:04 ?1.1w次閱讀
    <b class='flag-5'>降低</b>電路漏電<b class='flag-5'>功耗</b>的<b class='flag-5'>低功耗</b>設計方法

    cogobuy降低功耗的措施

    cogobuy降低功耗的措施  每個廠商對于降低功耗都有不同的處理方式。雖然每個MCU都有休眠狀態(tài)或都有可能實現(xiàn)很低的工作耗電量,但是有的芯片在處于很低功耗的時候,基本功能也所剩無幾了,沒有
    發(fā)表于 03-23 11:18

    第30章 FreeRTOS低功耗之睡眠模式

    STM32F4xx睡眠模式介紹30.3 低功耗模式的調試支持30.4 如何有效降低睡眠模式下的功耗30.5總結30.1STM32F103睡眠模式介紹說明:在FreeRTOS系統(tǒng)上面實
    發(fā)表于 09-12 17:21

    第31章 FreeRTOS低功耗之停機模式

    低功耗是MCU的一項重要的指標,本章節(jié)為大家講解STM32F103,STM32F407和STM32F429的低功耗方式之停機模式在FreeRTOS操作系統(tǒng)上面的實現(xiàn)方法。本章教程配套的例子含
    發(fā)表于 09-13 20:17

    第33章 FreeRTOS低功耗之tickless模式

    轉本章節(jié)為大家講解FreeRTOS本身支持的低功耗模式tickless實現(xiàn)方法,tickless低功耗機制是當前小型RTOS所采用的通用低功耗方法,比如embOS,RTX和uCOS-I
    發(fā)表于 09-17 20:43

    RTOS低功耗設計原理及實現(xiàn)_TicklessMode(FreeRTOS的實現(xiàn))

    ,每次當 OS 系統(tǒng)定時器產(chǎn)生中斷時,也會將 MCU 從低功耗模式中喚醒,而頻繁的進入低功耗模式/從低功耗模式中喚醒會使得 MCU 無法進入深度睡眠,對低功耗設計而言也是不合理的。在
    發(fā)表于 11-10 09:54

    請問stm32不進入低功耗模式怎么降低功耗

    stm32進入低功耗模式,必須用中斷來喚醒,現(xiàn)在就是不用這種模式,如何通過程序來降低功耗
    發(fā)表于 05-06 18:43

    如何降低ZC發(fā)現(xiàn)網(wǎng)絡的頻次以降低功耗?

    ZED 和ZC,在組網(wǎng)正常的情況下,ZED可以進入低功耗模式,電流在uA級別。CC2530芯片當關閉ZC后,ZED會持續(xù)的進行網(wǎng)絡發(fā)現(xiàn),無法進入低功耗模式。電流達28mA;求教TI工程師,如何降低ZC發(fā)現(xiàn)網(wǎng)絡的頻次以
    發(fā)表于 08-07 07:03

    AT32 FreeRTOS基礎例程(包含低功耗功能)

    說明:AT32 FreeRTOS基礎例程(包含低功耗功能),見附件。器件:AT32F403A工程環(huán)境:IAR V8另有更詳細的基于Keil MDK的FreeRTOS例程和FreeRTOS
    發(fā)表于 03-22 18:57

    請問如何利用FPGA設計技術降低功耗

    如何利用FPGA設計技術降低功耗?
    發(fā)表于 04-13 06:16

    關于FreeRTOS低功耗的問題

    筆者的團隊專業(yè)從事環(huán)境監(jiān)測設備的開發(fā),在開發(fā)過程中團隊的工作人員提到了關于FreeRTOS低功耗的問題。RTOS低功耗與裸機跑的進入的方式不同。普通單片機進入的方式分為SLEEP、STOP
    發(fā)表于 02-23 06:25

    探究STM32、FreeRTOS低功耗設計思路和原理

    本文為大家講講基于 STM32 、 FreeRTOS 實現(xiàn)低功耗思想和原理
    的頭像 發(fā)表于 05-07 17:20 ?3170次閱讀
    探究STM32、<b class='flag-5'>FreeRTOS</b><b class='flag-5'>低功耗</b>設計思路和原理

    STM32與FreeRTOS實現(xiàn)低功耗

    記錄在開發(fā)過程中,遇到這樣一個產(chǎn)品,它基于 Cortex-M7 內核的 STM32F769 芯片,同時使用了 FreeRTOS 實時操作系統(tǒng)。由于該產(chǎn)品使用電池供電,因此有著低功耗的需求。接下來
    發(fā)表于 12-07 20:06 ?19次下載
    STM32與<b class='flag-5'>FreeRTOS</b>實現(xiàn)<b class='flag-5'>低功耗</b>

    STM32L4 運行FreeRTOS之STOP2低功耗模式

    最近做一個物聯(lián)網(wǎng)的項目,由于功能比較多,為了簡化程序邏輯,所以使用了FreeRTOS操作系統(tǒng),MCU為STM32L431。FreeRTOS的源碼只實現(xiàn)了sleep級別低功耗模式(需要定義
    發(fā)表于 12-07 20:21 ?22次下載
    STM32L4 運行<b class='flag-5'>FreeRTOS</b>之STOP2<b class='flag-5'>低功耗</b>模式

    在模擬電源設計中降低功耗

    Nano,Nano:在模擬電源設計中降低功耗
    的頭像 發(fā)表于 01-05 09:43 ?680次閱讀