2. 准备测试环境
a) 准备好带串口的板子,
调试用的
PC 等;
b) 将该调试内核烧录进板子,并连接好电池、串口线等;
c)启动系统, PC
上记录串口打印出的电池
AD 值及时间;
d)将板子设置为永不休眠:
方法一:在
android4.0 中将 setting->developer options->stay awake 勾选;
方法二:也可以在串口中使用命令,
echo 1 > /sys/power/wake_lock
e) 拔掉电源,长时间播放视屏,将电量消耗完。
3. 充电/放电测试
a)原理大致描述:
1)电池电量变化曲线检测阶段:测量一次从完全满电到完全放电的放电过程和一次完全放电
到完全满电的充电过程,测量过程中只正常打开
pad,不额外运行其他 apk,也不进入休眠状
态;记录这两个过程所需要的时间,并配置到
config 中,然后对这两曲线按时间进行 10 等分,
将其
adc 值也配置到 config 中去
2)根据检测阶段配置情况,驱动计算一般情况下充电/放电时电量加/减一所需要的时间,并将
其转化为计数周期数
3)由于实际运行时耗电情况的变动,电量加一或减一所需要的计数周期数会变动,变动的依
据是在这个计数周期内实际检测到的
adc 值和我们根据当前显示的电量转化过来的 adc 值差异
情况做一个综合判断,比如说实测值比转化值要高的次数在占这个计数周期的比例,高于一定
值时我们认为当前显示的电量较实际的低,那么下一个周期(如果是在充电)就要缩短一些
(如果是在放电)就要相应延长一段时间
4)计数周期数也不能无限短或无限长,在驱动中我们也给其加入了取值范围
5)休眠/唤醒阶段也根据休眠的时间做唤醒后电量值相对于休眠前电量值的变化范围做一个大
概估计,约束其变化在这个范围内
b)测试过程
需要记录从低电关机状态至充满状态、再从充满状态放电至强制关机状态的所有
AD 值,并分别
计算出充电和放电时间。
打印消息如下:
[1] [803] [0] => show:[817][ 72%]
前面三个数字:
[1]:表示 adapter 插入,不插入时为[0];
[803]:表示 ad 转换的实际结果。
[0]:表示是否充满,充满时为[1],实际中不能只靠这个脚的跳变来确定满电与否。
后面的数字: