美高梅在线登录linux 实时时钟(RTC)驱动【转】

[size=18px][/size]近年来,做项目,在甘休阶段在耗能上边栽了一大跟头!因此以为有须求对xmega种类单片机的蛰伏情势总括一下。xmega有5种休眠形式,依照休眠的深度排列如下:idleextendedstandbypowersavestandbypowerdown.自己项目所用微电路为xmega256a3bu,256KFlash/16KRam,加上丰裕的外设!应该说在8位单片机中算得上是成效超强的后生可畏款!然则唯大器晚成的老毛病,使用当中TC时,其爆发的中断不可能唤起其他的安歇方式,除了Idle.不过Ilde方式省电特别轻巧!在idle格局下,实地度量+外围电路整板电流为35mA左右!采取RTC来制动踏板则功耗能达成预期,但采集样本率又不能够落得系统供给!最终,只好更改主晶片,本领在耗能与性情方面都满意产物必要!极度提醒,RTC中断要求介意下述内容//-----------------------------------------------------------------------------------------------------------*\sectionrtc32_min_alarm_timeMinimumallowedalarmtime**DuetotheRTC32clocksynchronization,thereisaminimumalarmtimethat*willgenerateainterrupt.Thisminimumtimeis2RTC32clockcycles.**Also,ifanewRTC32clockcycleisimminentatthetimeofsettingthe*美高梅在线登录,alarm,thereisariskthatitwillbemissedevenwiththevalue2.Ifthere*isariskthatthismayoccur,itisrecommendedtouseaminimumalarmtime*of3.//-----------------------------------------------------------------------------------------------------------

2.2 dumpsys batterystats

其黄金年代信息方可经过Project Volta里的工具historian.py将其图形化呈现。

先导出bugreport

adb bugreport > bugreport.txt

将其转换来图形化结果(如今周围唯有百度浏览器技术展开那么些html)

python historian.py -a bugreport.txt | tee battery.html

美高梅在线登录 1

dumpsys batterystats

轻松表明如下:

1.横轴是时刻

  1. wifi_scan指的是wifi处于扫描

  2. wifi_running指的是wifi展开状态

  3. screen指的是屏亮的图景

  4. plugged指的是插入外设

  5. wake_lock指的是kernel中被锁住的事态

                                                                        翻译:窗外云天yaozhenguo2005@126.com

大家都清楚近来的手提式有线电话机,平板等电子道具耗能都一点都超级大,Android系统因为历史和开源等原因,向来对功耗协理的不是很好。非常今后广大apk完全不care耗能,动不动给您装上全家桶,还有恐怕会互相间相互影响提示过程,几乎正是流氓软件。从现成的选拔来讲,为了他们买卖指标,有比非常多是左近供给长时间后台运营的,可能定期运转的,那几个服务对耗能影响都特别大。

其一是linux内核文书档案关于rtc实时石英钟部分的验证,此文书档案重要汇报了rtc实时石英钟的效应和编制程序接口,分别介绍了老的rtc接口和新的rtc类结构。并付诸了一个测量试验rtc驱动的前后相继。

3.种类状态解析

可通过screen与wake_lock来起头断定系统是不是被提醒,假如screen是关的,然后又有wake_lock,也标记系统被提拔并被锁住黄金年代段时间。

把上层的唤起和wifi唤醒都关了,测量检验了三14个时辰消耗33.33%电量

有以下几个难点:

1.提示次数的确少了,不过healthd每10分钟唤醒在图上反映不出去

2.有2次升迁后,系统被锁住10多钟才休眠下去

查看Alarm状态,能够很显明看出上层没有再去wake up

美高梅在线登录 2

alarm status

可是驱动中还看到有被RTC唤醒,经过验证是healthd唤醒的,不插充电的时候10分钟,插充电的时候1秒钟间隔。那么些提醒后就更正battery的音讯,上层Baterry更新下,UI刷新下。

系统被锁住10几分钟,通过log解析在wifi断开的时候,gms刚巧去老是服务器,通信十分久产生wake 非常久。从底下的音讯能够剖断,系统当下wake lock线程最多的是gms线程。

美高梅在线登录 3

wake lock

Wake lock 在Android的电源管理体系中扮演二个主干的剧中人物,wakelock是生机勃勃种锁的机制, 只要有task拿着那个锁, 系统就不只怕步入休眠, 可以被客商态进度和基本线程得到。那么些锁可以是有逾期的只怕是绝非过期的, 超时的锁会在时间过去未来自动解锁。如果没有锁了照旧逾期了, 内核就能够运行标准Linux的那套休眠机制体制来进入休眠。

SYSFS 接口

        在/sys/class/rtc/rtcn上边包车型大巴sysfs接口提供了操作rtc属性的法子,而不用经过Ioclt系统调用。全体的日期时间都是墙钟时间,并非系统时间。
date:                         RTC提供的日子
hctosys:                   倘使在底子配置选项中布置了CONFIG_RTC_HCTOSYS,RTC会在系统运转的时候提供系统时间,这种气象下这些位正是1,不然为0
max_user_freq:     非特权顾客能够从RTC获得的最大中断频率
name:                       RTC的名字,与sysfs目录相关
since_epoch:         从年代发轫所资历的秒数
time:                          RTC提供的命宫
wakealarm:             唤醒时间的时刻事件。 那是大器晚成种单次的提示事件,所以只要还必要提示,在提拔产生后必得重新载入参数。那几个域的数据构造也许是从纪元初叶经验的妙数,或许是绝对的秒数

1.透过kernel log来查阅唤醒次数

可通过如下打字与印刷来认同唤醒源:

<4>[ 1321.989235] wakeup gpio0: 00000010

现实意思如下:

gpio0:表示是GPIO0

00000010:表示的是GPIO分组从高到低多少个字节分别是:D中国篮球专门的学业联赛,种种字节的0-7bit就表示D7-D0  C7-C0  B7-B0  A7-A0.

从这里能够见见地方提示的GPIO是:GPIO0 P奥迪TT RS,对应的是RTC的行车制动器踏板脚。

                                    最终修正时间:2013.9.25