1. 前言
在這個世界中,任何系統的運轉都需要能量。如樹木依靠光能生長,如馬兒依靠食物奔跑,如計算機系統依靠電能運行。而能量的獲取是有成本的,因此如果能在保證系統運轉的基礎上,盡量節省對能量的消耗,就會大大提升該系統的生存競爭力。這方面,大自然已經做的很好了,如植物的落葉,如動物的冬眠,等等。而在計算機的世界里(這里以運行Linux OS的嵌入式系統為例),稱作電源管理(Power Management)。
通俗的講,電源管理就是:“想讓馬兒跑,不想馬吃草”。不過,從能量守恒的角度,想讓馬兒跑多快、跑多久,就一定要讓它吃相應數量的草。那么我們就退而求其次:“只在需要馬兒跑時,才讓它吃草”。這就是電源管理的核心思想。那方法呢?可以這樣:
方法1:不需要馬兒跑時,把它殺掉,這樣就不吃草了。需要馬兒跑時,再養一匹。
在現實世界中,除了傻瓜,應該沒人使用這種方法。因為重新養一匹馬需要時間----我哪里等得及,需要草----有可能比養一匹閑馬需要的更多。
方法2:不需要馬兒跑時,讓它睡覺,不能睜眼,不能動,不能叫。
先不講馬兒是否愿意一直睡覺,這種方法只能減少馬兒吃草的數量,因為它的心臟還在跳動、血液還在流通,這些也消耗能量。不過還好,需要馬兒跑時,應該不需要等太久了。
方法3:不是說心臟跳動、血液流通也消耗能量嗎?那把這些也停下來好了,能省多少是多少嘛。
確實是好方法,不多得先去問問獸醫,能不能搞定。不過以現在的醫學水平,估計實現不了啊。
在計算機世界中,上面的方法是再平常不過的了,而且控制的遠比這些精細。因為計算機是人類設計出來的,而馬兒卻是經上帝之手。不過通過馬兒的例子,我們可以總結出電源管理的基本行為:
a, 實時的關閉暫時不使用的部分(可稱作“工作狀態到非工作狀態的轉移”)。例如手機在口袋時,屏幕沒必要亮。
b, 當需要重新使用那些已關閉部分時(可稱作“非工作狀態到工作狀態的轉移”),不能有太長時間的等待,且轉移過程不能消耗太多的能量。上面的方法1就是一個反面教材,但在計算機的世界里,情況會好很多。
2. Linux電源管理的組成
電源管理(Power Management)在Linux Kernel中,是一個比較龐大的子系統,涉及到供電(Power Supply)、充電(Charger)、時鐘(Clock)、頻率(Frequency)、電壓(Voltage)、睡眠/喚醒(Suspend/Resume)等方方面面(如下圖),蝸蝸會在Linux電源管理系列文章中,對它們一一講述。
注1:該圖片只是一個示意圖,并沒有劃分軟件層次,因此模塊之間的關系不一定是真正的關系。
? Linux電源管理(2)_Generic PM之基本概念和軟件架構 | Process Creation(二)?
評論:
吳兵
2018-02-01 11:30
"Runtime PM是Linux Kernel親生的運行時電源管理機制,Wakelock是由Android提出的機制。這兩種機制的目的是一樣的,因此只需要支持一種即可。另外,由于Wakelock機制路子太野了,飽受Linux社區的鄙視,因此我們不會對該機制進行太多的描述。"是不是android 用戶層用Wakelock機制,而內核層kernel用Runtime PM機制???
GrayMonkey
2017-11-12 00:55
膜拜大佬,早找到你的文章就好了,Android開發一枚,一直對底層的電源管理存有疑問
周末花褲衩
2017-09-21 20:07
試試還能留言嗎
wolf
2016-07-18 13:20
LINUX 系統息屏后長時間不操作,屏幕點不亮,可是其他的一切正常運行,這個是怎么回事呢,我看到你回復別人的帖子是要重新設置背光,可是重新設置背光也不管用!怎么回事呢?謝謝
這個帖子的問題和我的很像,有人說除了設置背光還有別的設置,但是具體的沒有給出,怎么設置屏幕的電源呢
wowo
2016-07-18 13:32
@wolf:可以按照如下思路去查:
1。確認是背光沒開,還是lcd沒開,還是沒有應用送顯示數據。
2。如果是背光,檢查power、pwm等。
3。如果lcd沒開,檢查對應的驅動。
4。等等
vv小蛋
2016-07-14 16:40
感覺到了一股禪意,或許做任何事情都是在修道吧
wowo
2016-07-14 17:27
@vv小蛋:哈哈,禪意,聽著不錯。
修道改為修行就更好了。
franc
2016-05-04 15:09
無法登錄
wowo
2016-05-04 18:28
@franc:博客和論壇的賬號不能通用,另外建議大家不要登錄博客了(只有發文章的時候才需要)。
xiaogaod325
2015-09-18 11:47
有點意思
zxqhbd
2015-09-10 17:10
很好的講解,不小心進入這個博客就被吸引了,怎么注冊不了啊
wowo
2015-09-10 17:23
@zxqhbd:抱歉,網站php代碼有問題,注冊用戶超過255就注冊不了了,我還沒來得及研究一下怎么修復~~
zxqhbd
2015-09-10 20:50
@wowo:期待加入!
qkhhyga
2015-03-11 15:05
@wowo:坐等cpufreq動態調頻的分析介紹。。。
wowo
2015-03-13 17:05
@qkhhyga:時機還未到啊,最低要等到regulator的介紹完,才能開始cpufreq。
Daniel Shieh
2015-02-28 20:25
現在拿到一個新的板子,想要實現電源的power on和off,以及一級,二級低功耗,deep sleep,總體上說應該從哪里下手呢?
Daniel Shieh
2015-02-28 20:26
@Daniel Shieh:希望樓主能抽空指點一下,不知道這些點從哪下手。
wowo
2015-03-01 21:27
|