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