随着信息技术的发展, 当今社会的信息量越来越大, 以往由单片机构成的系统简单地对存储媒介按地址、按字节的读/写已经不能满足人们实际应用的需要, 于是利用文件系统对存储媒介进行管理成了今后单片机系统的一个发展方向。目前常用的文件系统主要有微软的FATl2 、FATl6 、FAT32 、NTFS 以及Linux 系统下的EXT2 和EXT3 等。由于微软Windows的广泛应用, 在当前的消费类电子产品中, 用得最多的还是FAT 文件系统, 如U 盘、MP3、MP4 和数码相机等,所以找到一款容易移植和使用、占用硬件资源相对较小而功能又强大的FAT 开源文件系统,对于单片机系统设计者来说是很重要的。
FatFs Module 是一种完全免费开源的FAT 文件系统模块,专门为小型的嵌入式系统而设计。它完全用标准C 语言编写, 且完全独立于I/O 层,可以移植到8051、PIC、AVR 、SH、Z80 、H8 和ARM 等系列单片机上且只需做简单的修改。它支持FATl2 、FATl6 和FAT32 ,支持多个存储媒介,有独立的缓冲区,可以对多个文件进行读/写。
FatFs Module 有个简化版本Tiny-FatFs ,它跟完全版FatFs 不同之处主要有两点:
(1) 占用内存更少,只要1 KB RAM ;
(2) 1 次仅支持1 个存储介质。
完全版FatFs 和Tiny-FatFs 的用法一样,仅仅是包含不同的头文件,本文主要以完全版讲解FatFs 的使用。
特性
Windows 兼容的FAT 文件系统;
平台无关,容易移植;
代码量小;
多种配置选项:
支持多卷(物理驱动器或分区) ;
多个ANSI/OEM 代码页包括DBCS;
支持长文件名, ANSI/OEM 或Unicode ;
支持RTOS;
支持多种扇区大小;
只读、最小化的API 和I/O 缓冲区等。
FatFs Module 一开始就是为了能在不同的单片机上使用而设计的, 所以具有良好的层次结构,如图1.1 所示。
最顶层是应用层,使用者无需理会FatFs Module 的内部结构和复杂的FAT 协议,只需要调用FatFs Module 提供给用户的一系列应用接口函数, 如f_open,f_read,f_write 和f_close等,就可以像在PC 上读/写文件那样简单。
中间层FatFs Module 实现了FAT 文件读/写协议。FatFs Module 的完全版提供的是ff.c 、ff.h ,简化版Tiny-FatFs 提供的是tff.c 、tff.h 。除非有必要,使用者一般不用修改,使用时将需要版本的头文件直接包含进去即可。
需要使用者编写移植代码的是FatFs Module 提供的底层接口,它包括存储媒介读/写接口Disk I/O 和供给文件创建修改时间的实时时钟。
本文讲解时移植硬件平台为ZLG 公司的SmartCortexM3-1700 和普通U 盘。LPC1768是一款32 位Cortex-M3 内核的单片机,具有多达64 KB 的SRAM 、512 KB 的内部Flash 和丰富的外设。软件平台是Keil 集成开发环境。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !