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

1.概要

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

2、背景知识

2.1 最干净的待机电流波形

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

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

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

MTK 驱动开发(34)---待机功耗调试_第1张图片

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 ,不同的架构有不同的唤醒源,在分析问题之前需要确认清楚架构。

MTK 驱动开发(34)---待机功耗调试_第2张图片

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

MTK 驱动开发(34)---待机功耗调试_第3张图片

唤醒源是我们定位问题的关键,需要了解清楚哥哥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

MTK 驱动开发(34)---待机功耗调试_第4张图片

MTK 驱动开发(34)---待机功耗调试_第5张图片

A)问题描述:

MTK 驱动开发(34)---待机功耗调试_第6张图片

B)log

MTK 驱动开发(34)---待机功耗调试_第7张图片

C) 电流波形

MTK 驱动开发(34)---待机功耗调试_第8张图片


MTK 驱动开发(34)---待机功耗调试_第9张图片


你可能感兴趣的:(MTK,驱动)