鐵路交通信息系統(tǒng)PDA的低功耗設(shè)計
嵌入式系統(tǒng)開發(fā)中除了硬件低功耗措施外,也可以從軟件方面來設(shè)計。嵌入式系統(tǒng)軟件低功耗措施一般涉及到處理器工作狀態(tài)間的切換、應(yīng)用模塊軟件算法的選擇和系統(tǒng)整體的數(shù)據(jù)調(diào)度三個方面。
(1)處理器工作狀態(tài) 便攜式系統(tǒng)工作過程中,處理器并不是任何時候都一直忙于運(yùn)行,尤其是PDA來產(chǎn)品。如今的嵌入式處理器(包括EP7211)一般都為應(yīng)用開發(fā)提供了三種工作狀態(tài):運(yùn)行、空閑和休眠。大量的實際使用表明,更多情況下,大部分時間里系統(tǒng)是處在休眠狀態(tài)的,一旦獲得工作信號,會迅速切換到工作狀態(tài)。當(dāng)系統(tǒng)在工作狀態(tài)下一定時間內(nèi)沒有獲得下一次需要處理的信號時,則應(yīng)該自動切空閑或者休眠狀態(tài)。因為在不同的工作狀態(tài),處理器內(nèi)部工作電路有所變化,功耗大小差別較大。 本PDA系統(tǒng)采用的ARM處理器,在不同工作條件和狀態(tài)下的功耗哪表2所列。
表2 名 稱頻率/MHz 消耗電流最大值/mA 條 件 休眠狀態(tài) 300μA 32kHz時鐘晶振工作,I/O口處于禁止 空閑狀態(tài) 18 6 晶振都在工作,LCD刷新處于激活狀態(tài),CPU是靜態(tài)的 空閑狀態(tài) 36 12 同上 運(yùn)行狀態(tài) 18 20 整個系統(tǒng)處于激活狀態(tài),正在執(zhí)行程序 運(yùn)行狀態(tài) 36 40 同上注:直流供電電壓2.5V 從表2中明顯看出,處理器不同條件和狀態(tài)下的功耗參數(shù)大小的差別。在18MHz頻率下,運(yùn)行功耗(20mA)是空閑功耗(6mA)的近4倍,空閑功耗又是休眠功耗300μA的20倍。我們的目的是在不影響系統(tǒng)正常運(yùn)行的過程中,盡最大可能使系統(tǒng)處在空閑休眠狀態(tài)來降低系統(tǒng)功耗;因此,我們應(yīng)該通過預(yù)測系統(tǒng)執(zhí)行過程的措施來切換處理器的工作狀態(tài)。分析式(1)可知,我們又不能頻繁過快地進(jìn)行處理器狀態(tài)切換,中間要留有一定的穩(wěn)定時間間隔。 XGW軟件開發(fā)平臺采用事件消息驅(qū)動機(jī)制。消息采用查詢方式,能夠?qū)崟r響應(yīng)外部中斷。在消息循環(huán)過程中,系統(tǒng)需要查詢消息隊列:當(dāng)有消息出隊時,處理器在運(yùn)行狀態(tài)處理這個消息所對應(yīng)的事件;如果一這時間間隔(如2s)消息隊列一直是空,系統(tǒng)預(yù)測在最近相當(dāng)長的時間內(nèi)不會有事件產(chǎn)生,軟件編程措施把處理器從運(yùn)行狀態(tài)切到空閑狀態(tài);如果系統(tǒng)在更長的時間內(nèi)(如20s)沒有事件產(chǎn)生,則系統(tǒng)預(yù)測用戶需要自動軟關(guān)機(jī),此時處理器進(jìn)入休眠狀態(tài)。在休眠狀態(tài)下,處理器能夠響應(yīng)實時時鐘匹配中斷、傳呼接收中斷以及復(fù)位按鍵;一旦系統(tǒng)捕獲到這類信號,則迅速轉(zhuǎn)入到正常工作狀態(tài)。處理器在運(yùn)行狀態(tài)和空閑狀態(tài)間的切換間隔是必需的,如果切換速度過快,并不能達(dá)到降低系統(tǒng)功耗的目的。 為了縮短處理器從空閑或者運(yùn)行狀態(tài)切換到休眠狀態(tài)的時間,系統(tǒng)同時提供了用戶手動軟關(guān)機(jī)措施,即通過觸筆直接點擊屏幕某一指定區(qū)域來實現(xiàn)。 本PDA系統(tǒng)中,ARM7處理器三種工作狀態(tài)的轉(zhuǎn)換如圖3所示。
圖3中各數(shù)字含義如表3所列。
表3 序 號狀態(tài)轉(zhuǎn)換條件 1、3 系統(tǒng)20s內(nèi)一直不能捕捉到消息或者人為點擊屏幕某一指定區(qū)域 2 實時時鐘匹配中斷、傳呼中斷、按鍵喚醒 4 運(yùn)行狀態(tài)下系統(tǒng)2s內(nèi)一直不能捕捉到消息 5 產(chǎn)生中斷信號、捕捉到消息事件。
(2)軟件算法的選擇 在應(yīng)用程序編程實現(xiàn)過程中,求解同一個問題,可以有許多不同的算法。評價一個算法好壞的常用參數(shù)是算法時間復(fù)雜度、算法空間復(fù)雜度和算法的易理解編碼和調(diào)試性。算法時間復(fù)雜度定義為算法的時間耗費,即算法所求解問題規(guī)模(求解問題的輸入量)n的函數(shù)。時間復(fù)雜度一般用O(n)來表示,當(dāng)n達(dá)到一定規(guī)模時,時間復(fù)雜度越小,執(zhí)行效率越高,招待時間越短,系統(tǒng)功耗越低。算法空間復(fù)雜度定義為該算法所耗費的存儲空間,它也是問題規(guī)模n的函數(shù)。 我們總是希望選用一個所占存儲空間小、運(yùn)行時間短、其它性能也好的算法。然而實際上很難做到十全十美,原因是上述要求有時相互抵觸, 如節(jié)約算法執(zhí)行時間需要以犧牲一定的存儲空間為代價,反之亦然。因此,我們只能根據(jù)具體情況有所側(cè)重。在本PDA系統(tǒng)中具體硬件配置時,CPU工作頻率不高,存儲空間運(yùn)行不大;但應(yīng)用程序數(shù)據(jù)量大,而且某些應(yīng)用程序如辭典互譯、時刻表檢索時數(shù)據(jù)運(yùn)算量也大。 如要在本PDA系統(tǒng)中實現(xiàn)英漢辭典互譯,首先會想到采用順序檢索法。這種算法對用戶輸入詞匯排列順序沒有要求,編程實現(xiàn)和理解起來都比較簡單,其算法時間復(fù)雜度為O(n)=n。當(dāng)n值較小時,這是可以允許的;但是當(dāng)系統(tǒng)詞匯量近10 000個時,算法檢索效率不高,表現(xiàn)為當(dāng)詞語位置偏后時系統(tǒng)檢索延遲過大。為了提高檢索效率,滿足一定的系統(tǒng)反應(yīng)實時性要求,我們采用了有序表二分搜索算法,其算法時間復(fù)雜度O(n)=log2n。假設(shè)n=16 384=2 14已經(jīng)超出系統(tǒng)的數(shù)據(jù)規(guī)模(10 000詞左右)。二分檢索所需要的最壞檢索次數(shù)是14次;但是對于順序檢索而言,在最壞查找的情況下,檢索次數(shù)是16 384次,故效率提高了16 284/14=1170倍。這個數(shù)目是相當(dāng)可觀的,而且,即使系統(tǒng)數(shù)據(jù)規(guī)模進(jìn)一步擴(kuò)大,二分檢索表現(xiàn)出來的所增加的檢索次數(shù)也是很小的。辭典互譯實現(xiàn)二分檢索所要做的附加工作,就是將原來無序的辭典數(shù)據(jù)文件轉(zhuǎn)換成有序的辭典數(shù)據(jù)文件。不過,這個轉(zhuǎn)換工作可以在PC機(jī)上完成從而減輕本嵌入式系統(tǒng)的負(fù)荷。辭典數(shù)據(jù)排序和檢索過程中英漢辭典依據(jù)ASCII碼進(jìn)行,漢英辭典根據(jù)漢字的區(qū)位碼進(jìn)行。本PDA系統(tǒng)的民航時刻表、鐵路時刻表等應(yīng)用模塊,也都涉及到了算法選擇問題。
(3)數(shù)據(jù)調(diào)度 在許多應(yīng)用程序中,存儲器訪問是功耗的主要部分。有資料表明,內(nèi)存?zhèn)鬏斒瞧駷橹笴PU完成的操作中代價最高的:一次內(nèi)存?zhèn)鬏斚牡哪芰渴且淮渭臃ㄟ\(yùn)算的33倍多。優(yōu)化能量消耗的最大收益之一,來源于合理組織內(nèi)存中的數(shù)據(jù)和指令:一般措施是盡量做到數(shù)據(jù)的寄存器訪問和緩存訪問。 隨著存儲技術(shù)理論的發(fā)展和工藝水平的提高,現(xiàn)在存儲器體系結(jié)構(gòu)一般都是三級,而且支持虛擬存儲技術(shù),如圖4所示。
處理器進(jìn)行數(shù)據(jù)訪問時,離CPU越近的地方,數(shù)據(jù)存取速度越快,功耗越低。本PDA系統(tǒng)中,由于Flash存儲器(作為數(shù)據(jù)存儲器件)寫操作的特殊性(以扇區(qū)大小為單位、執(zhí)行時間長、執(zhí)行功耗大),要求盡量少地進(jìn)行?;谶@種策略,本PDA系統(tǒng)在數(shù)據(jù)安排方面采取了以下一些優(yōu)化措施: ①LCD幀緩存的安排。EP7211內(nèi)置38 400字節(jié)大小的RAM空間,LCD分辨率是320%26;#215;240,每像素4級灰度用2比特位表示,故顯存大小為320%26;#215;240%26;#215;2/8=19 200字節(jié),被安排在內(nèi)置RAM空間的前19 200字節(jié)。這樣安排,加快了顯示速度,減少了處理器訪問片外SRAM空間。 ②個人傳呼信息、公共傳呼信息接收頻度大,不需要永久存儲;傳呼接收過程需要開臂兩塊緩沖區(qū),這些空間都被安排在內(nèi)部RAM后19 200字節(jié),其目的是減少了CPu對片外SRAM的訪問。 ③部分系統(tǒng)信息資源,如字庫信息,在系統(tǒng)啟動后直接從Flash存儲區(qū)拷貝到固定位置的SRAM區(qū),這樣字符輸出時直接從內(nèi)存讀取數(shù)據(jù),而不需要訪問Flash。 ④為減少Flash寫操作執(zhí)行次數(shù),在電話簿、記事本、日程以及系統(tǒng)設(shè)定等編輯修改后,首先改動的信息是在內(nèi)存中直接保存,等到用戶是退出當(dāng)前整個應(yīng)用模塊時,才進(jìn)行一個性Flash寫操作。 ⑤在進(jìn)行復(fù)雜數(shù)據(jù)查找過程中,為減少數(shù)據(jù)訪問量,可以通過建立若干級索引表方式加快數(shù)據(jù)檢索速度。如在辭典文件的詞匯排序過程中,同時建立了每個單詞位置的數(shù)據(jù)索引,而且作為索引文件定改Flash。在查找過程中,索引項的存在能夠減少檢索次數(shù),從而快速確定單詞起始位置以及整個單詞項目長度,供顯示輸出。不過在增加索引時,也會增加一定的空間復(fù)雜度。 另外,系統(tǒng)還可以通過代碼壓縮減少總線上的傳輸量;編譯器優(yōu)化,消除冗余代碼;消除編程中的遞歸過程調(diào)用、減少函數(shù)調(diào)用的開銷;有效使用寄存器等措施來降低系統(tǒng)功耗。
4 低功耗設(shè)計綜合闡述
以上分別從硬件和軟件兩方面闡述了嵌入式系統(tǒng)開發(fā)中低功耗設(shè)計的一些原則及在本產(chǎn)品中的某些具體體現(xiàn)。本PDA產(chǎn)品除了提代外接電源供電電路,同時還提供內(nèi)置可充鎳氫雙電池供電系統(tǒng)。設(shè)單節(jié)電池容量是500mA,則系統(tǒng)待機(jī)時間是1000小時/8=125小時,基本上可以滿足實際應(yīng)用的需要。
評論