《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 采用Linux系統(tǒng)的非便攜式產(chǎn)品節(jié)能研究
采用Linux系統(tǒng)的非便攜式產(chǎn)品節(jié)能研究
2014年微型機(jī)與應(yīng)用第19期
王少卿
深圳市泛海三江電子有限公司,廣東 深圳 518054
摘要: 針對采用Linux操作系統(tǒng)的處于長期供電狀態(tài)下的產(chǎn)品的節(jié)能情況做了一定的分析,分析了Linux和Android操作系統(tǒng)的節(jié)能方案,提出不同功能和使用環(huán)境的產(chǎn)品要分別做對應(yīng)的節(jié)能處理的思想,最后以數(shù)字對講產(chǎn)品為例,闡述了具體實(shí)現(xiàn)過程。
關(guān)鍵詞: Linux 休眠 節(jié)能 S5PV210
Abstract:
Key words :

  摘 要: 針對采用Linux操作系統(tǒng)的處于長期供電狀態(tài)下的產(chǎn)品的節(jié)能情況做了一定的分析,分析了Linux和Android操作系統(tǒng)的節(jié)能方案,提出不同功能和使用環(huán)境的產(chǎn)品要分別做對應(yīng)的節(jié)能處理的思想,最后以數(shù)字對講產(chǎn)品為例,闡述了具體實(shí)現(xiàn)過程。

  關(guān)鍵詞: Linux;休眠;節(jié)能;S5PV210

0 引言

  采用Linux系統(tǒng)的非便攜式產(chǎn)品指的是產(chǎn)品不存在電池供電,具有長期穩(wěn)定電源供電并采用Linux操作系統(tǒng)平臺的一類產(chǎn)品。例如數(shù)字樓宇對講產(chǎn)品、智能網(wǎng)絡(luò)產(chǎn)品、智能家居產(chǎn)品等。

  與之相對的是便攜式產(chǎn)品。目前在便攜式產(chǎn)品領(lǐng)域,如智能手機(jī)產(chǎn)品、平板電腦產(chǎn)品等,普遍采用谷歌Android或者蘋果ios操作系統(tǒng),這些操作系統(tǒng)針對電池供電的系統(tǒng)做了精心的優(yōu)化,盡可能地保持產(chǎn)品處于低功耗的工作模式,保證電池最大限度的續(xù)航時間。但是在本文提及的非便攜式產(chǎn)品領(lǐng)域,由于不存在電池供電的苛刻環(huán)境,加之Linux操作系統(tǒng)是一個通用的操作系統(tǒng),沒有針對某類產(chǎn)品做出特別的優(yōu)化措施,導(dǎo)致開發(fā)者和使用者都沒有將節(jié)能問題作為一個重要問題進(jìn)行思考。在全球環(huán)境不斷惡化、節(jié)能減排呼聲日益高漲的背景下,越來越需要開發(fā)更加節(jié)能環(huán)保的產(chǎn)品。本文基于這個目的,按照Linux系統(tǒng)節(jié)能的設(shè)計方法,結(jié)合產(chǎn)品的具體功能和使用環(huán)境,做了一些有益的探索和研究。

1 硬件能耗分布情況

  這里提取一般嵌入式產(chǎn)品的幾大部分進(jìn)行分析。對于一般嵌入式產(chǎn)品而言,主要是由處理器芯片及其外圍電路加上本產(chǎn)品所需的功能芯片及其外圍電路組成。隨著集成電路技術(shù)的日新月異,現(xiàn)在的處理器芯片內(nèi)部集成了多種功能電路,構(gòu)成了一個龐大的耗能系統(tǒng)。

001.jpg

  圖1為一個簡單功能的產(chǎn)品硬件示意圖,箭頭指示了功耗流向,橢圓形部分是各部件功耗的大致說明。由圖可見,對于一個嵌入式產(chǎn)品而言,解決產(chǎn)品功耗問題,也就是要解決CPU功耗和外設(shè)功耗問題,需要從CPU和各外設(shè)的電源、頻率管理部分入手。目前處理器芯片和一些外設(shè)芯片都具備有低功耗模式,硬件對節(jié)能的支持是完善的,需要軟件進(jìn)行合理處理,達(dá)到降低功耗的目的。下面首先分析一下操作系統(tǒng)是如何解決這個問題的。

2 Linux操作系統(tǒng)和Android操作系統(tǒng)節(jié)能設(shè)計方案

  2.1 Linux操作系統(tǒng)節(jié)能方案設(shè)計

  Linux操作系統(tǒng)設(shè)計了兩種標(biāo)準(zhǔn)來解決節(jié)能問題,一種是Advanced Power Management(APM),另外一種是Advanced Configuration and Power Interface (ACPI)。這兩種方案都是針對X86架構(gòu)上存儲在Bios芯片中的Linux電源管理機(jī)制而設(shè)計的。由于嵌入式系統(tǒng)不存在Bios芯片,目前的解決方法是模擬ACPI狀態(tài)的方式實(shí)現(xiàn)電源管理,目前ACPI按程度不同有4種睡眠狀態(tài)[1],如表1所示。

005.jpg

  由于嵌入式系統(tǒng)的特殊性,目前Linux操作系統(tǒng)針對嵌入式處理器睡眠狀態(tài)主要是模擬Suspend to RAM(mem)狀態(tài),即ACPI睡眠狀態(tài)S3。

  Linux操作系統(tǒng)針對嵌入式處理器睡眠狀態(tài)具體的操作實(shí)現(xiàn)過程是同Linux內(nèi)核框架、驅(qū)動模型(LDM)密切相關(guān)的,正常的睡眠實(shí)現(xiàn)過程如圖2所示。

002.jpg

  圖中虛線框內(nèi)是對所有注冊到dpm_list的設(shè)備進(jìn)行休眠,按照LDM的設(shè)備類型,這些設(shè)備包括class、type、bus等[2],但凡有一個注冊的設(shè)備休眠失敗,則整個休眠中斷,系統(tǒng)恢復(fù)到休眠前的狀態(tài)。

  2.2 Android操作系統(tǒng)節(jié)能方案設(shè)計

  Android操作系統(tǒng)是基于Linux操作系統(tǒng),針對手機(jī)、便攜式產(chǎn)品做了特別優(yōu)化的一款操作系統(tǒng)。此類產(chǎn)品在節(jié)能方面要求極高,同時需要靈活的節(jié)能方法來完成產(chǎn)品需要的不同功能,這里簡單分析一下該系統(tǒng)的節(jié)能過程。

  Android操作系統(tǒng)的節(jié)能解決方案框架還是依賴Linux操作系統(tǒng)的。但是標(biāo)準(zhǔn)Linux操作系統(tǒng)的節(jié)能解決方案解決不了手機(jī)所必須的兩項(xiàng)功能:

 ?。?)手機(jī)要支持在LCD屏幕關(guān)閉的狀態(tài)下,后臺應(yīng)用程序依然保持工作(因?yàn)長CD屏幕是耗電大戶)。例如播放歌曲的線程在屏幕關(guān)閉的情況下可以正常運(yùn)行。

 ?。?)應(yīng)用程序須具備阻止系統(tǒng)進(jìn)入休眠狀態(tài)的能力。譬如手機(jī)正在長時間的播放視頻,這個時候系統(tǒng)進(jìn)入休眠狀態(tài)顯然是不可以的。

  為了滿足這兩類產(chǎn)品功能的需要,Android操作系統(tǒng)在標(biāo)準(zhǔn)Linux操作系統(tǒng)上引入了Early Suspend/Late resume機(jī)制和Wake Lock機(jī)制[3]。

  Early Suspend/Late resume機(jī)制解決了諸如耗電大戶LCD、觸摸屏等組件提前關(guān)閉而不影響應(yīng)用程序正常工作的問題。其實(shí)現(xiàn)機(jī)制是在Linux正常的休眠狀態(tài)基礎(chǔ)上增加了一個early suspend狀態(tài),這個狀態(tài)可以休眠需要提前休眠的設(shè)備組件,達(dá)到一定的節(jié)能效果。

  Wake Lock機(jī)制實(shí)質(zhì)上是一個鎖機(jī)制。系統(tǒng)在進(jìn)入休眠狀態(tài)前會檢測這個鎖,如果應(yīng)用程序事先申請了一個wake lock,則系統(tǒng)就認(rèn)為此次休眠條件不成立,拒絕此次休眠要求。Android系統(tǒng)設(shè)計了兩種類型的wake lock,一種是WAKE_LOCK_SUSPEND(阻止系統(tǒng)進(jìn)入休眠狀態(tài)),一種是WAKE_LOCK_IDLE(阻止系統(tǒng)進(jìn)入空隙狀態(tài))。同時還可以設(shè)定應(yīng)用程序擁有wake lock的時間機(jī)制,時間到就會自動釋放該鎖。這使得Wake Lock機(jī)制可以靈活應(yīng)對各種復(fù)雜的場合。

  圖3為Android系統(tǒng)的休眠流程。

003.jpg

3 非便攜式產(chǎn)品功耗問題的不足及應(yīng)對方案

  作為基于PC設(shè)備發(fā)展起來的操作系統(tǒng),Linux操作系統(tǒng)目前已經(jīng)成功應(yīng)用在ARM、MIPS等多種架構(gòu)處理器平臺下,衍生出種類繁多的產(chǎn)品形態(tài)。由于各種產(chǎn)品形態(tài)功能、要求各不相同,Linux操作系統(tǒng)無法提供一種“大而全”的解決方案。這就需要產(chǎn)品開發(fā)者根據(jù)自己開發(fā)的產(chǎn)品的特殊要求和功能,在標(biāo)準(zhǔn)Linux系統(tǒng)平臺上,通過類似于前文所述Android系統(tǒng)的節(jié)能解決方案,提出自己的解決方案。

  本文以作者開發(fā)的一款非便攜式產(chǎn)品——數(shù)字樓宇對講設(shè)備為例進(jìn)行闡述。該數(shù)字樓宇對講設(shè)備以韓國三星公司生產(chǎn)的S5PV210(ARM Cortex-A8內(nèi)核)作為主處理器芯片,搭配Linux2.6.35.7操作系統(tǒng)。該類產(chǎn)品按安裝位置和產(chǎn)品形態(tài)不同,可以分為室內(nèi)機(jī)、梯口機(jī)、圍墻機(jī)和管理機(jī)等。功能上以室內(nèi)機(jī)為例,室內(nèi)機(jī)安裝于用戶室內(nèi),可以響應(yīng)梯口機(jī)、管理機(jī)的以太網(wǎng)呼叫,實(shí)現(xiàn)開鎖功能;也可以呼叫其他室內(nèi)機(jī)、管理機(jī);本機(jī)還可以實(shí)現(xiàn)多種類似平板電腦的功能供用戶休閑娛樂使用。

  室內(nèi)機(jī)作為一種典型的長期供電設(shè)備,在實(shí)際使用環(huán)境中大部分時間都是空閑的,如果不采取一種良好的節(jié)能措施,勢必造成能源的浪費(fèi)。如果采用標(biāo)準(zhǔn)Linux的節(jié)能方案,則會帶來以下問題:S5PV210不支持WOL(Wake On Lan)功能,即休眠后無法通過網(wǎng)絡(luò)喚醒設(shè)備。

  為了解決這個問題,需要對Linux標(biāo)準(zhǔn)節(jié)能方案進(jìn)行改造。為了支持網(wǎng)絡(luò)喚醒功能,需要在系統(tǒng)休眠狀態(tài)下保持網(wǎng)絡(luò)芯片正常工作,保持應(yīng)用程序?qū)W(wǎng)絡(luò)響應(yīng)的線程不休眠,這樣才能響應(yīng)其他設(shè)備通過網(wǎng)絡(luò)進(jìn)行的呼叫。如要保持線程的正常工作,則CPU也必須處在工作狀態(tài)。以以上需求為基本出發(fā)點(diǎn),修改Linux標(biāo)準(zhǔn)節(jié)能方案,如圖4所示。

004.jpg

4 結(jié)論

  通過對Linux的標(biāo)準(zhǔn)節(jié)能流程進(jìn)行改造,那些非便攜式產(chǎn)品也可以在具體的使用場合實(shí)現(xiàn)節(jié)能的目標(biāo)。由于基于Linux系統(tǒng)的產(chǎn)品種類繁多,各自都有不同的功能和節(jié)能目標(biāo),因此需要工程師深入了解Linux標(biāo)準(zhǔn)節(jié)能流程,同時還要對節(jié)能目標(biāo)有清晰的認(rèn)識,才能達(dá)到預(yù)期的節(jié)能效果。

參考文獻(xiàn)

  [1] Hewlett-Packard Corporation, Intel Corporation,Microsoft Corporation, et al. Advanced configuration and power interface specification,Revision 5.0a[EB/OL].(2013-11) [2014-07-01]. http://acpi.info/spec.htm.

  [2] Corbet J, Rubini A,Greg K H. Linux設(shè)備驅(qū)動程序(第三版)[M].魏永明 , 耿岳 , 鐘書毅, 譯.北京:中國電力出版社,2006.

  [3] Google Corporation. Android power manager, Android 4.4 r1 [EB/OL].(2014-07)[2014-07]. http://developer.android.com/ intl/zh-cn/reference/android/os/PowerManager.html#.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。