当前位置:   article > 正文

MTK 驱动开发(34)---待机功耗调试_r12_conn2ap_spm_wakeup_b

r12_conn2ap_spm_wakeup_b

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中找到,

  1. #if defined(CONFIG_MICROTRUST_TEE_SUPPORT)
  2. #define WAKE_SRC_FOR_SUSPEND \
  3. (WAKE_SRC_R12_PCM_TIMER | \
  4. WAKE_SRC_R12_PMCU_WDT_EVENT_B | \
  5. WAKE_SRC_R12_KP_IRQ_B | \
  6. WAKE_SRC_R12_CONN2AP_SPM_WAKEUP_B | \
  7. WAKE_SRC_R12_EINT_EVENT_B | \
  8. WAKE_SRC_R12_CONN_WDT_IRQ_B | \
  9. WAKE_SRC_R12_CCIF0_EVENT_B | \
  10. WAKE_SRC_R12_CCIF1_EVENT_B | \
  11. WAKE_SRC_R12_PMCU_SPM_IRQ_B | \
  12. WAKE_SRC_R12_USBX_CDSC_B | \
  13. WAKE_SRC_R12_USBX_POWERDWN_B | \
  14. WAKE_SRC_R12_EINT_EVENT_SECURE_B | \
  15. WAKE_SRC_R12_MD1_WDT_B | \
  16. WAKE_SRC_R12_CLDMA_EVENT_B | \
  17. WAKE_SRC_R12_SCP_SPM_IRQ_B | \
  18. WAKE_SRC_R12_SCP_WDT_EVENT_B | \
  19. WAKE_SRC_R12_C2K_WDT_IRQ_B | \
  20. WAKE_SRC_R12_CSYSPWREQ_B | \
  21. WAKE_SRC_R12_ALL_MD32_WAKEUP_B)
  22. #else
  23. #define WAKE_SRC_FOR_SUSPEND \
  24. (WAKE_SRC_R12_PCM_TIMER | \
  25. WAKE_SRC_R12_PMCU_WDT_EVENT_B | \
  26. WAKE_SRC_R12_KP_IRQ_B | \
  27. WAKE_SRC_R12_CONN2AP_SPM_WAKEUP_B | \
  28. WAKE_SRC_R12_EINT_EVENT_B | \
  29. WAKE_SRC_R12_CONN_WDT_IRQ_B | \
  30. WAKE_SRC_R12_CCIF0_EVENT_B | \
  31. WAKE_SRC_R12_CCIF1_EVENT_B | \
  32. WAKE_SRC_R12_PMCU_SPM_IRQ_B | \
  33. WAKE_SRC_R12_USBX_CDSC_B | \
  34. WAKE_SRC_R12_USBX_POWERDWN_B | \
  35. WAKE_SRC_R12_EINT_EVENT_SECURE_B | \
  36. WAKE_SRC_R12_MD1_WDT_B | \
  37. WAKE_SRC_R12_CLDMA_EVENT_B | \
  38. WAKE_SRC_R12_SCP_SPM_IRQ_B | \
  39. WAKE_SRC_R12_SCP_WDT_EVENT_B | \
  40. WAKE_SRC_R12_C2K_WDT_IRQ_B | \
  41. WAKE_SRC_R12_CSYSPWREQ_B | \
  42. WAKE_SRC_R12_SEJ_EVENT_B | \
  43. WAKE_SRC_R12_ALL_MD32_WAKEUP_B)
  44. #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) 电流波形





声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/266579?site
推荐阅读
相关标签
  

闽ICP备14008679号