爱心和责任我要开发网浏览静态板块Algorithms-10-books
站长的博客Google USB工程USB设备开发导航!研发1万本书籍Book FIre!
发新话题
打印

请教大家U盘存储控制问题

Wikipedia Affiliate Button

请教大家U盘存储控制问题

请教大家关于linux+arm的U盘存储控制问题

我在做U盘存储控制器的开发,采用的arm9+linux开发Usb主控器,
在应用程序层面,我将数据使用write+fsync写入U盘(sandisk),
但是经过测试发现,一般来说每次存200字节的数据只需几ms,但是有时会出现将近200ms的问题,
检测USB总线的信号 发现主要是由于这段时间,U盘没有准备好接受(发送)数据因此一直回nak,而我这边的hc在一直重发所致。
因此,我判断是当每次写入200字节并且是强制写入U盘的时候,U盘写入速度不稳定(测试:每次存200字节共存储1亿字节会出现300多次超过150ms的现象),
但是当我以每次写入1024字节时,U盘写入速度会相对稳定许多(测试:每次存1024字节共存储1亿字节会出现2-3次超过150ms的现象)。
后发现凡是不是以1024倍数写入的话都会有此问题。请问这是为什么,nandflsh会出现写入速度不稳定的情况吗,那近200ms的时间究竟是怎么出现的呢,
我之所以每收到一组数据就存储一次是为了在断电时丢失最少的数据,因为应用环境不容许我缓冲一整页的数据然后再存储。可是我如果不以1024字节存储的话,会出现写入速度不稳定的情况,有时存储几百字节需要最长200ms(大部分时候还正常,几ms),由于我的存储控制器采用的是串行的方式(收数->存数)这样的话若串口以115200bps收数的话仍有可能丢2k的数。

另外,我仅仅是U盘存数据,不存文件。

我现在有三个具体问题请您帮着分析

1 您认为近200ms的时间是怎么产生的,有何种可能,是不是问题不仅仅是flash读写的问题,和U盘上的软件或者控制芯片有关吗

2为什么我以1024的倍数就稳定了许多,我查的资料发现nandflash的页大小一般两种,512字节和2k字节,我为什么是1024字节没事儿呢,(sandisk U盘)

3我我仅仅是往U盘屋里空间存数据,不存文件,也需要经过U盘的文件系统吗

请您帮着分析一下,不胜感激

TOP

中宏保险代理-上海请电话咨询-中宏人寿产品。 中宏是2个世界五百强企业的合资企业。全球奥运会唯一寿险合作伙伴!

如果写入u盘数据的时间过长,是由于u盘总是发nak的话,那应该是u盘的问题,原因有可能是u盘上软件的问题,也有可能是u盘flash读写控制器的原因,要看具体是怎么实现的。

另外u盘上是没有文件操作系统的,文件操作系统是由host实现的,也就是说host发的数据要写在u盘flash的哪个物理扇区上,在发数据之前就已经决定好了。

TOP

中宏保险代理-上海请电话咨询-中宏人寿产品。 中宏是2个世界五百强企业的合资企业。全球奥运会唯一寿险合作伙伴!
发新话题