打印

交流一下:各位使用FLASH存储数据记录的方式方法。

[复制链接]
4355|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lg75|  楼主 | 2008-12-27 21:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

以前使用嵌入式的方案,直接用方案提供的FS2文件系统,可以方便的增加,删除,修改。
现在换了ZLG主推的 LM3S8962 ARM芯片,使用串行NOR FLASH SST25VFxxx,但是方案只提供了基本的读写与扇区擦除命令,而我们的应用除了新增记录,还经常需要更改记录的操作,没有文件系统的支持,想了半天没想到啥好的算法,也不知道大家都是怎么思考和处理的,希望各位能给个提示,先谢啦!
我觉得其实这个问题应该大家都遇到过吧,对于需要修改记录的操作,就要注意FLASH的扇区擦除特性,擦除寿命等问题。看了JFFS2等一些文件系统,感觉都是在linux类操作系统下比较流行,真正针对类似C51等低端MCU的好像还不多见,有没有好的推荐呢?
 

相关帖子

沙发
ayb_ice| | 2008-12-27 21:52 | 只看该作者

51基本上不用文件系统

一般都是简单的数据结构,直接存储就行...

使用特权

评论回复
板凳
lg75|  楼主 | 2008-12-28 13:52 | 只看该作者

但是要考虑到NOR FLASH的特性

但是要考虑到NOR FLASH的特性,扇区使用的均衡就要考虑,虽然是个简单的数据结构,但是要做到坏块标识,擦写均衡,就是个很复杂的算法问题了。

使用特权

评论回复
地板
lg75|  楼主 | 2008-12-28 13:53 | 只看该作者

我说的C51只是个举例。

这个应用应该是很通用的,我看到国外也有专门的公司TRI在做这个FMM,但是没研究过只是看到一些文字介绍。
其实不考虑均衡擦写的话实现起来当然没啥难度,大不了读出来一个扇区到内存,修改好擦除整个扇区再写回,但是这太原始了。

使用特权

评论回复
5
ayb_ice| | 2008-12-28 17:56 | 只看该作者

每次将数据写在不同的扇区

这样大家的寿命基本是一样的

使用特权

评论回复
6
lg75|  楼主 | 2008-12-28 22:45 | 只看该作者

楼上说的过于简单了


可能是我说的不够清楚,NOR FLASH每个扇区4K,可以存储我们应用的250条记录,总共存储10万笔记录基本上扇区也就使用的差不多了,而这些记录都有被更改的可能,这时就需要一个比较科学的算法来均衡擦写,否则恶略的情况是一次就要更新全部10万笔记录,或者连续几百笔记录会N次更改。

使用特权

评论回复
7
08zhzheng| | 2017-2-26 11:18 | 只看该作者
mark,没考虑均衡擦写的问题,不知道EEPROM是否可以避免这个?
我做过一个,将flash分为两个区,目录和数据区,目录存储数据序号,从目录区0x0~0xff的地址中哪个字节为空则往该序号对应的数据区的地址上写数据。目录区将会频繁擦写,寿命会降低。不过可以将flash分为3个区,两个作为目录,轮流写,这个还没实现,不知是否可行,寿命应该会延长一倍,达到20万次。

使用特权

评论回复
8
ar3000a| | 2017-2-27 20:37 | 只看该作者
负载均衡这套算法比较复杂,51不用管了。自己设计一套比较好。

使用特权

评论回复
9
杰瑞鼠| | 2017-6-3 09:58 | 只看该作者
我现在也遇到这个问题,请问你最终的解决方案

使用特权

评论回复
10
coody| | 2017-6-5 14:36 | 只看该作者
参考FAT16

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

205

帖子

2

粉丝