sd卡测试我们分为裸设备速率测试和文件系统下读写测试。
测试思路:将一个100MB的文件写入sd卡或者从sd卡读出100MB的文件。得到写入和读取的速率。

裸设备测试

实现:采用dd命令 ,输入文件为/dev/zero,生成100MB的全0文件写入sd卡 /dev/mmcblk0或者/dev/mmcblk0p1,或者从sd卡读取50MB的文件。使用time命令得到平均时间。
代码(shell):

while true
do echo "writing......"  time dd if=/dev/zero of=/dev/mmcblk0p1 bs=1024K count=100 echo "reading......"time dd if=/dev/mmcblk0p1 of=/dev/zero bs=1024K count=100
done

文件读写速率测试

上面的方法只能得到平均速率,但是没法知道每一秒的写速率,因为sd卡的写速率可能事不均匀的,所以我们需要知道每一秒的写速率。
思路:创建一个新文件,起一个线程写文件,另一个线程读取文件的大小信息,比较两秒之间的文件差,得到每秒的写速率。
代码©:

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <pthread.h>#define TEST_NODE "/mnt/sda/test_node"
#define TEST_BUF_SIZE (1024*64)
char test_buf[TEST_BUF_SIZE] = {0};void* write_thread(void* arg);
unsigned long get_file_size(const char *path)
{  unsigned long filesize = -1;      struct stat statbuff;  if(stat(path, &statbuff) < 0){  return filesize;  }else{  filesize = statbuff.st_size;  }  return filesize;
}  int main()
{int ret = 0;pthread_t wr_tid = 0;int times = 0;int file_size_last = 0;int file_size = 0;for (int i = 0; i < TEST_BUF_SIZE; i++){test_buf[i] = TEST_BUF_SIZE - i;}int fd = open(TEST_NODE, O_WRONLY|O_CREAT);if (fd < 0){printf("open file failed errno(%d)", errno);return -1;}ret = pthread_create(&wr_tid, NULL, write_thread, &fd);if (ret != 0){printf("create thread failed!\n");goto exit;}while(1){sleep(1);file_size = get_file_size(TEST_NODE);if (file_size < 0){printf("get file size failed!!!\n");break;}printf("file_size: now: %d, last:%d times:%d speed %d KB/s\n", file_size, file_size_last, times, ((file_size - file_size_last) / 1024));fflush(stdout);file_size_last = file_size;times++;}pthread_join(wr_tid, NULL);
exit:close(fd);return ret;
}void* write_thread(void* arg)
{int fd = * (int*)arg;int ret = 0;while(1){ret = write(fd, test_buf, sizeof(test_buf));if (ret != sizeof(test_buf)){printf("write failed ret: %d, expect:%d\n", ret, sizeof(test_buf));break;}}
}

随笔misc:sd卡速率测试用例相关推荐

  1. SD卡驱动开发随笔(1)

    前不久刚写完SD卡驱动,最后的运行和读写文件效果自己也比较满意以下是性能测试结果 ----------------------------------------------------------- ...

  2. 树莓派sd卡格式化_树莓派的sd卡存储空间太小,挂载个移动硬盘吧

    树莓派的sd卡的存储空间太小了,如果需要存储大文件,分分钟耗尽,这时候就要考虑给它挂载个硬盘.刚好我手边有一个移动硬盘,装起来. 材料列表 移动硬盘:USB接口的 autofs:监听硬盘使用情况,自动 ...

  3. imx6 android SD卡启动

    工作中需要将imx6的android系统从SD卡启动,所以就分析了MfgTool中的脚本,分析android的分区情况,并尝试自己操作,竟然成功了,记录于此. 参考文档 http://www.kanc ...

  4. activiti高亮显示图片_【正点原子FPGA连载】第二十章SD卡读BMP图片HDMI显示实验领航者 ZYNQ 之嵌入式开发指南...

    1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...

  5. S5PV210裸机之SD卡

    主流的外存设备介绍 内存和外存的区别: 一般是把这种RAM(random access memory,随机访问存储器,特点是任意字节读写,掉电丢失)叫内存,把ROM(read only memory, ...

  6. S5PV210体系结构与接口11:NandFlash SD卡编程

    目录 1. Flash ROM简介 1.1 概述 1.2 Nor & Nand Flash比较 1.2.1 接口对比 1.2.2 容量和成本对比 1.2.3 可靠性对比 1.2.4 使用寿命对 ...

  7. S5PV210体系结构与接口09:SD卡启动详解

    目录 1. MMC技术演进 1.1 NandFlash & NorFlash芯片 1.2 MMC卡 & SD卡 & MicroSD卡(TF卡) 1.2.1 代际关系 1.2.2 ...

  8. MTK平台--Android P SD卡检测

    SD卡检测 文章目录 SD卡检测 前言 目录 代码分析 问题追踪 所思 前言    最近公司拿到了Android P的代码,需要在原有的项目基础上将Android 8.1升级为Android 9.0: ...

  9. termux获取sd卡读写权限_原来是用错了读卡器,雷克沙lexar 1667X 真实读写性能测试...

    上一篇文章结合泥坑D3300套装老设备对雷克沙新版1667x 进行兼容性部分的测试,可以正常使用,而且在拍摄性能上有了很大的提升.当然雷克沙新版1667x 主要还是用来搭配SONY A6100来进行视 ...

  10. 内部存储空间 手机存储空间 sd卡

    有些手机(如MTK平台)分内部存储空间和手机存储空间,据说内部存储空间只是给装软件用的,而手机存储空间类似内置的SD卡,这样分经常导致安装软件时,明明有空间,但是还是装不下.请问为什么要这样分呢?有什 ...

最新文章

  1. 【Qt】Qt动态库和静态库的创建和使用
  2. oracle表决盘奇数,Oracle 的OCR,表决盘与ASM SPFILE恢复方法
  3. vue 实战问题-watch 数组或者对象
  4. 数据流通与交易国家实验室成立 由上海牵头组建瞄准行业重大需求
  5. 深入super,看Python如何解决钻石继承难题
  6. seaJS简介和完整实例
  7. 转载:缓存 Cache
  8. android点击弹出滑动条,IndicatorSeekBar Android自定义SeekBar,滑动时弹出气泡指示器显示进度...
  9. VTK:光标形状用法实战
  10. GIT — 使用回顾
  11. 146. LRU 缓存机制
  12. 解决 mysql>com.mysql.jdbc.PacketTooBigException: Packet for query is too large (12073681 > 4194304)
  13. Unix编程艺术-原则
  14. DSkinControl( For MFC) 控件- dsCtrlComboBox
  15. tensorflow 版本列表_TensorFlow 版本兼容性
  16. Android百度语音集成——文字转语音
  17. 前后端分离和不分离到底有什么区别
  18. Kettle基本使用(四) —— 应用的使用
  19. C++:有限差分法求解随时间变化 平流方程 ut = - c * ux 在一个空间维度上,与 恒定速度,使用Lax方法作为时间导数(附完整源码)
  20. C语言实现简易扫雷小游戏

热门文章

  1. html纵向广告滚动,jquery广告滚动 jquery 实现文字左右滚动
  2. Unity 自定义Package
  3. Android广播静态注册失效
  4. 05使用TypeScript实现Doom3词法解析器(读书笔记:TypeScript图形渲染实战算法分析与架构设计)
  5. WeaveSocket框架-Unity太空大战游戏-通信协议-2
  6. python、pygame开发的太空大战游戏源代码
  7. surface屏幕自动调节亮度无法关闭
  8. Acm - 隔壁老王买酒问题
  9. 文件是否存在 FileExists 方法
  10. CSS之display用法