1.概要

待机平均电流非常容易出问题,也很难分析理清楚,应为涉及APK/Modem/Wifi这些不确定的因素,这类问题一定要遵循一个处理原则,到底在出现啥样的环境下复现,做几个实验,给出清晰的问题描述,问题复制条件、电流波形。

2、背景知识

2.1 最干净的待机电流波形

最干净的待机电流波形应该只有Paging,不过要注意两点

1)每个Paging 的间隔,不同的网络不一样,有可能是256ms,512ms,1.24S,2.48S.

2)每个Paging 起来的burst可能不止一个,单独一个的是PICH,起来两个的是PICH+PCH,但是良好的网络中出现PCH 的次数不能太多。

2.2 唤醒源

系统进入到suspend 后会由SPM 控制,系统由suspend状态转到resume 状态必须先唤醒CPU,所谓的唤醒源其实是一些系统IRQ 资源,通过设定SPM的寄存器,可以选择哪些irq可以被SPM处理并作为系统唤醒源,而哪些不行。MTK 平台为suspend/deep idle/sodi状态设定了不同的唤醒源,suspend的唤醒源可以在mt_spm_sleep.c中找到,

#if defined(CONFIG_MICROTRUST_TEE_SUPPORT)
#define WAKE_SRC_FOR_SUSPEND \(WAKE_SRC_R12_PCM_TIMER | \WAKE_SRC_R12_PMCU_WDT_EVENT_B | \WAKE_SRC_R12_KP_IRQ_B | \WAKE_SRC_R12_CONN2AP_SPM_WAKEUP_B | \WAKE_SRC_R12_EINT_EVENT_B | \WAKE_SRC_R12_CONN_WDT_IRQ_B | \WAKE_SRC_R12_CCIF0_EVENT_B | \WAKE_SRC_R12_CCIF1_EVENT_B | \WAKE_SRC_R12_PMCU_SPM_IRQ_B | \WAKE_SRC_R12_USBX_CDSC_B | \WAKE_SRC_R12_USBX_POWERDWN_B | \WAKE_SRC_R12_EINT_EVENT_SECURE_B | \WAKE_SRC_R12_MD1_WDT_B | \WAKE_SRC_R12_CLDMA_EVENT_B | \WAKE_SRC_R12_SCP_SPM_IRQ_B | \WAKE_SRC_R12_SCP_WDT_EVENT_B | \WAKE_SRC_R12_C2K_WDT_IRQ_B | \WAKE_SRC_R12_CSYSPWREQ_B | \WAKE_SRC_R12_ALL_MD32_WAKEUP_B)
#else
#define WAKE_SRC_FOR_SUSPEND \(WAKE_SRC_R12_PCM_TIMER | \WAKE_SRC_R12_PMCU_WDT_EVENT_B | \WAKE_SRC_R12_KP_IRQ_B | \WAKE_SRC_R12_CONN2AP_SPM_WAKEUP_B | \WAKE_SRC_R12_EINT_EVENT_B | \WAKE_SRC_R12_CONN_WDT_IRQ_B | \WAKE_SRC_R12_CCIF0_EVENT_B | \WAKE_SRC_R12_CCIF1_EVENT_B | \WAKE_SRC_R12_PMCU_SPM_IRQ_B | \WAKE_SRC_R12_USBX_CDSC_B | \WAKE_SRC_R12_USBX_POWERDWN_B | \WAKE_SRC_R12_EINT_EVENT_SECURE_B | \WAKE_SRC_R12_MD1_WDT_B | \WAKE_SRC_R12_CLDMA_EVENT_B | \WAKE_SRC_R12_SCP_SPM_IRQ_B | \WAKE_SRC_R12_SCP_WDT_EVENT_B | \WAKE_SRC_R12_C2K_WDT_IRQ_B | \WAKE_SRC_R12_CSYSPWREQ_B | \WAKE_SRC_R12_SEJ_EVENT_B | \WAKE_SRC_R12_ALL_MD32_WAKEUP_B)
#endif /* #if defined(CONFIG_MICROTRUST_TEE_SUPPORT) */

全部唤醒源定义在mt_spm.h 中,重要关注的是以下几个唤醒源:

1)KP 键盘 如果需要侧键唤醒,需要打开这个唤醒源

2)EINT外部中断,其中最重要的是PMIC 中断(RTC alarm 也是这个中断)

3)CONN2AP  connectivity子系统

4)CCIF0_MD 和CCIF1_MD  旧架构中使用的modem 唤醒源

5)CLDMA_MD 新架构中使用的唤醒源

6)SEJ 目前只有指纹模块用到

对于modem和connectivity ,不同的架构有不同的唤醒源,在分析问题之前需要确认清楚架构。

pmic/modem/connectivity 用到的EINT channel 的每个平台也不一样,可以在各自的驱动中找到注册的EINT channel,也可以在DWS中看定义。

唤醒源是我们定位问题的关键,需要了解清楚哥哥MTK 硬件平台的差异。

3 、Debug 流程

3.1 要测试的机器确保传导测试都pass

如果传导测试失败,请RF 相关的人处理,检查下面的因子:

1)RF 参数

2)白卡和仪器是否适配

3)仪器设定是否正确

3.2 确认测试机和卡是可以用于功耗测试的

确认手机进行过校正

确认手机是装过天线的

确认手机又IMEI 号

确认modem基本功能正常

确认SIM 不欠费和不是特殊SIM卡

3.3搞清楚问题复现的环境、复现方法

复现问题时插的卡以及modem类型:

1)单卡还是双卡

2)卡类型(移动、电信、联通、2G、3G、4G )

3)每个卡对应的modem

A)问题描述:

B)log

C) 电流波形

MTK 驱动开发(34)---待机功耗调试相关推荐

  1. 详解关于MTK驱动开发学习教程

    MTK驱动开发学习教程是本文要介绍的内容,主要是来了解MTK的驱动开发的过程,文章中很详细的讲解了这个问题,具体内容来看本文详解. 一.Charge Parameters. 1.相关文件chr_par ...

  2. MTK 驱动开发(35)---待机功耗分析流程

    1.目的 2.MTK平台各个场景功耗数据测试方法 很多功耗问题都是因为测试手法不对,列出一些常用场景功耗测试手法.  测试功耗数据之前,请先确认以下配置:  1.关闭 WIFI/BT/GPS,关闭数据 ...

  3. MTK 驱动开发(16)---LCM 移植

    对于LCM驱动移植,一般分为三部曲: 1.硬件IO口配置: 2.确保LCM背光能够正常点亮: 3.LCM驱动移植: 硬件电路: 1.GPIO配置 打开 mediatek\dct\DrvGen.exe ...

  4. 【驱动开发】WinDbg 双机调试 Windows XP

    起序:最近学习驱动开发,环境搭建,记录一下. 一.软件环境 宿主机:Windows 10 虚拟机:VMware Workstation 16.1.1 Pro 系统:windows_xp_profess ...

  5. 驱动开发环境以及双机调试环境搭建

    工作将近三个月了,做了几个项目,想在这里总结一下,方便以后自己或者大家借鉴.最近一个项目里需要做一个文件过滤驱动,我打算把整个过程中遇到的坑和解决方法,总结一下.这篇博客主要帮助大家实现驱动程序的开发 ...

  6. MTK 驱动开发(39)--低功耗分析工具

    1.功耗问题抓日志 功耗问题抓log请遵循几条原则: ------------------------------------------------------------------------- ...

  7. MTK 驱动开发(33)---Vibrator

    Vibrator 驱动开发相对比较简单 1.配置功能及参数 vibrator0:vibrator@0 {compatible = "mediatek,vibrator";vib_t ...

  8. MTK 驱动开发(32)---Sensor 移植及调试2

    接续上一节,本文主要介绍驱动部分的客制化 3. Sensor Driver 的客制化 主要涉及三个方面: 1)配置 codegen.dws ---I2C 地址.eint.gpio 2)配置驱动参数 3 ...

  9. MTK 驱动开发(39 )---待机流程

    MTK kernel待机流程   echomem > /sys/power/state              [android层调用节点] state_store()             ...

最新文章

  1. PTA数据结构与算法题目集(中文)7-38
  2. 手把手教你画酷炫环形图(图文详解)
  3. (三)ajax请求不同源之websocket跨域
  4. Functional Options
  5. javafx FlowPane布局
  6. 机器学习之异常点检测
  7. mysql的事物隔离级别
  8. 【转】zookeeper 的监控工具
  9. 为什么突然变乱码_9102年了,还不知道Android为什么卡?
  10. MapReduce:出租车数据案例
  11. 权益证明,私钥攻击与无法伪造的奢侈
  12. MacBook安装Golang Oracle数据库驱动程序
  13. 面试问题:2018年全国大学生数学建模竞赛项目(RGV动态调度模型、贪婪算法)
  14. fanuc机器人IO分配报警信号分配无效
  15. U880纯GPS定位综合解决方案,支持谷歌地图老虎地图百度地图
  16. 在 Mac 上重命名 Apple Magic Mouse的方法!
  17. LCD字体前端实现(最详细)
  18. 马赛克效果的滤镜实现
  19. Java在PDF中添加水印(文本/图片水印)效果import com.spire.pdf.*; import com.spire.pdf.graphics.*; import java.awt.*;
  20. gitlab企业微信webhook机器人

热门文章

  1. c语言数据的自动转换类型吗,c语言的自动类型转换
  2. 菜鸟学习笔记:Java基础篇2(变量、运算符、流程控制语句、方法)
  3. 《Reids 设计与实现》第一章 简单动态字符串和链表
  4. iOS多线程编程的知识梳理
  5. 并发容器——ConcurrentHashMap
  6. jieba库分词词频统计
  7. 数据库SQL优化总结
  8. MonkeyRunner之小白如何使用MonkeyRecorder录制回放脚本
  9. 夺命雷公狗—angularjs—11—service的基本概念
  10. Linux的sys接口和proc接口创建