1. gzyueqian
      13352868059

      嵌入式開發(fā):提示和技巧——退出時休眠

      更新時間: 2022-08-11 09:31:48來源: 粵嵌教育瀏覽量:8319

        低功耗系統(tǒng)的一種軟件架構(gòu)是讓系統(tǒng)始終處于睡眠模式,僅在運(yùn)行單個中斷服務(wù)程序(ISR)時喚醒,然后立即返回睡眠狀態(tài)。如果嵌入式開發(fā)人員試圖從他的電池中榨出最后一點(diǎn)電,那就有一個嚴(yán)重且經(jīng)常被忽視的缺陷。運(yùn)行一個中斷會浪費(fèi)很多時間和時鐘周期。

        執(zhí)行中斷的順序是一個多步驟的過程。首先,將寄存器值和其他當(dāng)前狀態(tài)信息壓入堆棧,以便以后恢復(fù)。接下來,CPU指向ISR,執(zhí)行ISR代碼,最后彈出堆棧,將寄存器恢復(fù)到原始狀態(tài)。整個序列可以用圖1中的流程圖來概括。

        

        圖1–標(biāo)準(zhǔn)ISR操作

        這樣做的問題是,即使嵌入式開發(fā)人員使用現(xiàn)代的快速處理器,將所有寄存器推到堆棧中然后再恢復(fù)它們的效率仍然很低。這可能需要很少的時間,甚至可能是幾納秒,但是在數(shù)百萬或數(shù)十億次執(zhí)行的過程中,這可能相當(dāng)于在低功率模式下花費(fèi)的大量時間。結(jié)果就是浪費(fèi)電池電量!

        大多數(shù)ARM微控制器都有一個非常酷的特性,叫做退出時休眠。該特性的作用是,當(dāng)ISR完成時,使能該特性會使MCU立即進(jìn)入睡眠狀態(tài),而不是讓處理器每次都進(jìn)入和退出ISR,浪費(fèi)玩堆棧的開銷。通過這樣做,MCU仍然被配置為運(yùn)行ISR,因此當(dāng)它再次觸發(fā)時,系統(tǒng)喚醒并立即執(zhí)行ISR,開銷最小。結(jié)果如圖2所示。

        

        圖2–退出時休眠的ISR開銷

        不過,在不使用其他低功耗設(shè)計技術(shù)或設(shè)計周期中沒有時間進(jìn)行節(jié)能優(yōu)化的應(yīng)用中,這一特性的真正優(yōu)勢是顯而易見的。如果嵌入式開發(fā)人員將它內(nèi)置于軟件架構(gòu)中,并且是首批優(yōu)化之一,則可以節(jié)省幾毫安的電流。然而,如果這個特性是在大部分優(yōu)化已經(jīng)實(shí)現(xiàn)的最后實(shí)現(xiàn)的,那么很可能節(jié)省的空間非常小。

      免費(fèi)預(yù)約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 色偷偷亚洲男人本色 | 亚洲性色AV乱码字幕无线观看 | 日韩精品一区二区三区免费视频 | 亚洲综合中文字幕无线码 | 特级婬片国产高清视频 | 日韩欧美中文字幕在线三区 |