跳到主要内容

3.14 TF(SD)卡&EMMC测试

  指令提示:

  time命令常用于测量一个命令的运行时间,dd 用于复制,从 if(input file)文件读出,写到 of(output file)指定的文件,bs 是每次写块的大小,count 是读写块的数量。"if=/dev/zero"不产生 IO,即可以不断输出数据,因此可以用来测试纯写速度。

3.14.1 SD卡测试

  开发板启动后将TF卡插到开发板底板卡槽处,打印信息如下。开发板会将TF卡自动挂载。(注意需要使用FAT32格式的TF卡)。

  使用df -h命令,查看SD挂载的分区。运行结果如下所示:

  读取速度测试,常用于测试硬盘读取速度指令有hdparm与dd,本次只演示hdparm读取TF卡的速度,数据采样时间过短,数据量少,速度仅供参考。

hdparm -t /dev/mmcblk1p1

  可以看出读取速度为65401kB/s。

  写速度测试

time dd if=/dev/zero of=/mnt/sdcard/test bs=1024k count=50 conv=fdatasync 

  使用dd指令读,因为 Linux系统机制,一般情况下不需要特意去释放已经使用的 cache。这些 cache 内容可以增加文件的读写速度。

  执行下面指令清除缓存。

echo 3 > /proc/sys/vm/drop_caches                    #清除缓存
time dd if=/mnt/sdcard/test of=/dev/null bs=1024k #读取速度测试
rm /mnt/sdcard3/test #读完将此文件删除

  可以看出读取速度为66.1MB/s。速度仅供参考,读取的文件越大,速度越准确。

3.14.2 EMMC测试

  eMMC作为存储设备,里面存放了linux系统,日后用户开发的应用都是在存储在这个设备里面(如果你不外接存储设备的话)。

  使用df -h命令确定,EMMC挂载的分区。运行结果如下所示,实际上eMMC存储被分成了许多个分区,挂载在“/”根目录下的也是eMMC分区,这里我们以mmcblk0p8分区挂载目录为/userdata为例。

df

  读取速度测试

hdparm -t /dev/mmcblk0p8

  可以看出读取速度为316719KB/s。

  写速度测试

time dd if=/dev/zero of=/userdata/test bs=1024k count=50 conv=fdatasync 

  可以看出写速度为144MB/s。

  使用dd指令读,因为 Linux系统机制,一般情况下不需要特意去释放已经使用的 cache。这些 cache 内容可以增加文件的读写速度。

  执行下面指令清除缓存。

echo 3 > /proc/sys/vm/drop_caches                   #清除缓存
time dd if=/userdata/test of=/dev/null bs=1024k #读取速度测试
rm /userdata/test #读完将此文件删除

  可以看出读取速度为270MB/s,读取文件过小,速度仅供参考。