自己的项目已经快接近尾声,但是以前有一个问题自己非常的担心,一般u盘的读写寿命是10万次,而在u盘上建立一个文件,不断地往u盘中写数据,但是打开这个文件之后,对它写一些数,然后关闭该文件,这算一次读写,然后又打开文件,又追加一些数据,然后关闭,又算一次,我的一个试验要对同一文件操作上万次,那我的u盘只能做10个试验就报销了,于是天天计算怎么可以提高u盘的使用次数,结果我的理解错了,u盘的10万次是指的对同一点进行读写10万次才会坏,如果一个文件建立了,数据不断地往这个文件中写,那只能说这个文件读写了万次,而对u盘来说才是1次,这是我的理解,如果不对大家指出
我觉得你的说法有点问题,你写点数据进去,然后关闭文件,在关闭文件的时候,你计算了文件长度的话,那么,在FDT中就会将你的长度更新,而FDT是在U盘的一个扇区里面的,这样的话,你相当于操作了这个扇区,虽然你下次没有写你原来写的数据的位置,但是,你在关闭的时候还是操作了FDT的这个扇区,所以说不能按照你的说法来计算U盘的使用次数,你可以先写多数据下去,等你的数据写完了的话在计算文件长度的话,那样的话才可以省下你U盘的使用次数
我的同事刚才用dos下的debug操作了软盘,我看到了fat区文件的存储位置和fdt数据长度的存储位置,明白了对文件进行写入则fdt中的文件长度会随即改变,所以说,对同一文件fdt中的那个写长度位置的单元始终被擦写,但是我的文件为不重复的文件,只要fdt中的数据长度单元能完成我的一个试验,则就不会有第二次对同一地方进行写操作,因为我的第二个试验的文件名会不同,所以对应的fdt的长度单元就会改变,所以觉得没问题了,同时我也会看看你上面关于计算文件长度的问题,有问题再向你请教
小生,祝贺你快完成你的项目了.
还有扩双串口的一点事,明天max339就可以回来,快盼出头了
因为大多数的U盘都是以16K为一块,也就是说在处理的时候都是以块来进行计算的,假如你在16K里面的空间先写了2K,在写2K的话,那就是操作了16K的块2次,那就相当于操作U盘两次,我们所指的U盘的寿命指的是块的寿命(一般U盘的寿命都是多余10万次的),还有就是很多文件的FDT是放在同一个块的里面的,也就是放在同一个16K的空间,假如你写的2个文件的FDT在同一个16K的块的话,那么你先写的2K后在写一个2K的话,那相当于你操作U盘2次,要是按照你写的话,那可能就是操作了很多次
我今天早晨做了一个试验,就是打开文件后,不关闭也不刷新长度,采集的数据不断地往u盘里写,结果非常理想,等我把所有的数据写完后,才刷新了长度关闭了文件,接到pc机上一看,结果都对,也就是,我现在做一个试验仅对u盘读写一次,没有问题
你只要将你要写的数据不断的往我们的缓冲区放,然后在写的话,那是没有问题的啊。不过你那个不算操作U盘一次,上面和你说了,大多数U盘是以16K为一个块,你只要往同一个块写东西的话,即使在同一个块的不同地方写数据的话,假如写了2次,那也算这个块操作了2次
但是我用了i = ExecCommand( CMD_ByteLocate, 0x00);这条指令,我觉得这条指令好像不会更改fdt表中的长度单元,而只有fat表中的文件扇区会发生变化,hcn你说对吗?
谢谢,我明白了,这个帖结了
小生你的联系方式是多少,能否请教? 我的邮箱个人信息保护,已隐藏