电源管理
蓝白天际线
本人从事linux的嵌入式开发.
展开
-
Linux电源管理(9)_wakelocks
1. 前言wakelocks是一个有故事的功能。wakelocks最初出现在Android为linux kernel打的一个补丁集上,该补丁集实现了一个名称为“wakelocks”的系统调用,该系统调用允许调用者阻止系统进入低功耗模式(如idle、suspend等)。同时,该补丁集更改了Linux kernel原生的电源管理执行过程(kernel/power/main.c中的state_s转载 2015-08-11 11:30:51 · 556 阅读 · 0 评论 -
Android4.x 如何处理Power按键
1. 简介 Android4.x在Framework的PhoneWindowManager对Power(KeyEvent.KEYCODE_POWER)和Home(KeyEvent.KEYCODE_HOME)键做了处理,不会把这些键传送上层应用程序。如需要把这些键发送给Activity和Service,需要在PhoneWindowManager处理这些键时“发送一个广播出去,然后在转载 2017-05-11 08:59:52 · 463 阅读 · 0 评论 -
Android 中处理POWER/HOME流程
转载请注明出处: http://blog.csdn.net/peng_cao目录(?)[+]Android按键消息处理1kernel中同按键相关代码2framework针对键盘事件的处理Step1 启动服务Step2 InputManagerService创建Step3 com_android_server_InputManagerServicecppStep4转载 2017-05-11 08:58:00 · 437 阅读 · 0 评论 -
在系统中增加一个可唤醒中断--简单实例
在系统休眠的时候3G来电或者短信需要唤醒系统,使系统resume。从3G模块手册看到有WAKE#脚,当收到来电或者SMS时这个脚会有0.5S的拉低,就是cp_wakeup_ap,用这个脚做唤醒脚。查看AP的datasheet,挑选一个带有EINT功能的GPIO脚做接收此中断的脚,这里选GPX3(1)。开始写驱动来处理这个事件。kernel\arch\arm\mach-exynos\setu转载 2017-02-13 11:05:04 · 481 阅读 · 0 评论 -
Android之PowerManager电源管理
翻译来源PowerManager这个类让你拥有控制设备状态的权利。使用这个api类会很明显地影响设备电量的使用时长。除非你确实需要PowerManager.WakeLock否则不要轻易使用它们,并尽量使用低等级功能,并确保在你不使用它们的时候立即释放PowerManager.WakeLock。你可以通过使用Context.getSystemService来获取这个类的实例。转载 2016-09-09 17:41:28 · 443 阅读 · 0 评论 -
android电池系统
一、电池系统结构 Android中的电池使用方式主要有三种:AC、USB、Battery 等不同的模式。在应用程序层次,通常包括了电池状态显示的功能。因此从 Android 系统的软件方面(包括驱动程序和用户空间内容)需要在一定程度上获得电池的状态,电池系统主要负责电池信息统计、显示。电池系统的架构如下所示:电池(三):android电池系统" style="margi转载 2016-02-24 15:03:08 · 675 阅读 · 0 评论 -
Linux电源管理(2)_Generic PM之基本概念和软件架构
1. 前言这里的Generic PM,是蜗蜗自己起的名字,指Linux系统中那些常规的电源管理手段,包括关机(Power off)、待机(Standby or Hibernate)、重启(Reboot)等。这些手段是在嵌入式Linux普及之前的PC或者服务器时代使用的。在那个计算机科学的蛮荒时代,人类在摩尔定律的刺激下,孜孜追求的是计算机的计算能力、处理性能,因此并不特别关心Power消耗。转载 2015-08-11 11:13:23 · 601 阅读 · 0 评论 -
Linux电源管理(10)_autosleep
1. 前言Autosleep也是从Android wakelocks补丁集中演化而来的(Linux电源管理(9)_wakelocks),用于取代Android wakelocks中的自动休眠功能。它基于wakeup source实现,从代码逻辑上讲,autosleep是一个简单的功能,但背后却埋藏着一个值得深思的话题:计算机的休眠(通常是STR、Standby、Hibernate等susp转载 2015-08-11 11:34:21 · 675 阅读 · 0 评论 -
Linux电源管理(3)_Generic PM之Reboot过程
1. 前言 在使用计算机的过程中,关机和重启是最先学会的两个操作。同样,这两个操作在Linux中也存在,称作shutdown和restart。这就是本文要描述的对象。 在Linux Kernel中,主流的shutdown和restart都是通过“reboot”系统调用(具体可参考kernel/sys.c)来实现的,这也是本文使用“Generic PM之Reboot过程”作为标题的原因。另外转载 2015-08-11 11:17:34 · 703 阅读 · 0 评论 -
Linux电源管理(1)_整体架构
1. 前言在这个世界中,任何系统的运转都需要能量。如树木依靠光能生长,如马儿依靠食物奔跑,如计算机系统依靠电能运行。而能量的获取是有成本的,因此如果能在保证系统运转的基础上,尽量节省对能量的消耗,就会大大提升该系统的生存竞争力。这方面,大自然已经做的很好了,如植物的落叶,如动物的冬眠,等等。而在计算机的世界里(这里以运行Linux OS的嵌入式系统为例),称作电源管理(Power Manage转载 2015-08-11 11:09:22 · 725 阅读 · 0 评论 -
Linux电源管理(5)_Hibernate和Sleep功能介绍
1. 前言Hibernate和Sleep两个功能是Linux Generic PM的核心功能,它们的目的是类似的:暂停使用——>保存上下文——>关闭系统以节电········>恢复系统——>恢复上下文——>继续使用。本文以内核向用户空间提供的接口为突破口,从整体上对这两个功能进行介绍,并会在后续的文章中,分析它们的实现逻辑和执行动作。顺便感概一下,虽然这些机制在Linux系统中存在很久转载 2015-08-11 11:21:24 · 1104 阅读 · 0 评论 -
Linux电源管理(11)_Runtime PM之功能描述
1. 前言 终于可以写Runtime PM(后面简称RPM)了,说实话,蜗蜗有点小激动。因为从个人的角度讲,我很推崇使用RPM进行日常的动态电源管理,而不是suspend机制。软件工程的基本思想就是模块化:高内聚和低耦合。通俗地讲呢,就是“各人自扫门前雪”,尽量扫好自己的(高内聚),尽量不和别人交互(低耦合)。而RPM正体现了这一思想:每个设备(包括CPU)都处理好自身的电源管理工作,转载 2015-08-11 11:36:10 · 4146 阅读 · 0 评论 -
Linux电源管理(8)_Wakeup count功能
1. 前言Wakeup count是Wakeup events framework的组成部分,用于解决“system suspend和system wakeup events之间的同步问题”。本文将结合“Linux电源管理(6)_Generic PM之Suspend功能”和“Linux电源管理(7)_Wakeup events framework”两篇文章,分析wakeup count的功转载 2015-08-11 11:28:12 · 828 阅读 · 0 评论 -
Linux电源管理(4)_Power Management Interface
1. 前言Linux电源管理中,相当多的部分是在处理Hibernate、Suspend、Runtime PM等功能。而这些功能都基于一套相似的逻辑,即“Power management interface”。该Interface的代码实现于“include/linux/pm.h”、“drivers/base/power/main.c”等文件中。主要功能是:对下,定义Device PM相关的回调转载 2015-08-11 11:19:30 · 755 阅读 · 0 评论 -
Linux电源管理(7)_Wakeup events framework
1. 前言 本文继续“Linux电源管理(6)_Generic PM之Suspend功能”中有关suspend同步以及PM wakeup的话题。这个话题,是近几年Linux kernel最具争议的话题之一,在国外Linux开发论坛,经常可以看到围绕该话题的辩论。辩论的时间跨度和空间跨度可以持续很长,且无法达成一致。wakeup events framework是这个话题的一个临时性的转载 2015-08-11 11:26:23 · 607 阅读 · 0 评论 -
Linux电源管理(6)_Generic PM之Suspend功能
1. 前言Linux内核提供了三种Suspend: Freeze、Standby和STR(Suspend to RAM),在用户空间向”/sys/power/state”文件分别写入”freeze”、”standby”和”mem”,即可触发它们。内核中,Suspend及Resume过程涉及到PM Core、Device PM、各个设备的驱动、Platform dependent PM、CP转载 2015-08-11 11:24:01 · 755 阅读 · 0 评论 -
怎样添加earlysuspend到一个普通驱动中
1.添加头文件#ifdef CONFIG_HAS_EARLYSUSPEND#include #endif2. 在驱动结构体中添加early_suspend结构体#ifdef CONFIG_HAS_EARLYSUSPEND struct early_suspend early_suspend;#endif /* CONFIG_HAS_EARLYSUSPEND */3. 在驱原创 2017-06-22 16:26:43 · 1175 阅读 · 0 评论