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