和你一起终身学习,这里是程序员Android
经典好文推荐,通过阅读本文,您将收获以下知识点:
一、飞行模式测试步骤
二、飞行模式Debug 要点
三、如何确认休眠唤醒源
四、如何根据 RTC alarm 唤醒寻找对应的app和alarm
一、飞行模式测试步骤
飞行模式待机电流是测试其他场景电流的基础,如需解决其他场景的电流问题,第一要保证的是飞行模式待机电流正常。否则无法确定问题。下面我们看看飞行模式待机电流的测试与分析方法。
飞行模式测试步骤如下:
确认 WiFi 、BT 、Location、是否已经默认关闭。
包含GMS的版本(非GMS 版本跳过此步骤)
需要登陆Google 账号,打开 PlayStore 更新手机上 My apps & games,更新完毕,亮屏待机5分钟,确保GMS更新同步完毕,然后关闭 GMS的同步功能。
打开PlayStore,更新手机上My apps & games
打开飞行模式,等待30s,按Powerkey 灭屏休眠,然后测量电流。
二、飞行模式Debug 要点
1.首先要保证所有的GPIO 状态配置正确!
这个很重要,如果配置错误,就无法进行正常操作。
2. 确认系统是否已经休眠 [WDT] suspend
通过在 kernel log 中 搜索关键字: [WDT] suspend
,确认系统是否已经进入休眠状态,如果kernel log中有以上关键字,就表示已经进入休眠状态。
如下 log中可以看到<7>[199145.576777] -(0)[2029:system_server][name:mtk_wdt&][WDT] suspend
部分log如下:
<7>[199145.576777] -(0)[2029:system_server][name:mtk_wdt&][WDT] suspend
<4>[199145.576777] -(0)[2029:system_server][SPM] md_settle = 99, settle = 99
<4>[199145.576777] -(0)[2029:system_server][SPM] sec = 900, wakesrc = 0xe00c5e4 (1)(1)
<4>[199145.576777] -(0)[2029:system_server][SPM] wake up byEINT, timer_out = 2046093, r13 = 0x40000, debug_flag = 0x9f
<4>[199145.576777] -(0)[2029:system_server][SPM] r12 = 0x20, raw_sta = 0x20, idle_sta = 0x9fa, event_reg = 0x90100000, isr = 0x0
<4>[199145.576777] -(0)[2029:system_server][SPM] suspend dormant state = 0, md32_flag = 0x0, md32_flag2 = 0
<4>[199145.576777] -(0)[2029:system_server][SPM] log_wakesta_index = 8301
3. 观察电流波形是否是一条平线
如果休眠,需要观察电流波形是否是一条平线,如果是,则表示正常,如果不是,则需要分析异常跳起的唤醒源。
飞行模式正常待机电流波形图如下:
飞行模式正常待机电流波形
4. 如果中间有异常毛刺,需要确认唤醒源
如果中间有异常毛刺,需要根据log确认唤醒源,关于如何确认休眠唤醒源,请往下看看第三步。
飞行模式异常
待机电流波形图如下: