中级会员
 
- 积分
- 390
- 金钱
- 390
- 注册时间
- 2018-3-20
- 在线时间
- 80 小时
|
10金钱
最近学了原子的USB转nandFlash实验,先简易移植,做了一次片上flash转U盘,第一次为了图省事,直接将1024的存储块跳间隔使用,浪费512的空间构成512的存储块,为了简易的避免奇数地址读写。
这样把103C8T6的64K存储空间外加64K未开放空间做成了40K的U盘,计划用来存储控制器的用户指令。但是一直觉得浪费可耻~~就按照原子的STMFlashRead格式改写了一下,直接设置块大小为1024,同时调整读写函数,这样可以占满1024空间,U盘空间直接提升到了80K,再次动歪脑筋,因为在学习原子读写函数时,发现写入前,先读出整块,如果不是空,就将之前内容和改写内容合并后写入,隐约记得Fatfs和win的文件系统会仅对整块操作,因此将写入函数改为直接擦除当前写入块及后续将写入的块,然后连续写入。成功后,又计上心来,如果设置块大小为512,写入奇数块时按照原子的方法读取整块,合并写入,岂不美哉~~但发现fatfs里可以设置一次擦除块数量,填2后应该可以正常读写,但是U盘的参数中没有找到一次擦除块数量的设置,不知道如此会造成什么结果。
遂,在此求指点:
从磁盘使用寿命和读写速度角度来看
一、1024间隔单一512偶数地址使用,写入前擦除使用区域,再连续写入。
二、1024整块使用,写入前擦除使用区域,再连续写入。
三、1024前后划分两块512,写入前判断奇偶,读出合并写入。
哪种方式更优?或指点更优使用方式?
|
|