测试目的,实验在使用CH376对U盘内文件进行拷贝,测试拷贝速度。

实验条件,STM32103VC(内部64KRAM,256Kflash),72Mhz,SPI 18Mhz,CH376,测试文件:MODBUS.PDF, 文件大小366 KB

测试1:字节方式读写CH376ByteRead,CH376ByteWrite,RAM缓存大小char buf[640];

测试结果,完全复制完需要19S,平均速度为19KB/S,感觉不是一般的慢。

测试2:字节方式读写CH376ByteRead,CH376ByteWrite,RAM缓存大小char buf[6400];

测试结果,程序不能运行,究其原因,发现启动文件的设置:

startup_stm32f10x_hd.s设置

因为局部变量被分配在堆上,由启动文件设置可以看出其不能超过1024字节,所以当设置buf为6400时就出现错误了。

测试3:使用更大的buf,放在flash中,字节方式读写CH376ByteRead,CH376ByteWrite,缓存大小全局变量char buf[6400];

测试结果,完全复制完需要10S,平均速度为36.6KB/S

测试4:使用更大的buf,放在flash中,字节方式读写CH376ByteRead,CH376ByteWrite,缓存大小全局变量char buf[6400];//不能接近48K

测试结果,完全复制完需要10S,平均速度为36.6KB/S,居然与方法3相同,可见使用字节方式对于速度的提升使用更大的buffer不能提升速度了,因此在上述方法的基础上改用扇区方式读写进行测试

测试5:扇区方式读写CH376SecRead,CH376SecWrite,RAM缓存大小char buf[640];

测试结果,完全复制完需要好几分钟,不知道为什么比字节模式还慢

测试6:扇区方式读写CH376SecRead,CH376SecWrite,RAM缓存大小char buf[6400];将堆栈段改为0x2800,即10240,10KB

测试结果,完全复制完需要好几分钟,不知道为什么比字节模式还慢。

原因发现CH376SecRead开始都能读出100个扇区,但是明明还没读完就只能读出33个扇区了,以后都只能读出一个扇区了,所以异常的慢。

使用扇区方式读写时发现,每次读出100个扇区,开始的时候是正确的,后来就不对了,不到100个,但是显然源文件数据刚读取了一点点,就不正确了,这是为什么呢,一下是一段扇区方式读取文件的代码:

(CH376_DAT_BLOCK_LEN 为64,sizeof(buf)= 6400)

ByteCount = 0;

sec_num =sizeof(buf)/ DEF_SECTOR_SIZE; //一次可以处理的总扇区

do{

strcpy(SrcName, FILENAME);

s = CH376FileOpen(SrcName);                 /* 打开文件 */

if ( s != USB_INT_SUCCESS )

mStopIfError(s );

s = CH376SecLocate(ByteCount/CH376_DAT_BLOCK_LEN ); /* 以扇区为单位移动当前文件指针到上次复制结束位置 */

if ( s != USB_INT_SUCCESS )

mStopIfError( s );

//printf( "Reading...\r\n" );

s =CH376SecRead( buf, sec_num , &ThisSecLen );

if ( s != USB_INT_SUCCESS )

mStopIfError( s );

s = CH376FileClose(TRUE);                 /* 关闭文件 */

if ( s != USB_INT_SUCCESS )

mStopIfError( s );

ByteCount+= ThisSecLen*CH376_DAT_BLOCK_LEN;  //已经读出的总字节

printf( "read ThisSecLen = %ld\r\n",ThisSecLen);  //打印每次读出实际扇区数

printf("ByteCount=%ld,FileSize=%ld\r\n", ByteCount,FileSize ); //打印已经读出字节数与文件总数

}while(ByteCount<FileSize);

以及串口打印结果:

串口打印写入字节数

终于发现问题了,原来是把DEF_SECTOR_SIZE和CH376_DAT_BLOCK_LEN给搞错了,原来USB的扇区大小是512字节,而不是64字节,Ch376的buf大小才为64字节,改过来就OK了。

测试结果,完全复制完需要5S,平均速度为72KB/S,使用扇区的方式拷贝的速度大大提高了。

粗心大意害死人阿, 在以后做测试前最好把关键参数搞清楚,不要像这样走太大的弯路。

关于CH376拷贝U盘文件速度的测试比较相关推荐

  1. LINUX 下设置优盘挂载点,拷贝U盘文件

    LINUX 下设置U盘挂载点,拷贝U盘文件 linux 下使用终端进行U盘内文件的拷贝 先将U盘插入电脑后,需要查看系统是否已经识别到存储设备,并获得设备的路径 需要进入root 用户下进行相关操作, ...

  2. 自动拷贝u盘文件 c语言,U盘自动读取软件

    这是U盘自动读取软件,用来设置 U 盘自动运行项,插上 U 盘即可运行盘内文件.俗话说,任何事都有两面性,比如 Autorun.inf 自动运行文件. 软件功能 悄悄拷贝U盘文件到电脑文件夹! 1.自 ...

  3. linux命令行下读取u盘内容_Linux拷贝U盘文件(命令行)

    Linux系统有的有界面,有的没有只要命令窗口,因此导入外部文件就变得困难,没有可视化的方便. 这里通过挂载u盘进行文件拷贝. 首先挂载u盘:这里以centos为例 1.进入命令行模式下,输入命令 s ...

  4. 偷偷自动拷贝U盘文件(按照原文件夹格式保存)实用

    以前在学校上电脑课的时候总是馋老师U盘的身子,心想要是能把他里面的的课件拷贝下来就好了.不仅看得清楚还能省下拍PPT再抄到书上的麻烦,于是乎他来了. 这个拷贝软件打包以后可以完全静谧拷贝,不需要人工干 ...

  5. Linux拷贝U盘文件(命令行)

    首先挂载u盘:这里以centos为例 1.进入命令行模式下,输入命令 sudo -i,获取root权限. 2.mkdir /usb //创建一个目录,用于挂载U盘 3.fdisk -l //查看系统中 ...

  6. c语言自动拷贝u盘文件,写了一个偷偷拷贝老师U盘所有文件的程序……蛋疼……………...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 直接双击运行,程序会每一秒检查一下是否有移动盘插入,如果有,就在C盘下新建一个文件夹copy,并把移动盘内所有的文件拷贝到C:\copy下.拷贝完成后自动 ...

  7. php读这文件速度,php 测试硬盘读写-php 测试硬盘写速率

    使用php写入一个1GB大小的文件,检查硬盘的写速率,可能有一定误差, 建议还是使用专业的硬盘测试工具来检测 一般电脑读写在20M/s,这个测试要执行大概40-50s 仅供参考: set_time_l ...

  8. Linux1T大文件拷贝,U盘拷贝大于4G的iso文件时提示对于目标文件系统 文件过大解决方法全集...

    [文章导读] U盘在我们日常使用过程中已经在广泛的使用了,很多人都喜欢拷贝文件,u盘传输速度上的是非常快的,但是有不少用户在使用U盘过程中遇到问题,u盘不能拷贝超过4G的大文件,提示" U盘 ...

  9. u盘往linux考文件过大,U盘拷贝时提示文件过大怎么办,教您如何解决

    现在的高科技时代生活中,u盘的使用已经是许多从事电脑it行业的人每天都必须要用到的用具.但在u盘拷贝文件的过程中会一些奇怪的问题令人无法理解,最近,小编在使用u盘拷贝一个系统文件时却出现了文件过大的错 ...

最新文章

  1. java---实现闹钟的基本功能
  2. 异步消息的传递-回调机制
  3. MD5加密字符串并转化为base64(C#和PHP代码相同实现)
  4. 计算机核心配件是什么,计算机的核心是什么
  5. java引用类的关键字_java中定义类通常使用的关键字有哪些
  6. JavaScript全局变量的本质及页面共享问题
  7. 正则表达式(三)操作符的运算优先级、全部符号的解释
  8. Linux下安装gcc5.5
  9. web1:http协议简介和用netassist和py程序当http服务器
  10. 考研数据结构(3)笔记
  11. 薅羊毛第三十七次更新
  12. 计算机专业考研电路原理,2016年南开大学综合基础课(模拟电路、数字电路、计算机原理)考研试题.pdf...
  13. SSL 1203 书的复制
  14. MySQL数据库中数据完整性_MySQL数据完整性详细讲解及实现方式
  15. 基于ssm的个人博客系统的设计与实现(含源文件)
  16. yum安装软件时报错:Errors during downloading metadata for repository ‘AppStream‘的处理
  17. 看我拿下域控-cve2020-1472-Netlogon
  18. 21个有用的python工具
  19. opengl 画椭圆_漫谈椭圆的几何性质(之一)
  20. linux alc权限,Linux账号管理与ALC权限设定(二)

热门文章

  1. 世界上不同国家有不同的写日期的习惯。比如美国人习惯写成“月-日-年”
  2. 软件安全实验(一)PEVIEW-弹窗操作
  3. 华为最近面试后要等多久才有消息?(有经验进)
  4. MySQL服务端的安装
  5. 软件测试:selenium自动化测试
  6. RT-Thread 使用FAL多字节读写FLASH
  7. 计算机专业工作紧张熬夜吗,性别:男,年龄:35,合肥,从事工作:计算机,性格内向,生活和工作压力大,人好紧张焦虑,前几年总是加.....
  8. 子网掩码及IP地址相关计算方法
  9. Android-MVP模式详解,一篇文章帮你解答
  10. python面向对象案例--买水果