(1)系统是否能够进入 power_down;
(2)系统进入 power_down 后唤醒的频率;
确保系统能进入 power_down 以及尽量减小 power_down 后唤醒的频率会对系统功耗有很大的改善。
2.2. 调试
影响系统功耗的最主要原因就是系统是否能够进入 power_down,以及进入后被唤醒的频率。我们应
该先确保是否能够进入 power_down,判断是否有进入 power_down 可通过下面的打印来进行。
有时候可能会发现没有出现 busy 打印,但系统仍然无法进入 power_down 的情况。这种
情况很大可能性是程序里面用 sys_timer_add 注册了太多定时,或者注册了一个时间间隔很短的定时,该
定时注册函数所注册的定时是会唤醒系统的。如果定时间隔小于进出 power_down 所必须消耗的恢复时
间,那么系统也不会进入 power_down。
(2)当系统出现图示“<>”打印时,说明系统已经能够成功进入低功耗。在确保系统能够正常进入低
功耗后,接下来就是要根据“<>”打印来判断系统是否被频繁唤醒。系统低功耗期间(power_down),其
自身是会以大概 500ms 的时间周期唤醒。因此,在正常情况下,我们会看到一个比较缓慢的“<>”打印。
Power_down 除了自身能够周期性唤醒外,还能被其他系统调度和 IO 中断唤醒。因此,当我们看到“<>”
打印比较频繁的时候说明系统其他地方一直存在频繁调度或者有某个唤醒 IO 一直触发中断。
系统的频繁调度一般都是由蓝牙和 sys_tiemr_add 引起的。蓝牙模块引起的系统调度后面章节再进行
介绍。而 sys_timer_add,我们 SDK 自身会有部分模块使用了 sys_timer_add,例如各个设备检测(SD 卡,
USB,LINEIN)等,这些设备检测注册的定时时间都相对较短,因此设备检测开得越多,也会造成系统
唤醒变频繁。