Linux 2.6.30 应用程序半分钟进行一次数据读写,采用yaffs2文件系统好吗?
各位大侠:
正在进行的一个项目: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。
这个硬件没有连接,暂时没有试验。但硬件如果连接上,对以后的硬件操作产生影响,不太方便。所以暂时没有倾向于这个方案。
个人比较偏向于第一种方法,比较方便嘛,呵呵。
各位大侠说说哪种好些。