鐵路交通信息系統PDA的低功耗設計
嵌入式系統開(kāi)發(fā)中除了硬件低功耗措施外,也可以從軟件方面來(lái)設計。嵌入式系統軟件低功耗措施一般涉及到處理器工作狀態(tài)間的切換、應用模塊軟件算法的選擇和系統整體的數據調度三個(gè)方面。
(1)處理器工作狀態(tài) 便攜式系統工作過(guò)程中,處理器并不是任何時(shí)候都一直忙于運行,尤其是PDA來(lái)產(chǎn)品。如今的嵌入式處理器(包括EP7211)一般都為應用開(kāi)發(fā)提供了三種工作狀態(tài):運行、空閑和休眠。大量的實(shí)際使用表明,更多情況下,大部分時(shí)間里系統是處在休眠狀態(tài)的,一旦獲得工作信號,會(huì )迅速切換到工作狀態(tài)。當系統在工作狀態(tài)下一定時(shí)間內沒(méi)有獲得下一次需要處理的信號時(shí),則應該自動(dòng)切空閑或者休眠狀態(tài)。因為在不同的工作狀態(tài),處理器內部工作電路有所變化,功耗大小差別較大。 本PDA系統采用的ARM處理器,在不同工作條件和狀態(tài)下的功耗哪表2所列。

表2 名 稱(chēng)頻率/MHz 消耗電流最大值/mA 條 件 休眠狀態(tài) 300μA 32kHz時(shí)鐘晶振工作,I/O口處于禁止 空閑狀態(tài) 18 6 晶振都在工作,LCD刷新處于激活狀態(tài),CPU是靜態(tài)的 空閑狀態(tài) 36 12 同上 運行狀態(tài) 18 20 整個(gè)系統處于激活狀態(tài),正在執行程序 運行狀態(tài) 36 40 同上注:直流供電電壓2.5V 從表2中明顯看出,處理器不同條件和狀態(tài)下的功耗參數大小的差別。在18MHz頻率下,運行功耗(20mA)是空閑功耗(6mA)的近4倍,空閑功耗又是休眠功耗300μA的20倍。我們的目的是在不影響系統正常運行的過(guò)程中,盡最大可能使系統處在空閑休眠狀態(tài)來(lái)降低系統功耗;因此,我們應該通過(guò)預測系統執行過(guò)程的措施來(lái)切換處理器的工作狀態(tài)。分析式(1)可知,我們又不能頻繁過(guò)快地進(jìn)行處理器狀態(tài)切換,中間要留有一定的穩定時(shí)間間隔。 XGW軟件開(kāi)發(fā)平臺采用事件消息驅動(dòng)機制。消息采用查詢(xún)方式,能夠實(shí)時(shí)響應外部中斷。在消息循環(huán)過(guò)程中,系統需要查詢(xún)消息隊列:當有消息出隊時(shí),處理器在運行狀態(tài)處理這個(gè)消息所對應的事件;如果一這時(shí)間間隔(如2s)消息隊列一直是空,系統預測在最近相當長(cháng)的時(shí)間內不會(huì )有事件產(chǎn)生,軟件編程措施把處理器從運行狀態(tài)切到空閑狀態(tài);如果系統在更長(cháng)的時(shí)間內(如20s)沒(méi)有事件產(chǎn)生,則系統預測用戶(hù)需要自動(dòng)軟關(guān)機,此時(shí)處理器進(jìn)入休眠狀態(tài)。在休眠狀態(tài)下,處理器能夠響應實(shí)時(shí)時(shí)鐘匹配中斷、傳呼接收中斷以及復位按鍵;一旦系統捕獲到這類(lèi)信號,則迅速轉入到正常工作狀態(tài)。處理器在運行狀態(tài)和空閑狀態(tài)間的切換間隔是必需的,如果切換速度過(guò)快,并不能達到降低系統功耗的目的。 為了縮短處理器從空閑或者運行狀態(tài)切換到休眠狀態(tài)的時(shí)間,系統同時(shí)提供了用戶(hù)手動(dòng)軟關(guān)機措施,即通過(guò)觸筆直接點(diǎn)擊屏幕某一指定區域來(lái)實(shí)現。 本PDA系統中,ARM7處理器三種工作狀態(tài)的轉換如圖3所示。

圖3中各數字含義如表3所列。

表3 序 號狀態(tài)轉換條件 1、3 系統20s內一直不能捕捉到消息或者人為點(diǎn)擊屏幕某一指定區域 2 實(shí)時(shí)時(shí)鐘匹配中斷、傳呼中斷、按鍵喚醒 4 運行狀態(tài)下系統2s內一直不能捕捉到消息 5 產(chǎn)生中斷信號、捕捉到消息事件。
(2)軟件算法的選擇 在應用程序編程實(shí)現過(guò)程中,求解同一個(gè)問(wèn)題,可以有許多不同的算法。評價(jià)一個(gè)算法好壞的常用參數是算法時(shí)間復雜度、算法空間復雜度和算法的易理解編碼和調試性。算法時(shí)間復雜度定義為算法的時(shí)間耗費,即算法所求解問(wèn)題規模(求解問(wèn)題的輸入量)n的函數。時(shí)間復雜度一般用O(n)來(lái)表示,當n達到一定規模時(shí),時(shí)間復雜度越小,執行效率越高,招待時(shí)間越短,系統功耗越低。算法空間復雜度定義為該算法所耗費的存儲空間,它也是問(wèn)題規模n的函數。 我們總是希望選用一個(gè)所占存儲空間小、運行時(shí)間短、其它性能也好的算法。然而實(shí)際上很難做到十全十美,原因是上述要求有時(shí)相互抵觸, 如節約算法執行時(shí)間需要以犧牲一定的存儲空間為代價(jià),反之亦然。因此,我們只能根據具體情況有所側重。在本PDA系統中具體硬件配置時(shí),CPU工作頻率不高,存儲空間運行不大;但應用程序數據量大,而且某些應用程序如辭典互譯、時(shí)刻表檢索時(shí)數據運算量也大。 如要在本PDA系統中實(shí)現英漢辭典互譯,首先會(huì )想到采用順序檢索法。這種算法對用戶(hù)輸入詞匯排列順序沒(méi)有要求,編程實(shí)現和理解起來(lái)都比較簡(jiǎn)單,其算法時(shí)間復雜度為O(n)=n。當n值較小時(shí),這是可以允許的;但是當系統詞匯量近10 000個(gè)時(shí),算法檢索效率不高,表現為當詞語(yǔ)位置偏后時(shí)系統檢索延遲過(guò)大。為了提高檢索效率,滿(mǎn)足一定的系統反應實(shí)時(shí)性要求,我們采用了有序表二分搜索算法,其算法時(shí)間復雜度O(n)=log2n。假設n=16 384=2 14已經(jīng)超出系統的數據規模(10 000詞左右)。二分檢索所需要的最壞檢索次數是14次;但是對于順序檢索而言,在最壞查找的情況下,檢索次數是16 384次,故效率提高了16 284/14=1170倍。這個(gè)數目是相當可觀(guān)的,而且,即使系統數據規模進(jìn)一步擴大,二分檢索表現出來(lái)的所增加的檢索次數也是很小的。辭典互譯實(shí)現二分檢索所要做的附加工作,就是將原來(lái)無(wú)序的辭典數據文件轉換成有序的辭典數據文件。不過(guò),這個(gè)轉換工作可以在PC機上完成從而減輕本嵌入式系統的負荷。辭典數據排序和檢索過(guò)程中英漢辭典依據ASCII碼進(jìn)行,漢英辭典根據漢字的區位碼進(jìn)行。本PDA系統的民航時(shí)刻表、鐵路時(shí)刻表等應用模塊,也都涉及到了算法選擇問(wèn)題。
(3)數據調度 在許多應用程序中,存儲器訪(fǎng)問(wèn)是功耗的主要部分。有資料表明,內存傳輸是迄今為止CPU完成的操作中代價(jià)最高的:一次內存傳輸消耗的能量是一次加法運算的33倍多。優(yōu)化能量消耗的最大收益之一,來(lái)源于合理組織內存中的數據和指令:一般措施是盡量做到數據的寄存器訪(fǎng)問(wèn)和緩存訪(fǎng)問(wèn)。 隨著(zhù)存儲技術(shù)理論的發(fā)展和工藝水平的提高,現在存儲器體系結構一般都是三級,而且支持虛擬存儲技術(shù),如圖4所示。

處理器進(jìn)行數據訪(fǎng)問(wèn)時(shí),離CPU越近的地方,數據存取速度越快,功耗越低。本PDA系統中,由于Flash存儲器(作為數據存儲器件)寫(xiě)操作的特殊性(以扇區大小為單位、執行時(shí)間長(cháng)、執行功耗大),要求盡量少地進(jìn)行?;谶@種策略,本PDA系統在數據安排方面采取了以下一些優(yōu)化措施: ①LCD幀緩存的安排。EP7211內置38 400字節大小的RAM空間,LCD分辨率是320%26;#215;240,每像素4級灰度用2比特位表示,故顯存大小為320%26;#215;240%26;#215;2/8=19 200字節,被安排在內置RAM空間的前19 200字節。這樣安排,加快了顯示速度,減少了處理器訪(fǎng)問(wèn)片外SRAM空間。 ②個(gè)人傳呼信息、公共傳呼信息接收頻度大,不需要永久存儲;傳呼接收過(guò)程需要開(kāi)臂兩塊緩沖區,這些空間都被安排在內部RAM后19 200字節,其目的是減少了CPu對片外SRAM的訪(fǎng)問(wèn)。 ③部分系統信息資源,如字庫信息,在系統啟動(dòng)后直接從Flash存儲區拷貝到固定位置的SRAM區,這樣字符輸出時(shí)直接從內存讀取數據,而不需要訪(fǎng)問(wèn)Flash。 ④為減少Flash寫(xiě)操作執行次數,在電話(huà)簿、記事本、日程以及系統設定等編輯修改后,首先改動(dòng)的信息是在內存中直接保存,等到用戶(hù)是退出當前整個(gè)應用模塊時(shí),才進(jìn)行一個(gè)性Flash寫(xiě)操作。 ⑤在進(jìn)行復雜數據查找過(guò)程中,為減少數據訪(fǎng)問(wèn)量,可以通過(guò)建立若干級索引表方式加快數據檢索速度。如在辭典文件的詞匯排序過(guò)程中,同時(shí)建立了每個(gè)單詞位置的數據索引,而且作為索引文件定改Flash。在查找過(guò)程中,索引項的存在能夠減少檢索次數,從而快速確定單詞起始位置以及整個(gè)單詞項目長(cháng)度,供顯示輸出。不過(guò)在增加索引時(shí),也會(huì )增加一定的空間復雜度。 另外,系統還可以通過(guò)代碼壓縮減少總線(xiàn)上的傳輸量;編譯器優(yōu)化,消除冗余代碼;消除編程中的遞歸過(guò)程調用、減少函數調用的開(kāi)銷(xiāo);有效使用寄存器等措施來(lái)降低系統功耗。
4 低功耗設計綜合闡述
以上分別從硬件和軟件兩方面闡述了嵌入式系統開(kāi)發(fā)中低功耗設計的一些原則及在本產(chǎn)品中的某些具體體現。本PDA產(chǎn)品除了提代外接電源供電電路,同時(shí)還提供內置可充鎳氫雙電池供電系統。設單節電池容量是500mA,則系統待機時(shí)間是1000小時(shí)/8=125小時(shí),基本上可以滿(mǎn)足實(shí)際應用的需要。
評論