新聞中心

EEPW首頁 > 消費電子 > 設計應用 > 嵌入式系統(tǒng)的低功耗軟件方案

嵌入式系統(tǒng)的低功耗軟件方案

——
作者:西北工業(yè)大學 電子信息學院 劉洲洲 張捷 時間:2006-10-14 來源:電子產(chǎn)品世界 收藏

摘要: 本文將討論嵌入式產(chǎn)品如何在基礎上利用軟件提高產(chǎn)品待機能力,提高。

關鍵詞: ;;

引言

是嵌入式電子產(chǎn)品必須具備的一個關鍵特性,在硬件技術飛速發(fā)展和日益完善的時候,已經(jīng)很難有功耗方面的突破了。所以現(xiàn)在降低產(chǎn)品功耗主要是依靠軟件來處理,必須依靠軟件讓整個系統(tǒng)在各個時候電流達到最小。不管是操作系統(tǒng)、BIOS控制程序還是外設驅動程序,這些程序將決定了最終產(chǎn)品的功耗水平,因此在開發(fā)時必須加以考慮。本論文將以智能電話為例,介紹一種通過軟件降的方法,可供嵌入式設計工程師們參考。實現(xiàn)省電降低功耗的方法有很多,本文不可能面面俱到,將主要介紹軟件程序如何控制物理層進行省電。

具體實現(xiàn)措施

系統(tǒng)描述及設計思想

目前國內智能電話的數(shù)字多媒體解決方案一般通過基于ARM7等內核的基帶嵌入式處理芯片外接多媒體處理芯片來實現(xiàn)。嵌入式處理器是硬件系統(tǒng)的核心,運行功耗占系統(tǒng)功耗的大部分。目前,嵌入式處理芯片一般采用RISC體系結構,通過簡化指令設計、引入流水線技術、指令預取、大量寄存器操作和高速緩存等技術提高運行效率,并采用低電壓工作模式以降低運行功耗。嵌入式處理芯片一般為應用開發(fā)提供了三種工作模式:運行模式(Run)、空閑模式(Idle)和休眠模式(Standby)。運行模式即正常工作模式,CPU全速運行;空閑模式時CPU是靜態(tài)的,但LCD刷新電路和晶振都工作。在不同運行模式下,處理器工作時功耗數(shù)值差別較大;以Cirrus Logic公司EP7211(ARM7核)嵌入式處理器為例,開發(fā)手冊中寫到,在18MHz工作頻率下,運行時消耗電流是20mA,空閑時消耗電流是6mA,而休眠時消耗電流300mA。

本嵌入式產(chǎn)品系統(tǒng)(智能電話)中的基帶嵌入式處理器芯片將采用展訊的SC6600芯片平臺,多媒體芯片則采用廣達的QCP1880芯片平臺,音頻編解碼芯片采用Wolfson 8750芯片,LCD采用HIMAX8309。作為手機產(chǎn)品,電池一般在800~1200mA時左右,待機要求80小時以上,這就要求系統(tǒng)在待機狀態(tài)時候的電流在10mA以下,關機后的電流在mA級以下。SC6600在睡眠 模式下一般有3~5mA左右電流,QCP1880在睡眠模式下一般會有10mA左右電流,斷電后在200mA左右,音頻部分在空閑模式大概有270mA,在待機時SC6600的3~5mA固有電流沒辦法省掉,所以QCP1880必須斷電。

低功耗設計的基本思想是:讓系統(tǒng)各個部分在需要的時候才處于工作狀態(tài),其他時候處于各部分的省電狀態(tài)。大部分的嵌入式處理器都具有正常工作模式和省電工作模式,最常用的是空閑模式,此時處理器內核指令執(zhí)行部分關閉,時鐘頻率降低,空閑模式比處理器執(zhí)行指令時的功耗要小得多。 空閑模式一個主要特點是其進入退出基本上不需要額外開銷,通常一個或幾個指令周期能完成。外設部分硬件一般也有省電處理設計,軟件主要是控制外設在沒有工作時處于省電狀態(tài),甚至關掉整個外設,在需要時再掛上。

功能設計

在大體上,本系統(tǒng)省電處理主要分為三塊:基帶芯片(SC6600),普通外設(能很方便地在使用時打開,不用時關掉的設備,如LCD等),多媒體芯片(QCP18800)。

*基帶芯片(SC6600)的處理:
由于很多中斷都能把處理器從空閑模式中喚醒,所以采用智能等待這種模式。讓處理器平常處于空閑模式,把隨機事件和實時要求比較高的都掛在中斷上,當事件發(fā)生處理器能很快被喚醒,處理這些事件。其他有規(guī)律的事件和實時性要求不高的用定時器去進行掃描。這種等待機理應用很普遍,現(xiàn)今大多數(shù)PDA和智能電話都是由具有空閑模式功能的處理器和操作系統(tǒng)控制,處理器只有在有用戶操作或有任務處理時才處于正常工作狀態(tài),其他時候都是處于空閑(SLEEP)狀態(tài),這樣最大程度提高電源效率。例如,在用手機看電子書時,處理器處于空閑狀態(tài),當用戶翻頁或其他操作(按鍵、觸屏等)時,處理器將被喚醒處理相應的操作,處理完又進入空閑狀態(tài)。

對于CPU的處理,后臺起一個線程監(jiān)控系統(tǒng)CPU的使用情況,當CPU處于空閑狀態(tài)時,且系統(tǒng)其他模塊也允許CPU 睡眠的時候,CPU立刻進入睡眠模式。

基帶芯片的處理流程圖見圖1。



圖1 基帶芯片的處理流程

*普通外設的省電處理:
除LCD 和背光外,其他外設在CPU進入睡眠模式之前被關掉。LCD和背光用做用戶的操作界面需要的是友好性,所以讓用戶可以設置。在用戶設定的時間用完后自動熄滅。其他外設如音頻模塊,在沒有聲音時就關閉,需要播放聲音時再打開。音頻模塊本來有睡眠模式,但其電流沒達到要求,所以斷開了其電源讓它進入斷電模式,這里有個缺點是,以前初始化和后來設置好的參數(shù)就會丟失,需要在打開初始化時重新設置(浪費些資源記錄它的狀態(tài))。LCD及背光處理流程圖見圖2。



圖2 LCD及背光處理流程圖

*關于多媒體芯片(QCP1880):
(1) VDD( Power for Operation Mode Module);(2)IOVDD (Power for All IO Module);(3) VDD_ON( Power for ByPass Mode Module)。說明:1.切斷VDD和保持PDEN為低,QCP1880耗電將低于200mA。2. QCP1880進入IDLE(空閑)狀態(tài),耗電在10mA左右。3. QCP1880進入最省電狀態(tài)后,其GPIO口不能保持。如果進入這種狀態(tài)后,要讓GPIO口保持高,則外部要通過上拉電阻接到IOVDD,如果要GPIO口保持高低,則外部要通過下拉電阻接到地。4.切斷VDD和保持PDEN為低后,QCP1880里的程序將會丟失,重新裝載的時間比較久(500ms左右)。

在應用方面芯片主要功能是:MP3/MIDI/AAC/AMR/MP4回放;AMR、MP4錄制;拍照和圖片回放;USB/UDISK;GPIO接口;CODEC(聲卡驅動);SD卡文件系統(tǒng)。

該芯片在待機時,電流為10mA,切斷主電源電流能下降到mA級。工作時,電流較大,且根據(jù)功能的不同而不同。多媒體芯片能夠自動到待機狀態(tài)。不能達到要求,必須要讓其進入斷電狀態(tài)。又因為涉及模塊比較多,所以不能簡單的直接關閉QCP1880。針對于本不能隨意切斷QCP 電源的原因,所以采用了查詢的方法。即在CPU進入睡眠模式之前會查詢QCP1880的狀態(tài),當LCD和背光都是熄滅的狀態(tài)下,會切斷QCP1880的主電源。(因為LCD部分電流較大,且頻繁下載QCP的效率低下,所以在LCD和背光都亮時不會切斷QCP的主電源)。



圖3  QCP1880的電源由三組電源組成

在喚醒后同樣有3類,其中喚醒CPU和普通外設的流程比較簡單,所以略過。喚醒QCP存在一個下載的過程(切斷電源時,QCP內部的代碼已經(jīng)丟失),如下載完全功能的版本需要的時間比較長,在一些對時間要求嚴格的地方有些問題(如按鍵時指示燈的響應,指示燈是用QCP1880控制的)。這里采用的是先下載一個比較小的版本,完成那些需要快速響應的操作,然后再下載完全功能的版本,當然這跟省電的關系不大,只是省電引起的一個小問題。值得注意的是此處需要QCP在切換版本時GPIO能保持不變。喚醒后,系統(tǒng)一般會先調用QCP GPIO的功能,每個QCP 的API都有調用QCP_LOCK();所以在這里進行裝載工作。在處理上,系統(tǒng)也分了3類來處理這些外設,其中基帶芯片部分和一般外設一類,LCD處理一類,QCP芯片部分處理一類?;鶐酒糠值奶幚砗蚅CD的處理完全獨立,LCD會影響QCP芯片的處理。QCP的處理流程圖見圖4。



圖4 QCP的處理流程圖

部分接口函數(shù)詳細代碼設計

由于通過控制各個模塊的時鐘頻率以及電源開關可以達到省電效果,比如說SD存儲器的開關,不用SD存儲器的時候就可以關掉,或是不需要高速存取的時候,就可以把SD存儲器的頻率降低,以求省電。下面以LCD模塊的代碼為例來說明LCD省電的詳細思路。其他模塊的代碼設計思想與其一致,這里不再贅述。

#define POWER_SAVING_TIME (60*1000)  // 間隔時間
#define LCD_CONTROLLER_POWER 0x22400000   //LCD控制寄存器的地址
extern unsigned  int  System_Time;  //全局變量存儲系統(tǒng)時間
unsigned  int  Last_Keystroke_Time;  //最后的觸發(fā)事件的時間
void Sys_SetAlarm(unsigned int T);  //設置當前任務時間
void User_Press_A_Key(void)   //當有外部事件觸發(fā)將調用此函數(shù)
{ if(*(unsigned int *)(LCD_CONTROLLER_POWER) == 0) {
  *(unsigned int *)(LCD_CONTROLLER_POWER) = 1;
 }
}
Void User_Input_Task(void)  //當有觸發(fā)事件到來執(zhí)行該函數(shù)
{
 static unsigned int  previous_key_time;  
previous_key_time = Last_Keystroke_Time;
while(1) {
Sys_SetAlarm(POWER_SAVING_TIME);
  if(previous_key_time == Last_Keystroke_Time) {
            /*一分鐘內沒有任何外部事件觸發(fā),將關閉LCD */
  *(unsigned int *)(LCD_CONTROLLER_POWER) = 0;
  }
  else 
previous_key_time = Last_Keystroke_Time;
  }
}

測試總結



圖5 整個多媒體芯片系統(tǒng)的轉化流程示意圖

目前在多個行業(yè)得到廣泛應用,低功耗是其性能指標之一。基于功耗實現(xiàn)設計硬件平臺后,低功耗實現(xiàn)主要從軟件方面來解決。本文基于特征及其功能實現(xiàn),采用程序優(yōu)化技術來降低功耗。經(jīng)過測試,整合多媒體芯片的無線終端平均功耗下降了50%。其中在正常待機時,電流為400mA左右,而在睡眠時降到了200mA左右;如果應用深度睡眠(關閉SC6600、QCP1880和所有設備,維持一個32kHz的時鐘)電流甚至可以降到10~20mA,完全滿足長時間待機。實驗表明,利用本軟件構架,可以對無線終端實行之有效的省電管理?,F(xiàn)已用于諸多無線移動多媒體終端項目(智能電話等),效果理想。由于限于篇幅,不再贅述。

參考文獻

1.   Mehta, R.; Owens, R.M.; Irwin, M.J.; Chen, R.; Ghosh, D. "Techniques for low energy software". Low Power Electronics and Design, 1997. Proceedings., 1997 International Symposium on , 1997 Page(s): 72 -75
2.  邵貝貝. 嵌入式應用的在線開發(fā)方法. 北京:清華大學出版社,2004
3.  劉慧銀,等. Motorola微控制器MC68HC08原理及其嵌入式應用,北京:清華大學出版社,2001



評論


相關推薦

技術專區(qū)

關閉