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

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

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

0 引言

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

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

1 硬件能耗分布情況

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

001.jpg

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

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

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

  Linux操作系統(tǒng)設計了兩種標準來解決節(jié)能問題,一種是Advanced Power Management(APM),另外一種是Advanced Configuration and Power Interface (ACPI)。這兩種方案都是針對X86架構上存儲在Bios芯片中的Linux電源管理機制而設計的。由于嵌入式系統(tǒng)不存在Bios芯片,目前的解決方法是模擬ACPI狀態(tài)的方式實現(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)具體的操作實現(xiàn)過程是同Linux內核框架、驅動模型(LDM)密切相關的,正常的睡眠實現(xiàn)過程如圖2所示。

002.jpg

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

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

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

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

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

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

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

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

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

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

003.jpg

3 非便攜式產品功耗問題的不足及應對方案

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

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

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

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

004.jpg

4 結論

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

參考文獻

  [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設備驅動程序(第三版)[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#.


此內容為AET網站原創(chuàng),未經授權禁止轉載。