共計 1162 個字符,預計需要花費 3 分鐘才能閱讀完成。
本篇文章給大家分享的是有關(guān)如何理解 Linux APM 電源管理,丸趣 TV 小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著丸趣 TV 小編一起來看看吧。
在官方發(fā)布的內(nèi)核中 Linux APM 是較為成熟的電源管理方式,可以完成在 Windows 下 ACPI 所能完成的大部分功能。由于官方內(nèi)核中 ACPI 的功能比較有限,目前還處于開發(fā)版狀態(tài)。
所以當前的大多數(shù) distribution,如紅帽子默認就使用了 apm 作為電源管理方式。但是值得注意的是 linux 中的 ACPI 實際上是由一個單獨的項目小組模塊進行維護的,當前內(nèi)核 ACPI 的版本實際上已經(jīng)遠遠落后于 *** 的版本。由于 linux 穩(wěn)定版中對任何新特性的加入都非常謹慎小心,所以我們也許只能等到 2.6.x 版本的 linux 誕生后才能看到 ACPI 的穩(wěn)定全功能版了。不過我們也可以自己對內(nèi)核打的 ACPI 補丁來獲得這些功能。
下面對電源管理的介紹以 Linux APM 為主。
用戶態(tài) Daemon
為了讓 linux 內(nèi)核中的電源管理功能夠更好的被利用,我們還需要用戶態(tài) daemon 程序的配合。針對 Linux APM 和 ACPI,分別有 apmd 和 acpid 兩個不同軟件。他們實現(xiàn)的功能比較類似,都是允許用戶預先定義某些策略,然后跟蹤電源狀態(tài),執(zhí)行特定的操作。在 apmd 軟件包中還有一個工具 Linux APM,用戶可以用它使機器主動進入 standby 和 suspend 狀態(tài),還可以查詢 bios 的 apm 版本號。在使用 acpi 時直接對 proc 文件系統(tǒng)進行操作即可完成同樣的功能。
KernelSpace
APMdriver(包括提供給用戶空間使用 apm_bios_fopsSystemCall, 主要有 apm_read,apm_poll,apm_ioctl,apm_open,apm_release)。
關(guān)于電池電量檢測,主要要用到 MCU 平臺的 ADC 采樣(每隔多少時間來讀取 ADC),以及 DC 供電,電源供電的檢測
關(guān)于體眠和恢復,這個主要是 ioctl 要完成的事情,例如用戶空間用 Linux APM- s 進行睡眠操作,會調(diào)用平臺相關(guān)的睡眠函數(shù),恢復也是類似的。這里面要注意,APM 有一套假睡眠和恢復,需要實現(xiàn)真正平臺相關(guān)的睡眠和恢復。
具體可以參考我的博客:2410 的 Linux APM 電源管理分析。
UserSpace
GTK/Qt/C—- openAPM_PROC— SystemCall(read()mainly)— KernelVFS— apm_driver– apm_read
讀取 syslog 來獲得電池電量,供電檢測相關(guān)的信息
以上就是如何理解 Linux APM 電源管理,丸趣 TV 小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學到更多知識。更多詳情敬請關(guān)注丸趣 TV 行業(yè)資訊頻道。