Android 功耗(5)----功耗调试

时间:2020-09-10 11:21:00 来源:互联网 作者: 神秘的大神 字体:

本文就开始讨论功耗的调试步骤和方法。

本文主要的内容如下:

一、明确调试的目标

二、明确调试的内容

三、参照电路框图找出我们需要检测的输出

四、找出或引出需测试的输出

五、功耗测试的步骤流程图

一、明确调试的目标

明确调试的目标,即在满足当前的需求情况下,尽最大的可能去降低各种状态下、各路模块的功耗值。一般情况下,功耗越低要求也就越严格。例如:某设备的电池为300mAh,假设一种情境下休眠功耗电池端为0.8mA,另一种情境下功耗电池端为1mA,显然仅仅相差200uA(出现这种状态的情况就比较多了,有可能是GPIO口的状态不对,也有可能是外设漏电引起,还有可能是电源管理配置有问题。)通过计算可以算出来0.8mA待机375小时,而1mA待机300小时,相差75小时,这对一个设备来说是很重要的。

二、明确调试的内容

我们为了更好的调试功耗,必须做一个简洁并且一目了然的表格用来记录我们的测量结果,总的来说测试表格的内容几乎就是我们测试的内容;

概况的说,包括需要调试6种状态和5个电路模块的功耗,其中

6种状态是指:

第一、开机后的空闲状态(开机亮屏状态下,不进行任何操作,即,后台几乎没有CPU资源占用率高的进程);

第二、关闭显示屏,但不休眠的状态;

第三、进入休眠过程中(early_suspend)的状态;

第三、完全进入休眠的状态;

第四、完成关机的状态;

第五、其他状态下(比如视频播放、蓝牙通信、WiFi连接、游戏运行等),该状态只是用来评估CPU内部模块,或者某个特定的外设工作时的功耗。

5个电路模块是指:

Battery(电池供电的电路,是设备总的功耗);

cpu_core(给处理器内部的逻辑电路供电的电路);

cpu_memory(给SDRAM(DDR)以及处理器DDR phy供电的电路);

vddio(给处理的VDDIO以及一些处理器内部的外设控制器,外部的外设供电的电路);

其他的外设(包括其他全部的外设,例如wifi、bluetooth、tp以及lcd等,这个可以列出多种调试状况)

测试的内容当然可以根据当前情况进行有目的测试,比如下图就是我在测试是做的表格:

image

注:如果测试的数据值是正确的,我们还需要记录下测试所用的代码版本,所用的软件资源,测试时间,测试人员,以及主频,外频等情况。

三、参照电路框图找出我们需要检测的输出

image

由newton的框架图可知:

(1) CPU_core由OUT1(1.2V)供电;

(2) CPU_mem由OUT2(1.8V)供电;

(4) OUT6(3.3V)给EVG供电;

(5) OUT9(3.3V)和OUT17(1.8V)给TP供电;

(6) OUT10(1.8V)给MIC供电;

(7) OUT11(3.3V)给sensor供电;

(8) OUT12(3.3V)给MOTOR供电;

(9) OUT13(3.3V)和OUT14(1.8V)给LCD供电;

(10) OUT16(3.3V)给sensors供电;

(11) OUT19(1.8V)给wifi供电;

进而我们了解了整块板的基本供电情况,从而测量各个模块的电流情况。

这里我们用到regulator,但是很多开发板或者设备没有regulator,这时我们就得在电路图中获得每个模块的供电情况。

注:像君正的newton开发板是具有regulator的,在板级中我们能看到regulator的简单配置,还有一些基本的配置,regulator参数的调试也是属于功耗调试的,如果木有的话,就算了。

四、找出或引出需测试的输出

1、电源端比较容易测量;

2、其他测试点:我们需要借助altium designer、99SE、DXP、PADS等工具,找出易测量的点或者飞线,这里就省了如何查找的步骤;

有了前面的铺垫,我们大致了解了功耗测试的步骤:就是测试每个部分的实际值,再与理论值作对比,出现不符情况,通过硬件的修改和程序的调试,作出修改,是得两个部分相近,即达成了我们的目标。

具体的测试流程图如下:

image