Linux 2.6.30 应用程序半分钟进行一次数据读写,采用yaffs2文件系统好吗?

junxiu6 2011-08-22 06:04:09
各位大侠:

正在进行的一个项目:arm,linux2.6.30。遇到一个问题是:需要频繁保存数据,不到一分钟保存一次数据,数据长度为1k。说说我的想法,请各位大侠指点。

1、在nand flash上分一个区专用于这个数据保存,采用yaffs2文件系统。通过写文件的方式来保存,下次上电直接读这个文件。
问题在于:虽然数据不大,但如此频繁地写数据,是否会对nand flash寿命产生影响(nand flash手册说是擦写10万次)?另外,yaffs2能够进行垃圾回收,这个分区的数据始终不多(小于1k),什么时候会启动垃圾回收呢?是否会严重占用系统资源,使系统运行很慢?

2、采用mtd接口直接操作nand flash,进行数据的读写。
问题在于:nand flash具有坏块,需要我们进行标记。程序书写麻烦。并且读写始终在于一个范围的block,感觉比第一种方法更加伤害nand flash。相比较而言,第一种方法采用yaffs2,yaffs2是否会自动均衡写数据的block?这里说出自己的一个想法。各位大侠说说自己的看法最好了。

3、采用eeprom进行数据读写。
这个方法貌似不错。但硬件上只有一块24c02,无法保存1k的数据。如果采用这种方法,只能更换器件。另外这条i2c总线同时连接rtc时钟,如此频繁操作eeprom,是否会对rtc时钟有影响,每次读取eeprom数据是否都是正确的?因为eeprom存储空间有限,存储的话,也只能存储一次数据,如果此次数据有错误,那么就无法恢复原始数据。相比较,nand flash可以采用冗余存储,存储多次数据以防万一。

4、采用data flash 如at45db321d 4MB。
这个硬件没有连接,暂时没有试验。但硬件如果连接上,对以后的硬件操作产生影响,不太方便。所以暂时没有倾向于这个方案。

个人比较偏向于第一种方法,比较方便嘛,呵呵。

各位大侠说说哪种好些。
...全文
153 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
junxiu6 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zmlovelx 的回复:]

1, 2的实质是一样的, 最后都是交由文件系统管理 都要经过mtd 最后调用 yaffs2的实现
uboot有nand write命令, 我忘记kernel下是否有相应的命令了. 如果有, 跟1,2也是一样的.

kernel有坏块管理, 会把坏块保存到nand的最后某个块(好像是最后一个,不是很肯定)

由于做过u-boot与kernel的nand 坏块这块, 所以跟u-b……
[/Quote]

恩。交给系统来进行管理要好一些。感觉频繁写NAND FLASH也不是个事。
帅得不敢出门 2011-08-22
  • 打赏
  • 举报
回复
1, 2的实质是一样的, 最后都是交由文件系统管理 都要经过mtd 最后调用 yaffs2的实现
uboot有nand write命令, 我忘记kernel下是否有相应的命令了. 如果有, 跟1,2也是一样的.

kernel有坏块管理, 会把坏块保存到nand的最后某个块(好像是最后一个,不是很肯定)

由于做过u-boot与kernel的nand 坏块这块, 所以跟u-boot的有些混了. 记得不是很清楚.

写一个专门块时,如果是坏块, u-boot 下有nand write.yaffs2 向Nand Flash写入数据,如果NandFlash相应的区域有坏块,可以跳过坏块, kernel的是否会自动跳过我忘了, 但是如果没有,加上这个功能不是很难.


垃圾回收这块没研究. 不断写,对nand肯定有影响. 固定写在几个块中, 会对这几个块影响更大.

我觉得自己指定块写,不是好想法. 还是交由系统管理.

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧