在设计和开发单片机软件时,相较传统方式——直接在flash中分配固定的区域来存储数据文件,使用文件系统无疑具有先进性和便利性。
然而,尽管MCU进入了32位arm时代,能力也越来越强,但是适合于PC机与MPU的大型文件系统,例如ext2/3/4等,对于单片机而言,还是太“笨重”了。本期公众号就推荐几款适合MCU的小型开源文件系统供大家参考和学习。
FatFs(Generic FAT Filesystem Module) - 经久不衰老戏骨
FatFs 是专为小型嵌入式系统开发的一种通用FAT 文件系统。它完全是由 AISI C 语言编写,并且完全独立于底层的 I/O 介质。能够比较容易地移植到其他的处理器,甚至是移植到某些flash比较大的8位单片机系统中。目前,FatFs 支持 FAT12、 FAT16、FAT32 等格式。
总的来说它的特点如下:
- 支持ANSI和unicode编码的长文件名
- 支持双字节(DBCS)编码
- 支持exFAT文件系统
- 线程安全,适合集成到RTOS
- 支持不同大小的存储分区
- 支持多个分区
值得一提的是,FatFs还有一个超轻量级版本Petit FatFs,最少只需要几十个字节的RAM以及2K的flash。
有兴趣的读者可以访问:http://elm-chan.org/fsw/ff/00index_e.html
RanFS: 轻量级嵌入式文件系统 - 文件系统隐士
RanFS也是完全基于 C (C89) 编写的,它主要特点如下:
- 支持 FAT12/16/32 可读写文件系统
- 支持 NTFS EXT2/3/4 只读文件系统
- 提供 POSIX 兼容的文件操作 API
说它是“文件系统中的隐士”,是因为不知道它来自于何方,何人所作。看介绍又似曾相识。
有兴趣的读者可以访问:http://www.ranfs.com/cn/