Android功耗(9)---MTK功耗问题分析1
1、查找唤醒源
<7>[ 129.680310] -(0)[913:system_server][name:mt_sleep&][SLP] @@@Chip_pm_enter@@@
<4>[ 129.680310] -(0)[913:system_server][name:mt_spm_internal&][SPM] wake up .........................
<7>[ 129.690364] .(0)[913:system_server][name:mt_sleep&][SLP] @@@Chip_pm_finish@@@
产生EINT的channel会记录在EINT_STA状态寄存器里面,这一点所有平台都一样;只要知道这个状态寄存器的值就可以知道哪个channel发生了中断;但是不同平台的log细节会有些不同。
--->89/72/82在wakeup时,如果唤醒源是EINT,会主动打印出EINT_STA的值
--->77默认不会打印这个寄存器,需要先开启EINT_DEBUG这个宏,才能看到EINT_STA的值
kernel log分析:
---------------------------------------------------------------------------------------------------------------------------
【step1 - 从kernel log中找到EINT channel id】
MT6577
[Power/Sleep] wake up by EINT (0x20)(0x4)(180689) (* 这里0x20是EINT wakesrc id,0x4是sleep ISR寄存器状态,都不是channel id!)
EINT Module - EINT_STA = 0x400,--->bit[n] =1, channel id 就等于n
MT6589/MT6582
[SPM] wake up by EINT (0x20)(0x20)(370340)
EINT_STA:
3 --->这个值就是EINT channel id,不需要转换
MT6572
[PCM WAKEUP NORMAL]CPU WAKE UP BY: EINT :0x10000 --->bit[n] =1, channel id 就等于n
【step2 - 过滤PMIC触发的EINT唤醒】
pwrkey/charger/usb/这些事件发生时会有EINT产生,走的都是PMIC的EINT channel;并且89/72平台上,rtc(比如第三方APK造成的唤醒)和其他一些中断也会走PMIC的EINT;因此要先把PMIC EINT过滤掉,不需要去关注这个channel上的唤醒(当然rtc唤醒的话还是要分析的,只不过并不是去分析EINT唤醒源了)。所幸PMIC的EINT channel id是固定的,不能修改,所以可以直接看channel id来过滤,各平台的PMIC EINT channel如下:
MT6577 9 (EINT_STA=0x400)
MT6589 3 (EINT_STA=3)
MT6572 16(EINT_STA=0x10000)
MT6582 25(EINT_STA=25)
【step3 -从cust_eint.h中找到触发EINT的模块】
CUST_EINT_XXX_NUM 对应的值就是XXX模块的EINT channel id。
如果在这个文件中没有找到造成唤醒的channel id的定义,说明可能没有用DCT Tool去配置EINT,而是直接写死在代码里,那就尝试搜索所有调用mt65xx_eint_registration的代码,看有没有注册这个channel id的。
Android功耗(9)---MTK功耗问题分析1相关推荐
- Android Linux Alarm 对功耗的影响
Android Linux Alarm 对功耗的影响 技术标签: alarm rtc android linux 文章目录 1. Alarm介绍 1.1 alarm的几种类型及区别 1.2 al ...
- android功耗测试方法,手机功耗测试指南
和您一起终身学习,这里是程序员Android 本篇文章主要介绍 Android 开发中的部分 功耗 知识点,通过阅读本篇文章,您将收获以下内容:1.测试功耗手机配置 2.飞行模式待机功耗 3.单SIM ...
- Android 8.0系统源码分析--Camera processCaptureResult结果回传源码分析
相机,从上到下概览一下,真是太大了,上面的APP->Framework->CameraServer->CameraHAL,HAL进程中Pipeline.接各种算法的Node.再往下的 ...
- MTK LIGHT 代码分析
MTK LIGHT 代码分析 项目上需要做些客制化的东西,需要用到light 一块的东西,好久以前看过,但是没有记录下来,这次重新看看,然后记录下来. lightservice start priva ...
- android P MediaCodec编解码流程分析
1.MediaCodec初始化流程分析 通过上面流程分析可知,MediaCodecList初始化是通过调用它的getLocalInstance函数,然后在里面new的MediaCodecList对象. ...
- android8.1上musicfx,Android自带音频均衡器MusicFx分析
Android自带音频均衡器MusicFx分析 种种原因,我要简单分析一个Android中built-in的音频均衡器MusicFx.重点是它的默认值的来历.网上很少有文章讲了这个的除了这篇<c ...
- Android Studio - HPROF文件查看和分析工具
Android Studio - HPROF文件查看和分析工具 Android Studio 翻译的官方文章 原文链接 当你在Android Studio中使用Android Monitor里的Mem ...
- Android中启动Activity(startActivity)流程图分析
在上篇博文< Android中ActivityManagerService与应用程序(客户端)通信模型分析>中,我们从宏观架构上掌握 ActivityManagerService与应用程序 ...
- Android Camera 系统架构源码分析
Android Camera 系统架构源码分析(1)---->Camera的初始化 Android Camera 系统架构源码分析(2)---->Camera的startPreview和s ...
- Android 6.0.1 Location Service 分析
定位服务是手机上最常用的功能之一,据说也是相对比较简单的服务,所以从这里入手.其他系统服务的架构都是类似的.明白其中一个之后,再去理解其他的会容易得多.下面以 Android 源码为基础,大致分析了 ...
最新文章
- html中内联元素和块元素的区别、用法以及联系
- 怎样解决样本不平衡问题
- 实现 对象在内存中的引用一致性 之第一步
- selection at the technology management
- Spring Boot中使用Ribbon软负载
- UI素材|让设计有愉悦的体验,app交互动效的重要性!
- php文章管理系统_PHP-小程序:(1)开发环境搭建
- python3+Neo4j+flask,汽车行业知识图谱项目实战
- Mac下安装Fiddler抓包工具(别试了,会报错,没办法使用)
- ASP.NET中用healthMonitor属性用法
- Unity3D开发工具介绍
- 雅型钢五金大全(五金计算器)绿色便携版V20220512 | 实用五金计算软件下载
- 蓝宝石rx470d原版bios_狼神矿卡烤机89°C!强刷蓝宝石RX570超白金显卡BIOS降温75°教程...
- 汽车电子技术——传感器感知技术
- android隐藏root环境,Android安全检查之Root环境检测
- python拟合直线的斜率_Python:直线,斜率k是已知的,一点P1是已知的,长度P1P2是已知的,如何得到P2?...
- 路飞学城Python-Day49
- 删除脚注或尾注的横线
- T三说茶丨教你分辨头采茶、头春茶、明前茶、雨前茶!
- 网站商务BD(Bussiness Development--商务拓展)
热门文章
- Px_ipc_name()函数
- ROS 教程之 navigation : 用 move_base 控制自己的机器人(1)
- html是执行语言吗,HTML的基本语言
- 菜鸟学习笔记:Java提升篇10(网络2——UDP编程、TCPSocket通信、聊天室案例)
- html怎么更改手势手型,弹钢琴时纠正手型手势的正确方法
- mysql syntaxerror_解析bitronix连接MySQL出现MySQLSyntaxErrorException错误的解决方法
- mysql 事务 隔离级别_MySQL的四种事务隔离级别
- 【Hadoop 分布式部署 十 一: NameNode HA 自动故障转移】
- 程序猿的骄傲,以及骄傲背后真实的原因
- 计蒜客蓝桥杯模拟赛5 引爆炸弹【并查集】