通常在以往接觸的Linux驅動,沒遇到使用電池供電的情況,因此幾乎沒關注電源的管理。然而實際中,不少使用電池供電的硬件平臺,例如手機、POS機等,就需要對電源進行管理,比如在不使用設備的時候,休眠屏幕省電。
Linux電源管理模型有兩種:系統(tǒng)睡眠模型suspend和Runtime電源管理模型。
1.系統(tǒng)睡眠模型Suspend
S3 aka STR(suspend to ram),掛起到內存,簡稱待機。計算機將目前的運行狀態(tài)等數據存放在內存,關閉硬盤、外設等設備,進入等待狀態(tài)。此時內存仍然需要電力維持其數據,但整機耗電很少?;謴蜁r計算機從內存讀出數據,回到掛起前的狀態(tài),恢復速度較快。對DDR的耗電情況進行優(yōu)化是S3性能的關鍵,大多數手持設備都是用S3待機。
S4 aka STD(suspend to disk),掛起到硬盤,簡稱休眠。把運行狀態(tài)等數據存放在硬盤上某個文件或者某個特定的區(qū)域,關閉硬盤、外設等設備,進入關機狀態(tài)。此時計算機完全關閉,不耗電?;謴蜁r計算機從休眠文件/分區(qū)中讀出數據,回到休眠前的狀態(tài),恢復速度較慢。
系統(tǒng)休眠模型給我的感覺是以整機角度進行省電。
S3類似電腦的睡眠,在教長時間不使用電腦后,電腦黑屏,再次敲擊鍵盤迅速顯示桌面,原來的工作內容仍不變。
S4類似電腦的休眠,在長時間不使用電腦后,電腦黑屏,再次敲擊鍵盤無反應,按下電源鍵,開機,原來的工作內容仍不變。
對于嵌入式設備,更多的是使用S3,將數據暫時放在內存里,以實現快速恢復,就像手機的電源鍵按下黑屏,再次按下迅速亮屏。
在Linux中,通過cat /sys/power/state可以得知當前設備支持的節(jié)能模式,一般情況有如下選項:
需要設置以上模式,只需echo mem > /sys/power/state即可。
2.Runtime電源管理模型
Runtime電源管理模型給我的感覺是以模塊角度進行省電。
某種程度上是“高內聚和低耦合”的體現。
每個設備(包括CPU)都處理好自身的電源管理工作,盡量以最低的能耗完成交代的任務,盡量在不需要工作的時候進入低功耗狀態(tài),盡量不和其它模塊有過多耦合。每個設備都是最節(jié)省的話,整個系統(tǒng)一定是最節(jié)省的。