楊煉,牟倫榮,夏軍
(1.重慶郵電大學 通信與信息工程學院,重慶400065;2.重慶重郵信科通信技術有限公司)
對于移動通信終端而言,終端的能耗問題既是系統性能的關鍵因素,也是用戶認可度的關鍵指標,已經成為評估終端性能的重要指標之一,移動終端省電機制的研究與實現變得更加迫切。同時,伴隨著通信產業的不斷發展,融合了拍照、攝像、音樂、游戲等多功能的智能手機應需而生并得以快速發展。同傳統手機相比,智能手機的優勢非常明顯,同樣,功耗問題也是成倍增長。工信部電信研究院公布的手機行業運行情況顯示,智能手機市場占有率在50%以上,也就是說智能機已經成為主流產品。但對于手機終端低功耗技術的研究仍局限于功能單一的通話機,所以必須加快智能手機終端低功耗技術的研究,以解決隨之而來的功耗問題。同時,支持多功能應用的基礎上在智能手機終端為保證良好的用戶體驗通常采用雙操作系統架構,而其他普通移動終端多以單個OS為控制硬件設備和高層軟件架構的搭建提供支持服務,因此不乏有基于簡單的單OS終端的省電研究和實現,卻缺少多OS低功耗技術的研究。本文基于單芯片雙操作系統智能手機終端,提出一種雙操作系統間的省電方案。
智能手機作為一種便攜式和移動性的終端設備,需要強大的處理器和硬件來支撐復雜的操作系統和應用。智能手機硬件架構主要有基帶(Base Band)加應用處理器(Application Processor)的雙CPU架構和基于虛擬化技術的單CPU架構。基帶處理器實現手機的呼叫/接聽等基本電話功能,應用處理器專用于處理高負荷的多媒體應用。這消除了由新應用的軟件缺陷引起基帶處理器失效的風險。以模塊化架構的形式,應用處理器構成一個子系統,并與基帶處理器隔離開來。
本文涉及的智能手機采用基于虛擬化技術的單CPU架構,手機虛擬化技術方案需采用VM(Virtual Machine)。VM對上層軟件架構可以看成一個虛擬的硬件系統,將真實的CPU模擬成兩個虛擬的CPU并行運行,允許一個平臺同時運行兩個操作系統,兩個虛擬CPU上分別運行一個分時操作系統(Android)和一個實時操作系統(RTOS),如圖1所示。

圖1
基帶處理器和應用處理器之間的通信靠虛擬管道傳遞實現。本方案硬件平臺芯片中集成了一顆ARM1176JS內核,兩顆ZSP800內核、一顆CEVA公司的DSP內核以及GSM&TD專用加速器,用于實現TD與GSM基帶功能;同時集成LCD控制器、Camera控制器、2D加速器、Codec音頻解碼器,用于實現多媒體功能。
在評估手機功耗特性方面,主要包括手機待機狀態最低電流值和手機工作狀態電流值。由于篇幅有限,本文僅針對如何降低最低待機狀態電流值來進行設計與實現。
在智能終端省電軟件控制過程中,最有效的方式是對系統的電壓和時鐘頻率進行有效的低功耗控制管理。本方案采用目前已經成為系統設計主流的低功耗設計策略DPM(動態功耗管理)。DPM設計思想簡單來說,就是系統一旦空閑則立即通過關閉時鐘和關閉電源兩種方式將該設備切換到低功耗狀態。主要通過在操作系統上搭建一個用于功耗管理的軟件模塊來實現。由于本方案中兩個OS同時并發運行于單芯片的ARM1176EJS子系統內,硬件資源分配遵循原則是“基帶子系統專屬使用的由RTOS控制,應用子系統專屬使用的由Android控制,共用資源由RTOS控制”??紤]運行于RTOS的基帶子系統對任務實時性的苛刻要求,設計以基帶子系統DPM軟件模塊為主控制模塊,應用子系統PM軟件模塊為從控制模塊。同時,DPM軟件模塊主要負責基帶各模塊和與應用子系統公用模塊的狀態管理、約束判斷、省電模式設置等任務。PM軟件模塊主要負責向DPM請求睡眠,醒鎖機制,外設(例如鍵盤、背光燈、Camera等)狀態管理等。其總體軟件架構如圖2所示。
在應用子系統中,PM模塊動態地收集應用系統的運行情況,配置基帶的DPM,使其滿足應用系統的省電要求和針對Android專屬模塊采取使用開啟、未使用關閉的原則控制。
在基帶系統中,DPM模塊為省電工作的主要承擔者,其核心通過收集系統的信息作出必要的判決,包括PM收集的Android系統的信息,決策睡眠類型、睡眠時間并通過調用硬件驅動對相應模式下的電源域狀態和時鐘域狀態控制。

圖2
(1)應用子系統狀態
應用子系統共有三種狀態,躍遷關系如圖3所示。
work狀態:有任務在執行的工作狀態,可向suspend和idle狀態躍遷。
suspend狀態:當處于 work狀態時,向/sys/power/state里寫“mem”時系統躍遷到suspend狀態,凍結進程讓外設進入休眠狀態。當喚醒事件產生則返回work狀態。
idle狀態:當所有任務運行完畢系統會從work進入idle狀態;當有喚醒事件產生時則返回work狀態。
(2)基帶子系統狀態
基帶子系統共有三種狀態,躍遷關系如圖4所示。
sleep狀態:省電睡眠模式,根據具體機制分為多種睡眠模式類型。
idle狀態:指一個抽象的概念,僅僅是基帶從work狀態到sleep狀態的過渡。
work狀態:指基帶側有任務或中斷在執行。

圖3

圖4
本方案中,系統省電入口設置在基帶OS中,當基帶進入idle后,先查詢應用子系統狀態,用以控制是否可以進入省電流程。如果狀態為work,則將虛擬機切換到應用子系統之后,Linux進行任務調度。若此時Linux任務完成則進入應用idle流程,若此時有suspend事件產生,就會進入應用suspend流程。凍結進程及讓外設進入休眠狀態這一系列低功耗設置工作后,應用子系統通過虛擬管道(VPIPE)向基帶發送事先約定好的睡眠命令,基帶收到此VPIPE命令后設置應用子系統狀態為空閑。當基帶再次進入idle后,查詢應用子系統狀態,如果為空閑,基帶子系統中低功耗模塊啟動睡眠流程,基帶睡眠流程采用ARM主控的方式來控制芯片內部模塊以及外設模塊在相應的時隙進入省電模式。被作為modem使用的基帶子系統省電控制主要分為4部分:物理層、協議棧、操作系統和硬件驅動。其中物理層主要負責由協議棧規劃時間點的數據測量任務,協議棧主要負責計算出下一個DRX(非連續接收)測量時間點。此時,OS沒有任務調度或者中斷處理,就判斷約束條件并根據協議棧計算的時間點和系統定時器時間點進行比較,共同決定進入何種模式睡眠,再進行數據保護、喚醒設置等一系列系統保護和數據保護動作,然后調用硬件驅動,對各個模塊省電控制予以實現。
睡眠喚醒后,置應用子系統狀態為工作,并進行定時器補償。當基帶再一次進入idle,則切換到Linux。若檢測沒有中斷產生等待處理,則再一次發送帶有sleep指令的VPIPE命令,通知基帶進入睡眠,如此反復。當需要喚醒應用時,清除睡眠標志,發送VPIPE命令給應用。當基帶進入idle后,切換到Linux,Linux檢測到中斷pending,則進行相應處理。其省電狀態躍遷的主要流程如圖5所示。
在智能手機設計中,省電設計是必須面對的問題。其原因在于,嵌入式系統被廣泛應用于便攜式和移動性較強的手持產品中,而這些產品不是一定都有充足的電源供應,往往靠電池來供電,電池容量是現在技術的一個瓶頸,所以只能從降低功率消耗來達到省電效果,盡可能地延長電池的使用時間。
本文基于單芯片雙操作系統智能手機終端,提出一種雙操作系統終端間的省電方案架構設計,通過降低功耗來達到省電目的,并在Agilent 66319B電源為智能手機終端提供穩定5V電壓的情況下通過電流值的降低驗證本方案的有效性。圖6為沒有省電方案的智能手機終端在5V穩定電壓下24s內4 095次電流的采樣值,平均電流為204.488mA。需要說明的一點是,這里的沒有省電方案僅指本文所提出的方案,對于部分省電由硬件驅動控制的外設仍保留;圖7為有省電方案的智能手機終端在5V穩定電壓下24s內4 095次電流的采樣值,平均電流為89.327mA。省電亦即降低功耗,在電壓值保證不變的情況下降低電流值即降低功耗,說明通過省電方案能有效地降低終端的功耗,方案是可行的。

圖5
本文從操作系統層級提出一種省電設計方案,有效地降低了智能手機功耗,延長了待機時間。該方案的實現可大部分用于相似硬件平臺的嵌入式設備中,對省電技術的發展具有一定的理論意義和現實意義。

圖6

圖7
[1]智能手機的硬件體系結構[DB/OL].(2008-06-13)[2012-12].http://tech.c114.net/174/a322489.html.
[2]蘇健.Android智能手機平臺電源管理技術[J].微處理機,2011(5).
[3]T Simunic,L Benini,P W Glynn,et al.Dynamic power management for portable systems[C]//Proceedings of the International Conference on Mobile Computing Networking,Boston,August,2000:11-19.
[4]G Goossens,P Paulin,J Van Praet,et al.Embedded software in real-time signal processing systems:design technologies[J].Proceedings of the IEEE,1997,85(3):36-454.
[5]陳向群,郭耀.操作系統電源管理研究進展[J].計算機研究與發展,2008(5):817-824.
[6]李晗.TD-SCDMA系統中終端省電技術的研究[J].電信工程技術與標準化,2010(4):69-71.