通過軟件降低便攜式產(chǎn)品的功耗
發(fā)布時間:2008/5/27 0:00:00 訪問次數(shù):530
    
    
    降低功耗是每個便攜式產(chǎn)品開發(fā)人員的設(shè)計目標(biāo)之一,但功耗不僅僅與硬件設(shè)計有關(guān),控制軟件也會對產(chǎn)品的功耗產(chǎn)生很大影響。不管是操作系統(tǒng)、bios控制程序還是外設(shè)驅(qū)動程序,這些軟件編寫的方式?jīng)Q定了最終產(chǎn)品的功耗水平,因此在開發(fā)時必須加以考慮。本文介紹四種通過軟件降低功耗的方法,可供中國的設(shè)計工程師們參考。
    作為嵌入式軟件工程師,我們需要在質(zhì)量與效率之間尋求平衡。為此,我們要優(yōu)化軟件性能,使之能在速度較慢而價格低廉的處理器上運行;我們要調(diào)整軟件大小,這樣就能使用更小且更便宜的存儲器,F(xiàn)在隨著為手持式和無線裝置編寫的軟件越來越多,我們還需要優(yōu)化產(chǎn)品的功耗,以延長小型低成本電源的壽命。
    有個好消息是,無論你在開發(fā)操作系統(tǒng)、外設(shè)驅(qū)動程序還是應(yīng)用程序,現(xiàn)在已有多種軟件設(shè)計技術(shù)可以幫助降低功耗,下面我們重點討論其中的四種方法。
    智能等待
    很多最新的嵌入式處理器都具有能降低功耗的電源工作模式,最常用的是空閑模式,此時處理器內(nèi)核指令執(zhí)行部分關(guān)閉,而所有外設(shè)和中斷信號仍有電并起作用?臻e模式比處理器執(zhí)行指令時的功耗要小得多。
    空閑模式一個主要特點是其進(jìn)入退出基本上不需要額外開銷,通常一個毫秒可以反復(fù)很多次。任何時候只要操作系統(tǒng)檢查到所有線程都處于阻塞狀態(tài)如等待中斷、事件或定時時間,它都可以把處理器置于空閑模式以省電。由于任何中斷都能把處理器從空閑模式中喚醒,所以采用這種模式可使軟件智能等待系統(tǒng)事件,不過為最大程度提高電源效率,該工具要求我們認(rèn)真地設(shè)計軟件。
    我們都編寫過這樣的代碼,如記錄狀態(tài)寄存器內(nèi)容并等待設(shè)定標(biāo)記出現(xiàn),也許是檢查串口的fifo狀態(tài)標(biāo)記,看是否收到數(shù)據(jù);也許是監(jiān)測一個雙端口存儲器看系統(tǒng)中是否有另外處理器寫入一個變量,使我們能控制共享資源。盡管從表面上看這樣的代碼沒有什么問題,但在每個時鐘周期里不斷記錄寄存器狀態(tài)將無法有效延長手持裝置的電池壽命。
    更好的解決辦法是使用一個外部中斷來表明狀態(tài)何時改變。在單線程軟件環(huán)境里,你可以調(diào)用處理器空閑模式降低功耗直到發(fā)生實際事件,出現(xiàn)中斷時,處理器自動喚醒然后繼續(xù)執(zhí)行后面的代碼。
    空閑模式甚至能用于事件不能直接連接到外部中斷的場合,在這種情況下,用一個系統(tǒng)定時器定期喚醒處理器是個很好的方法。例如你在等待一個事件并且知道只要事件發(fā)生后在一毫秒內(nèi)能檢測到都能迅速做出處理,那么可以啟動1ms定時器并把處理器置于空閑模式,每次中斷時檢查事件狀態(tài),如果狀態(tài)沒有變化,就立刻回到空閑模式。
    這種等待機(jī)理應(yīng)用很普遍,現(xiàn)今大多數(shù)pda和智能電話都是由具有空閑模式功能的處理器和操作系統(tǒng)控制。事實上,很多這些設(shè)備每秒會多次進(jìn)出空閑模式,只要有觸摸、按鍵或時間到就會被喚醒。
    減少事件
    另一種可以考慮的技術(shù)是減少事件。智能等待是使處理器盡可能高頻率地進(jìn)入空閑模式,減少事件則是盡可能長時間地將處理器置于空閑模式,它通過分析代碼和系統(tǒng)要求來決定你是否能改變處理中斷的方式實現(xiàn)。
    例如一個通過時隙安排線程的多任務(wù)操作系統(tǒng),一般設(shè)定的定時中斷通常在只有1ms的時隙間隔發(fā)生。假定你的代碼很好利用了智能等待技術(shù),操作系統(tǒng)會頻繁使處理器置于空閑模式,并一直維持直到被中斷喚醒。當(dāng)然,在這種情形下,最有可能喚醒處理器的中斷是定時器中斷本身。即使所有其它線程被阻塞,在其它中斷、內(nèi)部事件及長時間延遲之前,定時器中斷也會以每秒1,000次的頻率把處理器從空閑模式中喚醒,以運行調(diào)度安排程序。
    但就算調(diào)度安排程序確定所有線路都被阻塞,并很快將處理器回復(fù)到空閑模式,這樣頻繁操作也會浪費大量電源。在這樣的情況下,進(jìn)入空閑模式時應(yīng)關(guān)閉時隙中斷信號,只有再次出現(xiàn)中斷信號時才被喚醒。
    當(dāng)然把時隙中斷完全關(guān)閉通常不太合適。盡管多數(shù)阻塞的線程可以直接或間接等待外部中斷,有些在特定時間還是服從于操作系統(tǒng)。例如一個驅(qū)動器會在等待外設(shè)時睡眠500ms,這時空閑模式下如果完全關(guān)閉系統(tǒng)定時器,可能意味著線路不能按時恢復(fù)工作。
    操作系統(tǒng)最好能為調(diào)度安排程序進(jìn)行可變超時設(shè)定。操作系統(tǒng)知道每個線程是否無法確定等待的是外部還是內(nèi)部事件,或者計劃在某特定時間再次運行,操作系統(tǒng)可算出第一個線程預(yù)定何時運行,并相應(yīng)地在處理器置于空閑模式之前設(shè)定
    
    
    降低功耗是每個便攜式產(chǎn)品開發(fā)人員的設(shè)計目標(biāo)之一,但功耗不僅僅與硬件設(shè)計有關(guān),控制軟件也會對產(chǎn)品的功耗產(chǎn)生很大影響。不管是操作系統(tǒng)、bios控制程序還是外設(shè)驅(qū)動程序,這些軟件編寫的方式?jīng)Q定了最終產(chǎn)品的功耗水平,因此在開發(fā)時必須加以考慮。本文介紹四種通過軟件降低功耗的方法,可供中國的設(shè)計工程師們參考。
    作為嵌入式軟件工程師,我們需要在質(zhì)量與效率之間尋求平衡。為此,我們要優(yōu)化軟件性能,使之能在速度較慢而價格低廉的處理器上運行;我們要調(diào)整軟件大小,這樣就能使用更小且更便宜的存儲器,F(xiàn)在隨著為手持式和無線裝置編寫的軟件越來越多,我們還需要優(yōu)化產(chǎn)品的功耗,以延長小型低成本電源的壽命。
    有個好消息是,無論你在開發(fā)操作系統(tǒng)、外設(shè)驅(qū)動程序還是應(yīng)用程序,現(xiàn)在已有多種軟件設(shè)計技術(shù)可以幫助降低功耗,下面我們重點討論其中的四種方法。
    智能等待
    很多最新的嵌入式處理器都具有能降低功耗的電源工作模式,最常用的是空閑模式,此時處理器內(nèi)核指令執(zhí)行部分關(guān)閉,而所有外設(shè)和中斷信號仍有電并起作用?臻e模式比處理器執(zhí)行指令時的功耗要小得多。
    空閑模式一個主要特點是其進(jìn)入退出基本上不需要額外開銷,通常一個毫秒可以反復(fù)很多次。任何時候只要操作系統(tǒng)檢查到所有線程都處于阻塞狀態(tài)如等待中斷、事件或定時時間,它都可以把處理器置于空閑模式以省電。由于任何中斷都能把處理器從空閑模式中喚醒,所以采用這種模式可使軟件智能等待系統(tǒng)事件,不過為最大程度提高電源效率,該工具要求我們認(rèn)真地設(shè)計軟件。
    我們都編寫過這樣的代碼,如記錄狀態(tài)寄存器內(nèi)容并等待設(shè)定標(biāo)記出現(xiàn),也許是檢查串口的fifo狀態(tài)標(biāo)記,看是否收到數(shù)據(jù);也許是監(jiān)測一個雙端口存儲器看系統(tǒng)中是否有另外處理器寫入一個變量,使我們能控制共享資源。盡管從表面上看這樣的代碼沒有什么問題,但在每個時鐘周期里不斷記錄寄存器狀態(tài)將無法有效延長手持裝置的電池壽命。
    更好的解決辦法是使用一個外部中斷來表明狀態(tài)何時改變。在單線程軟件環(huán)境里,你可以調(diào)用處理器空閑模式降低功耗直到發(fā)生實際事件,出現(xiàn)中斷時,處理器自動喚醒然后繼續(xù)執(zhí)行后面的代碼。
    空閑模式甚至能用于事件不能直接連接到外部中斷的場合,在這種情況下,用一個系統(tǒng)定時器定期喚醒處理器是個很好的方法。例如你在等待一個事件并且知道只要事件發(fā)生后在一毫秒內(nèi)能檢測到都能迅速做出處理,那么可以啟動1ms定時器并把處理器置于空閑模式,每次中斷時檢查事件狀態(tài),如果狀態(tài)沒有變化,就立刻回到空閑模式。
    這種等待機(jī)理應(yīng)用很普遍,現(xiàn)今大多數(shù)pda和智能電話都是由具有空閑模式功能的處理器和操作系統(tǒng)控制。事實上,很多這些設(shè)備每秒會多次進(jìn)出空閑模式,只要有觸摸、按鍵或時間到就會被喚醒。
    減少事件
    另一種可以考慮的技術(shù)是減少事件。智能等待是使處理器盡可能高頻率地進(jìn)入空閑模式,減少事件則是盡可能長時間地將處理器置于空閑模式,它通過分析代碼和系統(tǒng)要求來決定你是否能改變處理中斷的方式實現(xiàn)。
    例如一個通過時隙安排線程的多任務(wù)操作系統(tǒng),一般設(shè)定的定時中斷通常在只有1ms的時隙間隔發(fā)生。假定你的代碼很好利用了智能等待技術(shù),操作系統(tǒng)會頻繁使處理器置于空閑模式,并一直維持直到被中斷喚醒。當(dāng)然,在這種情形下,最有可能喚醒處理器的中斷是定時器中斷本身。即使所有其它線程被阻塞,在其它中斷、內(nèi)部事件及長時間延遲之前,定時器中斷也會以每秒1,000次的頻率把處理器從空閑模式中喚醒,以運行調(diào)度安排程序。
    但就算調(diào)度安排程序確定所有線路都被阻塞,并很快將處理器回復(fù)到空閑模式,這樣頻繁操作也會浪費大量電源。在這樣的情況下,進(jìn)入空閑模式時應(yīng)關(guān)閉時隙中斷信號,只有再次出現(xiàn)中斷信號時才被喚醒。
    當(dāng)然把時隙中斷完全關(guān)閉通常不太合適。盡管多數(shù)阻塞的線程可以直接或間接等待外部中斷,有些在特定時間還是服從于操作系統(tǒng)。例如一個驅(qū)動器會在等待外設(shè)時睡眠500ms,這時空閑模式下如果完全關(guān)閉系統(tǒng)定時器,可能意味著線路不能按時恢復(fù)工作。
    操作系統(tǒng)最好能為調(diào)度安排程序進(jìn)行可變超時設(shè)定。操作系統(tǒng)知道每個線程是否無法確定等待的是外部還是內(nèi)部事件,或者計劃在某特定時間再次運行,操作系統(tǒng)可算出第一個線程預(yù)定何時運行,并相應(yīng)地在處理器置于空閑模式之前設(shè)定
熱門點擊
- 高聲強(qiáng)度超聲波管道清洗機(jī)與高頻大電流可靠性監(jiān)
- PWM恒流充電系統(tǒng)的設(shè)計
- 鈴流源電路的新設(shè)計
- 新型XEFT基準(zhǔn)電壓源ADR290/291/
- 汽車專用交流發(fā)電機(jī)穩(wěn)壓器MC33092
- 超低壓差穩(wěn)壓技術(shù)
- SPWM逆變器死區(qū)影響的幾種補(bǔ)償方法
- 閥側(cè)移相12脈波同相逆并聯(lián)整流電源
- 采用智能電源IC的非隔離脫機(jī)應(yīng)用低成本電源
- 適用功率MOSFET封裝的選擇
推薦技術(shù)資料
- Seeed Studio
- Seeed Studio紿我們的印象總是和繪畫脫離不了... [詳細(xì)]
- CV/CC InnoSwitch3-AQ 開
- URF1DxxM-60WR3系
- 1-6W URA24xxN-x
- 閉環(huán)磁通門信號調(diào)節(jié)芯片NSDRV401
- SK-RiSC-SOM-H27X-V1.1應(yīng)
- RISC技術(shù)8位微控制器參數(shù)設(shè)
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究