功耗调试之如何调试功耗(一)
导航制导与控制实验室
2015年01月01日
本文就开始讨论功耗的调试步骤和方法。
本文主要的内容如下:
一、明确调试的目标
二、明确调试的内容
三、参照电路框图找出我们需要检测的输出
四、找出或引出需测试的输出
五、功耗测试的步骤流程图
一、明确调试的目标
明确调试的目标,即在满足当前的需求情况下,尽最大的可能去降低各种状态下、各路模块的功耗值。一般情况下,功耗越低要求也就越严格。例如:某设备的电池为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等,这个可以列出多种调试状况)。
测试的内容当然可以根据当前情况进行有目的测试,比如下图就是我在测试是做的表格:
注:如果测试的数据值是正确的,我们还需要记录下测试所用的代码版本,所用的软件资源,测试时间,测试人员,以及主频,外频等情况。
三、参照电路框图找出我们需要检测的输出
由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等工具,找出易测量的点或者飞线,这里就省了如何查找的步骤;
下面我们就开始介绍下测试的步骤了?!