伴隨著嵌入式產(chǎn)品的普及,電源管理開發(fā)和設(shè)計成為了嵌入式系統(tǒng)開發(fā)的重點和重要部分。因為嵌入式設(shè)備對能耗越來越敏感,而電源管理技術(shù)正是這些產(chǎn)品設(shè)計的關(guān)鍵所在。目前嵌入式系統(tǒng)的電源管理技術(shù)正由傳統(tǒng)的基于電源管理器件和外設(shè)控制為主的靜態(tài)控制方式,轉(zhuǎn)到以操作系統(tǒng)為核心的動靜態(tài)結(jié)合的綜合控制模式。
為了應(yīng)對電源管理面臨的挑戰(zhàn),在嵌入式系統(tǒng)開發(fā)在時需要設(shè)計多種電源模式,以便在不同工作狀態(tài)時有多種能耗模式可供選擇。休眠和喚醒功能正是目前WINCW系統(tǒng)開發(fā)的研究熱點之一。那么,休眠喚醒功能是什么原理呢?它能達到什么樣的效果。這首先要從硬件說起,當(dāng)系統(tǒng)進入休眠模式后,整個系統(tǒng)會進入低功耗休眠模式,只有當(dāng)外部中斷中任意一個中斷被觸發(fā)或者實時時鐘中斷被觸發(fā)時,系統(tǒng)才會被喚醒。
一.什么是休眠喚醒功能?
(1)什么是WinCE休眠喚醒功能?
在WinCE系統(tǒng)中支持多種電源狀態(tài):①ON狀態(tài),用戶在主動使用設(shè)備。②UserIdle狀態(tài),用戶與設(shè)備停止交互,但仍有可能使用設(shè)備。③SystemIdle狀態(tài),在經(jīng)過一段時間的UserIdle后進入此狀態(tài),但是驅(qū)動和系統(tǒng)仍然活動。④Suspend狀態(tài),當(dāng)驅(qū)動程序和系統(tǒng)進程不再與系統(tǒng)交互時進入此狀態(tài)。⑤ColdReboot和Reboot狀態(tài),冷啟動后系統(tǒng)電源狀態(tài)。其中,按功率消耗由小到大可分為睡眠(sleep)、空閑(idle)、運行(Run)等模式。大多時間內(nèi),在運行態(tài)(Run)時設(shè)備全部正常工作,而在睡眠與空閑模式時系統(tǒng)則是按照特定的模式進行相應(yīng)的節(jié)能。
通常,嵌入式系統(tǒng)在大多數(shù)時間都不需要關(guān)注WinCE 設(shè)備的電源損耗,但是在某些時候要注意這些損耗。因此,最好的節(jié)能方法是使系統(tǒng)適時的進出休眠狀態(tài)。例如,WinCE系統(tǒng)先檢查任務(wù)負(fù)載情況,如果沒有需要運行的任務(wù),則一般進入空閑節(jié)能狀態(tài)等待喚醒,在空閑一段時間后再進入深度睡眠,掛起到RAM中或者硬盤上。當(dāng)WinCE 系統(tǒng)被掛起,為了省電系統(tǒng)需要關(guān)閉CPU處理器及大部分設(shè)備的供電,然后在需要喚醒時再通過定時器或中斷模塊喚醒。比如用戶按下On/Off按鈕時,或者監(jiān)視用戶活動的定時器超時,或者應(yīng)用程序API都可以使得嵌入式系統(tǒng)休眠。而當(dāng)用戶再次按下On/Off或者有其它喚醒中斷發(fā)生時,系統(tǒng)內(nèi)核調(diào)用OEMPowerOff()函數(shù),在系統(tǒng)喚醒后繼續(xù)從OEMPowerOff()被掛起處執(zhí)行。OEMPowerOff函數(shù)能進行CPU寄存器保存、設(shè)置及喚醒恢復(fù)等功能。系統(tǒng)Idle狀態(tài)和前面說的UserIdle狀態(tài)是不同概念,前者是CPU負(fù)荷驅(qū)動,代表系統(tǒng)空閑;后者是用戶活動驅(qū)動,代表用戶空閑。
(2)休眠喚醒功能的具體內(nèi)容
一般來說,WINCE電源狀態(tài)有六種狀態(tài),分別是S0到S5:S0實際上這就是我們平常的工作狀態(tài),所有設(shè)備全開;S1也稱為POS(Power on Suspend),這時除了通過CPU時鐘控制器將CPU關(guān)閉之外,其它的部件仍然正常工作;S2這時CPU處于停止運作狀態(tài),總線時鐘也被關(guān)閉,但其余的設(shè)備仍然運轉(zhuǎn);S3這就是我們熟悉的STR(Suspend to RAM);S4也稱為STD(Suspend to Disk),這時系統(tǒng)主電源關(guān)閉,但是硬盤仍然帶電并可以被喚醒;S5這種狀態(tài)是最干脆的,就是連電源在內(nèi)的所有設(shè)備全部關(guān)閉,即關(guān)機(Shutdown)。
WINCE電源管理休眠和喚醒可實現(xiàn)以下功能:用戶可以使外設(shè)在指定時間開關(guān),或操作系統(tǒng)可以根據(jù)具體需求來分配電能源,或在無人使用時可以使系統(tǒng)進入休眠狀態(tài),但保證一些通信設(shè)備打開。也就是說,嵌入式系統(tǒng)能夠管理閑置的設(shè)備,關(guān)閉設(shè)備并提供恢復(fù)手段,主要支持三種節(jié)電方式:①Suspend即掛起,顯示屏自動關(guān)閉,只是主機通電。這時敲任意鍵即可恢復(fù)原來狀態(tài)。②Suspend to Ram 即掛起到內(nèi)存,系統(tǒng)把當(dāng)前信息儲存在內(nèi)存中,只有內(nèi)存等幾個關(guān)鍵部件通電,這時系統(tǒng)處在高度節(jié)電狀態(tài),按任意鍵后系統(tǒng)從內(nèi)存中讀取信息很快恢復(fù)到原來狀態(tài)。③Suspend to Disk即掛起到硬盤,即系統(tǒng)將自動關(guān)機,關(guān)機前將當(dāng)前數(shù)據(jù)存儲在硬盤上,用戶下次按開關(guān)鍵開機時計算機將無須啟動系統(tǒng),直接從硬盤讀取數(shù)據(jù),恢復(fù)原來狀態(tài)。
在嵌入式系統(tǒng)中,我們最常用到的是S3狀態(tài),即Suspend to RAM(掛起到內(nèi)存)狀態(tài)。顧名思義,STR就是把系統(tǒng)進入STR前的工作狀態(tài)數(shù)據(jù)都存放到內(nèi)存中去。在STR狀態(tài)下,電源仍然繼續(xù)為內(nèi)存等最必要的設(shè)備供電,以確保數(shù)據(jù)不丟失,而其它設(shè)備均處于關(guān)閉狀態(tài),系統(tǒng)的耗電量極低。一旦我們按下Power按鈕系統(tǒng)就被喚醒,馬上從內(nèi)存中讀取數(shù)據(jù)并恢復(fù)到STR之前的工作狀態(tài)。內(nèi)存的讀寫速度極快,因此我們感到進入和離開STR狀態(tài)所花費的時間不過是幾秒鐘而已。而S4狀態(tài)即STD(掛起到硬盤)與STR的原理是完全一樣的,只不過數(shù)據(jù)是保存在硬盤中。由于硬盤的讀寫速度比內(nèi)存要慢得多,因此用起來也就沒有STR那么快了,但STD模式是一種更省電的高級應(yīng)用,是將當(dāng)前系統(tǒng)狀態(tài)保存到硬盤后,硬盤隨即停止轉(zhuǎn)動系統(tǒng)進入低功耗狀態(tài)。當(dāng)再開機時系統(tǒng)會跳過自檢,直接從硬盤恢復(fù)原來的系統(tǒng)狀態(tài),而不是正常系統(tǒng)的默認(rèn)狀態(tài),從而縮短了開機。