打印
[ZLG-ARM]

求写平衡的FFS驱动软件包。

[复制链接]
3460|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wikee|  楼主 | 2007-3-1 09:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在学习用ARM7+NANDFLASH做FAT16的文件系统,已经做通了,但是NAND的驱动不太好,每次写一个扇区都要檫除一次同一个BLOCK。这样NANDFLASH寿命就减少了。通过了解,ZLG/FFS这个驱动具有写平衡算法,想参考参考。哪位有的大虾,给小弟发一份。谢谢。

写平衡,就是对NNADFLASH的每个块写的次数大概都一样么?其实FAT操作的主要还是前面的FAT表区最多,不知怎么平衡呢?头痛啊。

相关帖子

沙发
wikee|  楼主 | 2007-3-1 09:08 | 只看该作者

email

我得email:wikee@163.com

使用特权

评论回复
板凳
eleven11| | 2007-3-1 09:23 | 只看该作者

可以购买

vxworks有tffs,等你有钱了,就可以什么都买,技术,人才都可以买,而你只要抓住市场,能拉项目就行,甚至连钱都可以有人垫,不过这是相当高级的人才了,阿尔卡特现在就是到处收购,看哪个做的好就把他买过来

使用特权

评论回复
地板
赵崇伟| | 2007-3-1 09:24 | 只看该作者

tffs可不是谁都可以随便写出来的

应该说,你能够来这里请求帮助,已经说明你没有这个能力了,建议放弃

使用特权

评论回复
5
xwj| | 2007-3-1 09:49 | 只看该作者

写个类似的平衡机制并不是很难,只不过不是通用标准罢了

FLASH最好不要直接用FAT,
要用也得先做个带平衡机制的逻辑映射,再在此基础上加文件系统

否则寿命很成问题

LZ最好是先去找tffs等标准看看吧

使用特权

评论回复
6
eleven11| | 2007-3-1 10:03 | 只看该作者

写还是可以写的,不过太麻烦

要设计好的查询算法,要考虑掉电保护,ecc效验的保护……1,2句话说不清楚的,而且如果不是要把nandflash做u盘同时又要写平衡的或是fat文件系统底层系统级的文件交换的话,就不需要tffs这样一个转换层了,直接用yaffs就可以了,如果是要做转换层,那么公开可以得到(买)的稳定的好像只有vxworks的tffs,你还可以修改源码,在fat文件系统对fat表进行操作的时候才分配cache

使用特权

评论回复
7
wikee|  楼主 | 2007-3-1 11:13 | 只看该作者

感谢各位的回答!!

其实我作的没有那么复杂,只是不想对NAND檫除那么频繁。我的FAT文件系统和U盘都是跑通了的,整个系统功能也实现了。现在就是担心檫除太频繁这个问题,所以想着个例程看看。ZLG/FFS是我想到的最近的方法。tffs还没有了解过,现在就去查查看。

楼上说的转换层,好像很复杂啊。我的文件系统和U盘不是同时对NAND进行读写的,当连到PC时,ARM的文件系统就停止了,防止冲突。这样应该不要转换层了吧?U盘其实只是对NAND直接读写而已,根本不需要文件系统的支持。

我使用FAT无非是想当U盘用,如果是要存数据的话可用的格式就多了,我也就没那么头痛了。

感谢各位的回答!!

使用特权

评论回复
8
eleven11| | 2007-3-1 12:28 | 只看该作者

如果你的flash本身是通过转换层写入的

就是像zlgffs,tffs这样的转换层,有些转换层是需要有已用块标记的,就是说你不用这个块的时候要设置释放标记,像fat系统中你就是修改源码,在释放簇链的时候同时释放flash的块,如果这时候你在pc端把flash当作u盘使用,比如说通过pc删除一个文件,虽然只是对扇区的读写操作,但是你必须捕获需要操作的扇区,判断是不是需要释放某一个块,如果你不这样操作,那么很快在转换层中就没有空闲的块可以分配了

使用特权

评论回复
9
eleven11| | 2007-3-1 12:30 | 只看该作者

所以u盘都是没有写平衡的

都是搞个缓冲区,当然做还是可以做的,如果系统记录的此处比较频繁,同时又想能像u盘那样操作,那么你就必须在转换层的接口中判断从pc要求请求的扇区是不是在fat区域,如果是,那么就检测这个扇区里面每12(16,32)位是否是0,是0就需要释放对应的簇,继而释放flash的块

使用特权

评论回复
10
wikee|  楼主 | 2007-3-1 13:52 | 只看该作者

楼上的提示记下了。

楼上的提点没能全部消化,但是我记下了。

按你的意思是应该做一个表,记录那个块是用掉了的,当某个块不要时,必须把这个块置为未用。

使用特权

评论回复
11
赵崇伟| | 2007-3-1 15:42 | 只看该作者

那可不是1张表阿

是n张表!还要考虑可靠性问题,因为nand本身是不可靠短寿命的。
就这n张表互相之间还有紧密得联系,还要考虑意外断电恢复问题,还要考虑阿查找效率问题。

使用特权

评论回复
12
wikee|  楼主 | 2007-3-2 08:29 | 只看该作者

楼上说得很恐怖啊。难道我们除了用TFFS外,就没别的方法比较实用了吗?这样我更想看看ZLG/FFS怎么做的了,哪位同志有请给我发一发吧。我了解到《软件实例二》有这部分内容,周末就去买来看看。周工的书我买的多到自己也数不清了,呵呵。自己想的想法总觉的不太可靠,看看别人怎么想的。

昨天下了一个YFFS的源码和资料,准备研究研究,吸取一定经验。

使用特权

评论回复
13
赵崇伟| | 2007-3-2 09:38 | 只看该作者

呵呵,是很恐怖阿,吓唬吓唬你啊:)

这还不包括后期的软件查错,那就是非人的折磨!因为你不可能仿真出实际运行的环境,比如软件运行到什么位置断电,我们的项目就是用了一年的时间才查出“可能有”概率极小的软件逻辑错误,最后经过反复分析,确认逻辑设计有小小问题,也就是说那n张表的关系有问题,结论是必须推倒重来,最后决定项目无限期搁置。
另外nand手册有错误,而看出这些错误需要时间+耐心和ic设计和器件物理的知识。

一般来说购买ffs是最可行的,商用的代码可靠性是经过检验的。当然如果你的目的就是学习,并不打算为公司创造效益就没所谓了。

还有阿,fat文件系统是非常简单的东西,不能与ffs相提并论,复杂度不是一个数量级的。

使用特权

评论回复
14
xyele| | 2007-3-2 09:51 | 只看该作者

一般的数据采集系统,数据都有规律的话,根本没必要用FAT

   我一直都没用FAT,直接写操作块、页,用铁电来记录对Nand Flash的操作指针......
   一个ARM7系统,做太复杂了效率低,做得不好可靠性差...何必呢?
   不用FAT,也一样当U盘操作

使用特权

评论回复
15
eleven11| | 2007-3-2 10:36 | 只看该作者

我没说做一张表

我只是说了要做你那样的设计,需要注意什么,需要对ffs和fat做哪些修改,ls的要是用u盘,或者sd卡什么都和nandflash交换数据的话,就知道fat+ftl的好处了

使用特权

评论回复
16
wikee|  楼主 | 2007-3-5 08:39 | 只看该作者

1

我的目的主要是ARM按FAT格式写到NANDFLASH中,然后当U盘一样读出数据,就像拷贝文件一样拷贝数据。

使用特权

评论回复
17
john1225cn| | 2008-2-29 09:42 | 只看该作者

大家好

嵌入式主板经常需要存储大量的数据。例如刷卡信息,运行参数采集,大量的记录等等。

我在flash存储器上完成了一个SQL的数据库系统。软件兼容其他flash存储器。特点:

 

1,高度结构化,使用非常容易,目前基于NOR flash,兼容其他flash。

2,基于uc/os,实时性高,软件体积很小。

3,实现了所有数据的存储平均磨损。

4,标准的SQL语言操作。调用通过命令字符串就可以操作数据库。使用方便。

5,可靠运行,经过0.5年的实际使用测试。

6,功能举例:建立表,增删改查,容量测试,格式化等。

7,简单的接口输出函数,可以通过标准接口输出打印的结果。

QQ77668758

使用特权

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

本版积分规则

5

主题

17

帖子

0

粉丝