当前位置: 技术问答>linux和unix
请教一下大家在Linux下面电源管理的做法
来源: 互联网 发布时间:2016-05-07
本文导语: 本人做Linux不久,以前一直从事CE下面BSP定制的工作,现在转做Android CE下面电源管理OS做得比较多,基本上是定义成几种状态(如ON,USERIDLE,SYSTEMIDLE,SUSPEND,OFF等),然后各个驱动也是定义有几种状态(D0~4),通过注册表可以映射其对...
本人做Linux不久,以前一直从事CE下面BSP定制的工作,现在转做Android
CE下面电源管理OS做得比较多,基本上是定义成几种状态(如ON,USERIDLE,SYSTEMIDLE,SUSPEND,OFF等),然后各个驱动也是定义有几种状态(D0~4),通过注册表可以映射其对应关系,系统的各种状态之间可以通过事件或函数调用来切换.
在Linux下面好象也有专门的电源管理驱动如ACPI之类的,但好象它不支持ARM的芯片
还有APM,不知道它实现的是哪些功能
我看Kernel下面也有Power的目录,现在Android下面也有自己的电源管理驱动
所以看得有些乱,请各位高手指点一下,说说你们的设备电源管理都是怎么做的?
谢谢!
CE下面电源管理OS做得比较多,基本上是定义成几种状态(如ON,USERIDLE,SYSTEMIDLE,SUSPEND,OFF等),然后各个驱动也是定义有几种状态(D0~4),通过注册表可以映射其对应关系,系统的各种状态之间可以通过事件或函数调用来切换.
在Linux下面好象也有专门的电源管理驱动如ACPI之类的,但好象它不支持ARM的芯片
还有APM,不知道它实现的是哪些功能
我看Kernel下面也有Power的目录,现在Android下面也有自己的电源管理驱动
所以看得有些乱,请各位高手指点一下,说说你们的设备电源管理都是怎么做的?
谢谢!
|
Android 自己开发了一套电源管理系统,从现在看到的感觉还不是很完善,看来LZ做了多年的电源管理,应该经验很丰富了,也应该知道:电源管理不只是软件的问题,电源管理是一个系统问题,包括软件,硬件等各个方面。现在硬件的电源管理技术也非常成熟了,在ARM芯片中就有什么dvfs,SLM等等。lINUX本生也有动态电源管理什么的。
在Android中,Google在Kernel中增加了电源管理模块以支持应用的电源管理策略,在应用中主要是以锁的方式实现的。
我也正在做这块,有机会一起讨论讨论。
在Android中,Google在Kernel中增加了电源管理模块以支持应用的电源管理策略,在应用中主要是以锁的方式实现的。
我也正在做这块,有机会一起讨论讨论。
|
我来说说几个点
1)一般在ARM-linux中 有这样几个状态:
*) 运行
*) Standby mode
*) Stop mode
在这个跟芯片的实现也有关系,对于Linux下的状态(以及如何进入此状态)可以看
kernel源代码目录下的 Documentation/power/states.txt
2)在上述不同的状态,对于关闭不同的clock gating,当然芯片还可以有power gating
在standby或stop模式时关闭上述gating,设置唤醒中断源,resume时再打开gating。
最新的kernel有PM control的模型,你的驱动实现suspend和resume接口,然后调用
enable_irq_wake()来设置唤醒中断源。
3)现在一般都一个PMIC(Power Mangament IC)芯片来负责全局的供电。
所以需要在合适的时间打开或者关闭供电的源。
1)一般在ARM-linux中 有这样几个状态:
*) 运行
*) Standby mode
*) Stop mode
在这个跟芯片的实现也有关系,对于Linux下的状态(以及如何进入此状态)可以看
kernel源代码目录下的 Documentation/power/states.txt
2)在上述不同的状态,对于关闭不同的clock gating,当然芯片还可以有power gating
在standby或stop模式时关闭上述gating,设置唤醒中断源,resume时再打开gating。
最新的kernel有PM control的模型,你的驱动实现suspend和resume接口,然后调用
enable_irq_wake()来设置唤醒中断源。
3)现在一般都一个PMIC(Power Mangament IC)芯片来负责全局的供电。
所以需要在合适的时间打开或者关闭供电的源。
|
友情up
|
友情up
|
我目前也有个电源管理任务,进来学习的
|
俺也有!
|
帮顶吧,内核级的一直没有勇气深入.
|
请教不敢,欢迎一起讨论讨论。