搜索
bottom↓
回复: 12

求在flash中建立文件系统的资料【恢复】

[复制链接]

出0入0汤圆

发表于 2008-12-8 10:30:41 | 显示全部楼层 |阅读模式
我想在串行flash中建立一个文件系统,我用的是fatfs,但是flash的写很麻烦,要分块的擦除,好要注意平衡磨损,难度好大呀。

希望有这方面经验的大侠指点一下。

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2008-12-26 17:06:15 | 显示全部楼层
虽然有更好的解决方案,但是在FLASH做文件系统依然有意义.一张2G的SD卡三十元.一个带FLASH的单片才多少钱?在使用文件不多的情况下用SD卡,U盘等解决方案,是不是大材小用.

出0入0汤圆

发表于 2008-12-26 16:53:43 | 显示全部楼层
其实按我的理解,觉得用flash做文件系统完全没有必要的,

第一,所谓的文件系统都是用来给操作系统来读写的,而os有专门的文件系统,没必要靠我们自己来编写。

第二,在单片机系统里又不能使用fread,fwrite来读写文件,有文件系统也没什么用。

第三,楼下补充

出0入0汤圆

发表于 2008-12-26 14:31:33 | 显示全部楼层
有没有相关的源代码啊?参考一下.只是定义说明没多大用处.

出0入0汤圆

 楼主| 发表于 2008-12-26 10:07:55 | 显示全部楼层
先去百度查一下;



YAFFS文件系统简介

  YAFFS是第一个专门为NAND Flash存储器设计的嵌入式文件系统,适用于大容量的存储设备;并且是在GPL(General Public License)协议下发布的,可在其网站免费获得源代码。 

  YAFFS中,文件是以固定大小的数据块进行存储的,块的大小可以是512字节、1 024字节或者2 048字节。这种实现依赖于它能够将一个数据块头和每个数据块关联起来。每个文件(包括目录)都有一个数据块头与之相对应,数据块头中保存了ECC(Error Correction Code)和文件系统的组织信息,用于错误检测和坏块处理。充分考虑了NAND Flash的特点,YAFFS把这个数据块头存储在Flash的16字节备用空间中。当文件系统被挂载时,只须扫描存储器的备用空间就能将文件系统信息读入内存,并且驻留在内存中,不仅加快了文件系统的加载速度,也提高了文件的访问速度,但是增加了内存的消耗。 

  为了在节省内存的同时提高文件数据块的查找速度,YAFFS利用更高效的映射结构把文件位置映射到物理位置。文件的数据段被组织成树型结构,这个树型结构具有32字节的节点,每个内部节点都包括8个指向其他节点的指针,叶节点包括16个2字节的指向物理地址的指针。YAFFS在文件进行改写时总是先写入新的数据块,然后将旧的数据块从文件中删除。这样即使在修改文件时意外掉电,丢失的也只是这一次修改数据的最小写入单位,从而实现了掉电保护,保证了数据完整性。 

  结合贪心算法的高效性和随机选择的平均性,YAFFS实现了兼顾损耗平均和减小系统开销的目的。当满足特定的小概率条件时,就会尝试随机选择一个可回收的页面;而在其他情况下,则使用贪心算法来回收最“脏”的块[2]。 

  YAFFS文件系统是按层次结构设计的,分成以下4部分: yaffs_guts.c,文件系统的主要算法,这部分代码完全是用可移植的C语言编写的;yaffs_fs.c,Linux VFS层的接口;NAND 接口,yaffs_guts 和NAND 内存访问函数之间的包装层,例如调用Linux mtd 层或者RAM模拟层;可移植函数,服务的包装函数。最重要的一点是,为了获得更好的移植性,YAFFS提供直接调用的模式,这才使得我们有机会来实现YAFFS文件系统在C51系统上的移植。 

出0入0汤圆

发表于 2008-12-25 03:06:39 | 显示全部楼层
用flash比用SD卡简单多了,只不过网上SD卡的驱动和资料很多,拿来用就可以了,不过SD卡或是U盘都是flash的存储芯片,寿命也都是10W次,估计要写好久才能坏掉,一般应用估计差不多,如果用在工程上恐怕有些冒险,楼主如果只是做下位机存储的话,还是考虑用YAFFS的文件系统比较好些,存储数据量小的话,考虑下铁电吧,号称无限读写,不过容量太小了,我现在做的东西是想把数据资料以FAT文件系统格式存储,再直接虚拟成U盘设备,类似目前的数码相机或是MP3等设备,为了兼容性问题只能考虑FAT文件系统了。

出0入0汤圆

 楼主| 发表于 2008-12-24 22:49:00 | 显示全部楼层
FATFS在SD卡中实现了,但是flash中的还没有想好。

我对文件系统的理解还不是很好,坐起来难度很大,网上差了些资料,好像用日志文件系统的比较多。

继续深入学习基础。

希望高人多出来指导。

出0入0汤圆

发表于 2008-12-24 16:29:56 | 显示全部楼层
呵呵,还真有不少人搞这个啊,现在我也正准备做这个,FATFS+AT45DB,感觉FAT文件系统不适合flash,分区表部分读写太频繁了,估计分区表的扇区先挂掉,那整个文件系统就完了,数据区的读写次数倒不是很多,只有从底层将分区表的部分做平衡读写+CRC,我现在的思路是将分区表的写入次数放入扇区的512后的附带空间上,每次检查写入次数,超出后转移分区表到其它扇区并更新DBR,下次就从新的分区表开始读写了,楼上的兄弟有什么好思路。现在正移植FATFS到flash中。YAFFS是专门针对flash的文件系统,microsoft也出了适合wince的TFAT文件系统。

出0入0汤圆

发表于 2008-12-24 12:41:42 | 显示全部楼层
我也正想搞这个.你的FATFS已经实现了吗?

出0入0汤圆

 楼主| 发表于 2008-12-22 21:57:09 | 显示全部楼层
没人理,顶起来

出0入0汤圆

发表于 2009-12-4 13:19:42 | 显示全部楼层
收藏

出0入0汤圆

发表于 2009-12-4 14:37:29 | 显示全部楼层
终于有同道中人,希望向楼主请教

出0入0汤圆

发表于 2011-9-5 15:22:41 | 显示全部楼层
来学习
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-15 17:34

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表