共计 1162 个字符,预计需要花费 3 分钟才能阅读完成。
本篇文章给大家分享的是有关如何理解 Linux APM 电源管理,丸趣 TV 小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着丸趣 TV 小编一起来看看吧。
在官方发布的内核中 Linux APM 是较为成熟的电源管理方式,可以完成在 Windows 下 ACPI 所能完成的大部分功能。由于官方内核中 ACPI 的功能比较有限,目前还处于开发版状态。
所以当前的大多数 distribution,如红帽子默认就使用了 apm 作为电源管理方式。但是值得注意的是 linux 中的 ACPI 实际上是由一个单独的项目小组模块进行维护的,当前内核 ACPI 的版本实际上已经远远落后于 *** 的版本。由于 linux 稳定版中对任何新特性的加入都非常谨慎小心,所以我们也许只能等到 2.6.x 版本的 linux 诞生后才能看到 ACPI 的稳定全功能版了。不过我们也可以自己对内核打的 ACPI 补丁来获得这些功能。
下面对电源管理的介绍以 Linux APM 为主。
用户态 Daemon
为了让 linux 内核中的电源管理功能够更好的被利用,我们还需要用户态 daemon 程序的配合。针对 Linux APM 和 ACPI,分别有 apmd 和 acpid 两个不同软件。他们实现的功能比较类似,都是允许用户预先定义某些策略,然后跟踪电源状态,执行特定的操作。在 apmd 软件包中还有一个工具 Linux APM,用户可以用它使机器主动进入 standby 和 suspend 状态,还可以查询 bios 的 apm 版本号。在使用 acpi 时直接对 proc 文件系统进行操作即可完成同样的功能。
KernelSpace
APMdriver(包括提供给用户空间使用 apm_bios_fopsSystemCall, 主要有 apm_read,apm_poll,apm_ioctl,apm_open,apm_release)。
关于电池电量检测,主要要用到 MCU 平台的 ADC 采样(每隔多少时间来读取 ADC),以及 DC 供电,电源供电的检测
关于体眠和恢复,这个主要是 ioctl 要完成的事情,例如用户空间用 Linux APM- s 进行睡眠操作,会调用平台相关的睡眠函数,恢复也是类似的。这里面要注意,APM 有一套假睡眠和恢复,需要实现真正平台相关的睡眠和恢复。
具体可以参考我的博客:2410 的 Linux APM 电源管理分析。
UserSpace
GTK/Qt/C—- openAPM_PROC— SystemCall(read()mainly)— KernelVFS— apm_driver– apm_read
读取 syslog 来获得电池电量,供电检测相关的信息
以上就是如何理解 Linux APM 电源管理,丸趣 TV 小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注丸趣 TV 行业资讯频道。