引言
Datalight 这家公司专门从事嵌入式系统相关的软件开发,他们有一套移动终端设备的数据存储方案,用来保证手机、笔记本、电脑医疗设备、汽车设备等等的数据安全。
Cameron Dahl,是一名华盛顿大学的电子工程系应届生,他在Datalight实习期间,参与了一项存储系统功耗对比的项目,本文是他自述的一段测试经历:使用PicoScope 4424示波器测试eMMC功耗的过程,并给出了测试结果。以下是Dahl提供的报告:
项目概览
Datalight开发了一种容错的文件系统,以及一些提升eMMC性能的驱动,供移动设备使用。最初我被分配的一项任务是:给好几种不同的eMMC闪存模块测量功耗,对比使用Datalight软件前后的提升,给市场部门提供一些图表方便宣传展示。
图1:PicoScope 4424 测试eMMC案例
收集数据
从一开始我就在想怎么从移动设备收集数据,有效地表征eMMC的功耗,为了模仿真实的应用,我先在使用Datalight文件系统的Linux上运行性能跑分软件,结果会在命令行或者图形界面里面显示出来。
然后,我再测试了一组使用标准Linux文件系统的情况,对比它和Datalight之间的区别。
eMMC卡通常使用一个很小的方形封装,它可以直接焊接到PCB上面,也可以跟USB-SD读卡器连接。封装的尺寸有3种,每种的读卡器都不相同,大部分的读卡器都没有把Vcc供电引脚印出来,他们基本上都是当作SD卡槽来用的。另外一些有Vcc引出的读卡器,会带有一个两针的跳线,他们就是专门用来测量eMMC功耗用的。
在测试过程中,我用到了两个读卡器的型号,MicronNumonyx 和SamDisk iNAND,他们都引出了Vcc信号,我在Vcc跳线的两根针之间插入一个1Ω的电阻,借此测量功耗。
通过这种方法,我测试了许多种不同的eMMC卡,并且把它们的功耗做了对比。
测量功耗
上面已经提到我用了1Ω电阻,测量两端的压差然后反算电流。实际测试时,我用两根示波器的表笔分别测量电阻两端的电压。当然,为了测试报告好看,最终的结果还需要换算成功率数值。eMMC的供电电压大约是3.315V,所以最终eMMC功耗是:Pr= i x 3.315 – i*i 其中i是电流值。
大量数据怎么办
刚开始我是用Excel来收集数据的,后来发现它最多只能存100万行左右,而我需要记录500万个数据点,直接把数据保存成Excel格式行不通。所以我用了一个开源软件CSVed,每次记录100万个数据,分5次记录,然后把它们拼起来。
图2:CSVed测试结果记录界面
测试设备方面,我曾尝试用自己熟悉的TektronixMSO/DPO 2000系列,把数据保存成csv格式,同时保留波形截图。但是很快就遇到了问题:
虽然我可以用Tektronix示波器抓到500万个数据点,但是不幸地是当我抓取这么长时间波形的时候,采样率就变得太低了。我理想的测试时长是15分钟甚至更长,在这个过程当中,我不但要记录整段的功耗波形,还需要放大去分析局部的一些细节,比如在eMMC进行读写操作的时候对应的功耗变化。换句话说我需要示波器在记录长时间波形的同时,采样率也足够高。
图3:Tektronix 波形截图
另外,每测量一组结果我都要把数据和截图用优盘导入到电脑上,这非常耗时,在后面进行大量测试的时候这会浪费很多时间,所以我开始调研有没有基于PC控制的示波器。
入手PicoScope
后来我查到了PicoTechnology,在官网上我浏览了各种PicoScope的型号,然后一个本地的代理商给我讲解了它们各自的特点和区别。在我的测试应用里面,Tektronix只能工作在12.5KS/s采样率下,归根结底是存储深度的限制。而PicoScope同档次的产品存储深度可以达到Tektronix的10倍以上,因此记录同样长度的时间,采样率也就能高出10倍。
我立刻向Datalight公司申请买一台PicoScope 4424, 一个星期就到货了。