内容简介
在默认的headset工程中,当系统进行关机的时候,会让芯片进入到dormant状态,本文介绍如何在关机后让芯片进入到Off状态。
测试工具
MDE:MDE_WIN_2.8.0.37_x64
Toolkit:ADK Toolkit 1.2.16.21_x64
QACT:NULL
Bluesuite:NULL
Hardware:Qualcomm QCC3084
Software:adk-src-1-0_qtil_standard_oem_qcc518x-qcc308x,ADK-23.1-CS1-r00593.1 headset
Here we go
分析
从芯片的datasheet中可以看到,芯片的状态有No Power state、Active state、Shallow Sleep state、Deep Sleep state、Dormant state和Off state,除了No Power state以外,其他的状态都是芯片通电时正常的工作状态。这里我们主要看Dormant和Off状态:
从以上的描述很容易发现,Off state比Dormant state功耗更低,随之而来的代价就是在Off状态下只能通过SYS_CTRL和VCHG两个引脚才能唤醒。但是为了能让耳机更省电,很多产品都会选择让其进入Off状态。
高通默认的headset程序在关机后进入的的Dormant状态,这个可以通过实际测量关机后的功耗得到。
经过分析代码后log,我们可以得知在进入最后的关机状态时,程序会运行到shutdown_table的位置:
在finalPowerOffSleepStep函数中可以看到调用了进入dormant的接口函数:
这也印证了默认程序并没有进入到Off状态。
解决方法
要让程序关机后进入到Off状态也很简单,只要修改finalPowerOffSleepStep里面的调用(用appPowerDoPowerOff替换appPowerEnterDormantMode)即可:
这样修改后,没记错的话会让芯片在关机状态下的功耗达到微安级别。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !