1、FATFS
FATFS是一个通用的文件系统模块,用于在小型嵌入式系统中实现FAT文件系统。
FATFS的编写遵循ANSI C,因此不依赖于硬件平台。它可以嵌入到各种价格低廉的微控制器中,如8051、PIC、AVR、SH、Z80、H8、ARM等,而不需要做任何修改。
对于FATFS我要说:它确实很牛!无论在功能的完善程度上,还是在代码的运行效率上,以及可移植性上都可称得上是众多现有优秀方案中的佼佼者。
在看了他代码中的研发编年史之后,感慨:他在把FAT当作毕生事业来作,一辈子就作这一件事。FATFS的研发始于2006年,一直到现在还在不断更新和改进。真可谓十年磨一剑了!
但是,经过对FATFS的深入研究之后,仍然存在着很多问题,其中有一些可谓“硬伤”,比如:
-
它最低需要1.3KB左右的内存,导致在一些低端处理器上无法使用(其根源在于其数据缓冲的实现策略);
-
它没有实时模式,始终会有数据暂存于内存之中,如果突然断电或CPU死机,必然会造成数据丢失;
-
物理层接口比较复杂,而且必须由使用者提供多扇区读写驱动的实现;
-
代码可读性不强,使用者很难了解其内部实现,导致一旦出现Bug,很难立即解决;
-
纯开源软件,因此缺乏原作者的相关技术支持与指导,只能靠使用者自行领悟。
2、EFSL
EFSL的全称是Embeded File System Library,即嵌入式文件系统库。
它是来自sourceforge上的由比利时的一个研究小组发起的开源项目,此项目正在持续更新,源码中也有很多注释,研读起来比较容易,潜力不错。
EFSL兼容FAT32,支持多设备及多文件操作。每个设备的驱动程序,只需要提供扇区写和扇区读两个函数即可。
据说,EFSL的效率是非常高的。但是它的物理层接口只支持单扇区读写,并没有多扇区的接口。
所谓多扇区,是指存储设备可以一次性读写连续的多个扇区的能力,这比单独一个个扇区去读写速度要快得多,而在文件读写时,很多时候数据基本都是连续的。
所以,我很纳闷它的效率再高能高到哪去?同时,还要看它所占用的内存量。就算它的效率确实很高,但以较高的内存消耗为代价的,我认为也不足为取。不过,一切还是要以实测结果为准。
3、UCFS
UCFS可能有些人并不太熟悉,但是提起UCOS大家一定有所耳闻,它们都来自于Micrium公司。
出身名门,其代码质量、稳定性及可移植性自然无可挑剔。
不过,它并非开源项目,而是商用软件。想要用它,拿银子来!从性能和执行效率上来说,我并不认为UCFS会有多好,因为它的物理层驱动接口也只支持单扇区读写,而无多扇区驱动。
4、TFFS
可能很多人对于TFFS连听都没听说过。但如果提起Vxworks,大家就会耳熟能详。TFFS就是专门服务于Vxworks的文件系统,全称为True Flash File System。
TFFS可以在Flash存储设备上构建一个基于DOS的文件系统(即FAT),用于存放操作系统镜像以及应用程序,以便于程序的更新和升级。
不过,TFFS基本上是与Vxworks绑定的,想要把它从中提取出来为我们所用,难度较大。而且,它也不是免费软件,我们不能私自使用。
5、DOSFS
DOSFS是由美国一个叫Lewin A.R.W. Edwards的人研发的。从它的名字上可以看出来,Lewin是想在嵌入式微处理器上实现一个类似DOS的系统,其实质就是FAT文件系统。
从它的代码来看,也只是一个雏形,功能还比较少,配套的文档资料也不够齐全。关于DOSFS,我没有实际用过,不过,我见过有人把它用在了产品里,似乎还比较稳定。
上面介绍了几种比较流行而知名的嵌入式FAT文件系统方案,它们均来自国外。国内的文件系统方案也有,但真正开源而且成型的很少。
1、ZLG/FS
ZLG/FS,顾名思义,就是周立功公司研发的文件系统方案,说得更准确一些应该是周立功公司的ARM研发小组的成果。
它是以UCOS嵌入式操作系统的一个中间件方式出现的,也就是说它可以与UCOS很好地进行协同工作。
它也是一个开源的软件,在国内嵌入式平台上,尤其在ARM平台上得到了较为广泛的应用。
但是,ZLG/FS的数据读写速度实在让人堪忧。仔细研读它的源代码,我们就会发现它在实现上所使用的一些策略导致了它的效率低下。
也许,这样的文件系统方案,只能供我们学习之用,要真正应用于实际工程项目还有一定的差距。
2、沁恒FAT
提起沁恒,似乎有点耳闻。那我再提醒你一下:CH375 芯片。对,它是专门用于读写U盘等USB存储设备的控制器芯片,沁恒FAT文件系统就是与这个芯片配套绑定的,用于实现U盘上的文件操作。
CH375已经算是一个经典芯片,凡是有U盘读写需求的中低项目我估计有一半以上都在用这个芯片。
可以说,沁恒FAT是嵌入式FAT文件系统商业化的一个典范。不过遗憾的是,沁恒FAT是纯商业软件,我们是看不到半点源代码的。
我感觉,FAT文件系统业已成为沁恒公司的一大产品和技术支柱,这也揭示了嵌入式FAT文件系统在功能需求以及市场价值上的巨大潜力。
总体来说,国内在嵌入式文件系统方面的研究仍然起步较晚,而且在原创开源与创新意识上远远落后于国外。
国内的很多开发者一直秉承着“拿来主义”,但是这样我们不会有任何发展。好好想想,我们平时使用的芯片、软件、操作系统等等,有多少是国产的?
我们所说的“自主”研发,有很多只不过是在仿制、引用或者汉化而已。让我们真正的动起来,作出属于我们自己的东西!
原创文章,作者:guozi,如若转载,请注明出处:https://www.sudun.com/ask/78422.html