當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]嵌入式Linux的低功耗策略研究

摘  要:功耗是嵌入式設(shè)備的一個(gè)十分重要的性能指標(biāo)。在硬件設(shè)計(jì)和選型之后,功耗水平在極大程度上取決于軟件的設(shè)計(jì)。鑒于Lioux在嵌入式設(shè)備中的應(yīng)用日益廣泛,提出在嵌入式Linux下軟件編寫的幾種策略。通過這些軟件編寫方式,能有效降低最終產(chǎn)品的功耗水平。
關(guān)鍵詞:嵌入式Linux功耗策略

引 言
    由于Linux系統(tǒng)具有嵌入式操作系統(tǒng)需要的很多特色,如適應(yīng)于多種CPU和多種硬件平臺(tái)、性能穩(wěn)定、可裁剪性很好、源碼開放、開發(fā)和使用簡單等。目前,基于Linux應(yīng)用的嵌入式設(shè)備日益增多,Linux正在嵌入式領(lǐng)域發(fā)揮著越來越重要的作用。

    對(duì)于嵌入式設(shè)備尤其是移動(dòng)設(shè)備來說,功耗是系統(tǒng)的重要指標(biāo),系統(tǒng)設(shè)計(jì)的重要目標(biāo)之一就是要盡可能地降低功耗。目前,對(duì)功耗的研究主要集中在硬件解決方案上,而軟件研究方面很少。實(shí)踐證明:在硬件設(shè)計(jì)和選型確定后,功耗的高低與軟件設(shè)計(jì)有很大的關(guān)聯(lián)性。軟件設(shè)計(jì)和編程質(zhì)量的好壞,極大地影響著最終產(chǎn)品的功耗水平。據(jù)此,為降低功耗,提出在嵌入式Linux下軟件編程的幾種策略。

1 問題分析
   
因?yàn)樽罱K耗能的是硬件,所以在考慮采用軟件方法降低功耗的時(shí)候,要充分考慮硬件的功能和性能,即在保障系統(tǒng)實(shí)現(xiàn)的基礎(chǔ)上怎樣組織硬件運(yùn)作而使功耗降低。全速執(zhí)行、待機(jī)和睡眠等行為都是利用CPU的固有能力,透過降低工作電壓或頻率來節(jié)省功耗。此外,在大多數(shù)用戶察覺不到的情況下,實(shí)際的電源管理能夠根據(jù)負(fù)載狀況逐漸改變系統(tǒng)的狀態(tài),有時(shí)這種情況在l s之內(nèi)可以產(chǎn)生數(shù)百次。

    另外,在編寫程序時(shí)可能會(huì)遇到這樣的情況,如記錄狀態(tài)寄存器內(nèi)容,并等待設(shè)定標(biāo)記出現(xiàn);檢查串口的FIFO狀態(tài)標(biāo)記,看是否收到數(shù)據(jù);監(jiān)測(cè)一個(gè)雙端口存儲(chǔ)器,以確定系統(tǒng)中是否有另外CPU寫入了一個(gè)變量,以便控制共享資源。從表面上看,這樣的代碼沒有什么問題,但在每個(gè)時(shí)鐘周期里不斷記錄寄存器狀態(tài)將無法有效延長設(shè)備的電池壽命。

    基于這些問題,下面提出幾種策略,以有效降低最終產(chǎn)品的功耗水平。

2 利用Linux內(nèi)核的電源管理
    電源管理策略的基礎(chǔ)是調(diào)整處理器內(nèi)核的工作電壓和頻率。不過,現(xiàn)代的嵌入式CPU具有非常高的電源效率,以至于CPU并不總是最主要的耗能組件。其他高耗能的組件包括高性能內(nèi)存、顯示屏和射頻接口等,因此,如果電源管理系統(tǒng)只能調(diào)節(jié)CPU內(nèi)核的電壓和頻率,那么它的用途將有限。一個(gè)真正有效的電源管理方案應(yīng)該可以采用與CPU內(nèi)核執(zhí)行相協(xié)調(diào)或相獨(dú)立的方式,支持對(duì)一系列電壓和頻率的快速調(diào)節(jié)。

    Linux支持兩種電源管理標(biāo)準(zhǔn):APM(AdvancedPower Managememt)和ACPI(Advanced Configtlrationand P0wer Interface)。APM是傳統(tǒng)的高級(jí)電源管理方案,目前仍然使用在許多基于Linus便攜式設(shè)備中;而ACPI則提供了更為靈活的電腦和設(shè)備管理接口。這兩個(gè)標(biāo)準(zhǔn)不能同時(shí)運(yùn)行。缺省情況下,Linux運(yùn)行ACPI。APM可以使機(jī)器處于Suspend(懸掛)或Standby(待機(jī))狀態(tài),以及檢查電池容量;而ACPI還可以使外設(shè)(如顯示器、PCI)單獨(dú)斷電,在節(jié)省電能方面有更多的控制。為了讓電源管理功能生效,需要在Linux內(nèi)核打開它,并且在Linux里加載必需的應(yīng)用軟件。

    電源管理活動(dòng)需要對(duì)操作系統(tǒng)內(nèi)核和設(shè)備驅(qū)動(dòng)程序進(jìn)行特殊的干預(yù)。在嵌入式Linux中,雖然低層電源管理駐留在操作系統(tǒng)內(nèi)核中,但電源管理策略和機(jī)制來源于中介軟件和用戶應(yīng)用程序代碼,如圖l所示。


     Linux內(nèi)核中電源管理機(jī)制負(fù)責(zé)維持整個(gè)系統(tǒng)的電源狀態(tài)。它可以看成是為驅(qū)動(dòng)程序、中介軟件和應(yīng)用程序提供服務(wù)的元素。

    通過在驅(qū)動(dòng)程序中實(shí)現(xiàn)電源管理接口,可以讓驅(qū)動(dòng)程序密切監(jiān)控系統(tǒng)狀態(tài)。它們?cè)谕獠渴录尿?qū)動(dòng)下,透過設(shè)定不同的狀態(tài)反映設(shè)備的工作情況。為了實(shí)現(xiàn)設(shè)備電源管理接口,需要實(shí)現(xiàn)以下操作:
    ①使用pm_register對(duì)設(shè)備的每個(gè)實(shí)例(instance)進(jìn)行注冊(cè);
    ②在對(duì)硬件進(jìn)行操作之前調(diào)用pm_access(這樣可保證設(shè)備已被喚醒,并處于ready狀態(tài));
    ③用戶自己的pnl_callback函數(shù)在系統(tǒng)進(jìn)入suspend狀態(tài),或者從suspend狀態(tài)恢復(fù)的時(shí)候會(huì)被調(diào)用;
    ④當(dāng)設(shè)備不使用時(shí)調(diào)用pm_dev_idle函數(shù)(這個(gè)操作是可選的,以增強(qiáng)設(shè)備idle狀態(tài)的監(jiān)測(cè)能力);
    ⑤當(dāng)被unIoad的時(shí)候,使用pm_unreggister取消設(shè)備的注冊(cè)。

    中介程序允許用戶預(yù)先定義某些策略,然后跟蹤電源狀態(tài),執(zhí)行特定的操作。

    在應(yīng)用程序中,利用中介程序提供的API,設(shè)立其基本的約束條件,強(qiáng)迫電源管理機(jī)制產(chǎn)生與其執(zhí)行需求相匹配的變化。Linix電源管理的實(shí)現(xiàn)機(jī)制包括以下API,例如dpm_set_os()(內(nèi)核)、assert_constraint()、remove_constraint()和set_operatInK—state()(內(nèi)核和驅(qū)動(dòng)程序)、set_policy()和set_task_state()(經(jīng)系統(tǒng)的用戶級(jí)調(diào)用)以及/proc接口。

3 在空閑模式下等待事件
    很多嵌入式CPU都具有能降低功耗的電源工作模式,最常用的是空閑模式。此時(shí)CPU內(nèi)核指令執(zhí)行部分關(guān)閉,而所有外設(shè)和中斷信號(hào)仍處于工作狀態(tài)。由于空閑模式比CPU執(zhí)行指令時(shí)的功耗要小得多,因而可以在任何時(shí)候,只要Linux檢查到所有線程都處于阻塞狀態(tài)(如等待中斷、事件或定時(shí)時(shí)間),它都可以將CPU置于空閑模式。任何中斷(如觸摸屏事件、按下按鍵事件等)都能把CPU從空閑模式中喚醒,然后繼續(xù)執(zhí)行后面的代碼。如果事件不能直接連接到外部中斷,也可以用一個(gè)系統(tǒng)定時(shí)器定期喚醒CPU。例如在等待一個(gè)事件并且知道只要事件發(fā)生后在10 ms內(nèi)能檢測(cè)到,那么可以啟動(dòng)lO ms定時(shí)器,并把CPU置于空閑模式。每次處理定時(shí)中斷時(shí)都要檢查事件狀態(tài),如果狀態(tài)沒有變化,就立刻回到空閑模式。

4 減少事件
    通常CPU的定時(shí)中斷間隔為1 ms,Linux會(huì)頻繁使CPU置于空閑模式,并一直維持到被中斷喚醒。在這種情況下,最有可能喚醒CPU中斷的是定時(shí)器中斷本身。即使所有其他線程被阻塞,在其他中斷、內(nèi)部事件及長時(shí)間延遲之前,定時(shí)器中斷也會(huì)以每秒l 00()次的頻率把CPU從空閑模式中喚醒,以運(yùn)行調(diào)度程序。就算調(diào)度程序確定所有線路都被阻塞,并很快將CPU回復(fù)到空閑模式,這樣頻繁操作也會(huì)浪費(fèi)大量電源。因此,應(yīng)盡可能長時(shí)間地將CPU置于空閑模式,而減少事件是解決這個(gè)問題的有效途徑。通過分析代碼和系統(tǒng)要求,以決定是否能改變處理中斷的方式實(shí)現(xiàn)。例如,可以在進(jìn)入空閑模式前關(guān)閉時(shí)隙中斷信號(hào),只有再次出現(xiàn)中斷信號(hào)時(shí)才被喚醒。不過,這種做法通常不太合適。盡管多數(shù)阻塞的線程可以直接或間接等待外部中斷,有些還依賴于定時(shí)中斷,如一個(gè)驅(qū)動(dòng)器會(huì)在等待外設(shè)時(shí)睡眠500 ms,這時(shí)空閑模式下如果完全關(guān)閉系統(tǒng)定時(shí)器,可能意味著線路不能按時(shí)恢復(fù)工作。

    Linux最好能為調(diào)度程序進(jìn)行可變超時(shí)設(shè)定。Lintux知道每個(gè)線程無法確定等待的是外部還是內(nèi)部事件,或者計(jì)劃在某特定時(shí)間再次運(yùn)行。Linux可算出第一個(gè)線程預(yù)定何時(shí)運(yùn)行,并相應(yīng)地在CPU置于空閑模式之前設(shè)定定時(shí)器工作。可變超時(shí)設(shè)定不會(huì)對(duì)調(diào)度程序造成很大的負(fù)擔(dān),但卻能節(jié)省電源和處理時(shí)間。

    可變計(jì)劃超時(shí)限定只是減少事件的一種方法,存儲(chǔ)器直接存取(DMA)也可讓CPU長時(shí)間處于空閑模式,即使數(shù)據(jù)正在發(fā)送至外設(shè)或從外設(shè)收取。所以只要可能,都應(yīng)在外圍驅(qū)動(dòng)器中使用DMA,省電效果相當(dāng)令人滿意。

    例如英特爾公司StrongARM CPU串口接收FIF0時(shí),大約每收到8個(gè)字節(jié)發(fā)生1次中斷,在115 2OO bps.速度下,發(fā)送到這個(gè)端口的11 KB脈沖數(shù)據(jù)會(huì)引起CPU內(nèi)核每秒中斷l(xiāng) 500次,很可能使其從空閑模式中喚醒;但如果實(shí)際上不需要在這些小的8字節(jié)設(shè)備中處理數(shù)據(jù),浪費(fèi)是很驚人的。DMA最好與大容量緩沖器一起使用,以使中斷發(fā)生的水平更加容易管理,或許是每秒10次或l00次,讓CPU在兩次中斷之間空閑。事實(shí)證明,在這些場(chǎng)合應(yīng)用DMA能減少使用率達(dá)20%,可降低CPU功耗,并提高供其他線程使用的CPU帶寬。

5 控制CPU的性能
    CPU在降低功耗方面的最新進(jìn)展表明,CPU消耗的能量與驅(qū)動(dòng)CPU的時(shí)鐘頻率以及應(yīng)用其內(nèi)核上的電壓平方成正比。

    CPU允許動(dòng)態(tài)降低時(shí)鐘速度。降低一半時(shí)鐘速度,功耗將成比例下降。但是僅采用這種技術(shù)實(shí)現(xiàn)節(jié)能,還需要一些技巧.因?yàn)閳?zhí)行的代碼可能要兩倍長的時(shí)間才能完成,即使這樣也不會(huì)省電。例如,板上LCD控制器需要使用一個(gè)儲(chǔ)存在片外SDRAM中的幀緩存。當(dāng)LCD控制器工作時(shí),需要指定足夠高的內(nèi)存總線頻率來滿足顯示器刷新速率的需要。在LCD不工作的情況下(例如當(dāng)PDA僅作為MP3播放器使用時(shí)),降低SDRAM總線頻率,可以節(jié)省整個(gè)系統(tǒng)的功耗。

    動(dòng)態(tài)降低電壓是另一種做法。越來越多的CPU允許降低電壓,以適應(yīng)CPU時(shí)鐘速度的下降,這樣在降低時(shí)鐘速度時(shí)也能省電。事實(shí)上,只要CPU不飽和,頻率和電壓就能不斷減少,這樣還是能完成工作,而消耗的電源總體上卻比較低。

    考慮到并不是所有線程都消耗同樣多CPU帶寬,所以即使這些方法也還是可以改進(jìn)的。有效應(yīng)用CPU帶寬的線程,會(huì)隨著CPU時(shí)鐘速度下降而花更長的時(shí)間才能完成,這些線程使用分配給它們的每一個(gè)周期。另一方面,I/O線程采用分配給它的所有CPU周期,即便CPU時(shí)鐘速率下降,也要用同樣長的時(shí)間才能完成。例如,像很多PDA使用的PCMCIA卡接口,當(dāng)數(shù)據(jù)寫人快閃存儲(chǔ)卡時(shí),系統(tǒng)瓶頸不是CPU的速度,而是物理總線接口以及卡的固件為擦掉和重新編程閃存所花的時(shí)間。理想情況下,前面討論的等待事件的技術(shù)可在這里應(yīng)用,以最大程度降低功耗,但是等待時(shí)間經(jīng)常變化很大,遠(yuǎn)小于操作系統(tǒng)運(yùn)行時(shí)間,這樣會(huì)影響到性能。這些驅(qū)動(dòng)程序常常檢測(cè)狀態(tài)寄存器,此時(shí)降低時(shí)鐘速度將節(jié)省一部分電源,但會(huì)對(duì)數(shù)據(jù)寫入卡的時(shí)間產(chǎn)生輕微影響。

    使用控制CPU性能的策略,要知道何時(shí)能降低時(shí)鐘頻率和電壓而不會(huì)顯著影響性能;考慮什么時(shí)候降低驅(qū)動(dòng)器和應(yīng)用程序的時(shí)鐘速度比較難處理。這在多任務(wù)處理環(huán)境中更加富有技巧性。

6 結(jié) 論
   
近年來隨著計(jì)算機(jī)和網(wǎng)絡(luò)通信、消費(fèi)電子合一的加速發(fā)展,嵌入式產(chǎn)品成為信息產(chǎn)業(yè)的主流。Linux在短短的十幾年時(shí)間已經(jīng)發(fā)展成為功能強(qiáng)大設(shè)計(jì)完善的操作系統(tǒng)之一,可運(yùn)行在X86、Alpha、Sparc、MIPS、PPC、Motorola、NEC、ARM等多種硬件平臺(tái)上,而且開放源代碼,并可以定制,越來越多的企業(yè)和研發(fā)機(jī)構(gòu)都轉(zhuǎn)向嵌入式Linux的開發(fā)和研究上。本文在系統(tǒng)分析的基礎(chǔ)上,研究了在嵌入式Linux系統(tǒng)中通過優(yōu)化軟件編寫機(jī)制來降低最終產(chǎn)品功耗水平的方法,具有很強(qiáng)的實(shí)際應(yīng)用意義。隨著研究的深入,嵌入式Linux必將顯示出其在低功耗方面的優(yōu)越性,將有更多的嵌入式設(shè)備普及Linux應(yīng)用。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉