嵌入式文件系统小结

来源:互联网 发布:小熊棋牌源码 编辑:程序博客网 时间:2024/06/05 03:22
    近日看了几个fat文件系统的源码,主要有ucfs、efsl、minfat等,小结一下。
   
    嵌入式的文件系统虽有不少,但在消费类电子产品上,还是以fat为主,存储体为Nand Flash,加上mass storage功能,能让用户在pc上管理文件,如在mp3、电子词典上等,都用得很广泛。
   
    ucfs:主要针对于多任务下的应用,程序中很多地方都没有使用固定的变量,而是每次都重新运算获得即时值,如文件系统类型判断就用了FS__fat_which_type这个函数,此函数每次都重新计算bpb中的值,判断是fat12/16/32。ucfs也缺少cache的管理,无论读和写都是立即物理操作,这样导致每次文件操作时,物理的读写太频繁,严重影响效率。这个源码的版本是1.24,而最新版本的介绍,已经支持read cache了。
    单从效率上考虑,此文件系统并不能获得优势。但是对于多任务环境下,应该是能可靠稳定地工作。
   
    efsl:efsl是在sourceforge.net上开源的一个项目,此项目正在持续更新,源码中也有很多注释,研读起来比较容易,潜力不错。efsl兼容fat12/16/32,同时支持多设备及多文件操作。每个设备的驱动程序,只需要提供扇区写和扇区读两个函数即可。
   
    minifat:这个是toshiba提供的一个fs。此文件系统只支持fat12/16,提供了比较完整的文件操作函数,支持多设备和多文件,也支持cache管理。会有较高的效率。但文件系统不支持长文件名的读取,所有的文件都严格要求是Dos8.3格式的短文件名。总体来说代码清晰,可以自行扩展fat32及长文件名的支持。
   
    最后一个fs,是一个朋友给的源码,支持fat12/16、unicode 、长文件名、多文件操作,但不能同时支持多设备。但在内存管理和字符串管理上面,效率比较低。
   
   
以上文件系统,都没有像yaffs那样,针对于特定的物理存储载体来做优化。在对效率要求更高的基础上,就需要针对特定的设备进行优化。

zhongyh
<end>
原创粉丝点击