FatFs文件系统(通用FAT文件系统模块)----下载和使用教程


FatFs文件系统(通用FAT文件系统模块)

介绍

FatFs 是一款面向小型嵌入式系统的通用 FAT/exFAT 文件系统模块。

该模块遵循 ANSI C(C89)标准编写,并与磁盘控制层完全分离,因此具备平台与存储设备无关性。

它可集成到资源有限的小型微控制器中,例如 8051、PIC、AVR、ARM、Z80、RX 等系列。

此外,还提供适用于内存极度受限系统的 Petit FatFs 模块(微型),可在此处获取。

功能特性

  • 兼容DOS/Windows的FAT/exFAT文件系统。
  • 平台无关。易于移植。
  • 程序代码和工作区占用资源极少。
  • 支持以下各种配置选项:
    (1) ANSI/OEM 或 Unicode 格式的长文件名
    (2)支持大容量存储的 exFAT 文件系统、64 位逻辑块地址(LBA)以及全局唯一标识分区表(GPT)。
    (3)适用于实时操作系统的线程安全。
    (4)多个卷(物理驱动器和分区,最多10个卷)。
    (5)可变扇区大小。
    (6)包含双字节字符集的多种代码页。
    (7)只读、可选的API、I/O缓冲区等...

层级结构

  • 最顶层是应用层:使用者只需要调用FATFS模块提供给用户的一系列应用接口函数(如f_open, f_read, f_write和f_close等),就可以像在PC上读写文件那样简单。

  • 中间层FATFS模块:实现了FAT文件读写协议;它提供了ff.c和ff.h文件,一般情况下不用修改,使用时将头文件包含进去即可。

  • 最底层是FATFS模块的底层接口:包括存储媒介读写接口和供给文件创建修改时间的实时时钟,需要在移植时编写对应的代码。

官网下载

FatFs官网地址:https://elm-chan.org/fsw/ff/

FatFs官网界面如下:

往下划到底,可以下载源码。

点击最新版本压缩包,选择下载路径,就可以下载最新的源码。

点击最新补丁,可以看到已发现并解决的BUG。

点击历史版本,可以下载其他版本的源码。

FatFs是完整版,Petit FatFs是阉割版。

Petit FatFs是用于小型8位微控制器的FatFs模块的子集,功能简单,占用资源小。

它是按照ANSI C编写的,并且与磁盘I/O层完全分开。即使RAM大小小于扇区大小,也可以将其合并到内存有限的微型微控制器中。

源码文件说明

下载后的文件压缩包,需要解压。

解压后,点开文件,具体如下:

documents文件(FatFs说明资料)

这个文件都是说明资料,简单了解一下就可以。

source文件(FatFs程序源码)

具体说明如下表:

文件 说明
00history.txt 版本修订记录
00readme.txt 说明文件
diskio.c 底层驱动文件
diskio.h 底层驱动头文件
ff.c 应用接口文件
ff.h 应用接口头文件
ffconf.h 配置头文件(宏配置)
ffsystem.c 操作系统相关适配函数示例文件
ffunicode.c Unicode 编码工具函数文件

底层source/ diskio.c、source/diskio.h

函数 作用
disk_status 获取驱动状态
disk_initialize 初始化驱动
disk_read 读取数据
disk_write 写入数据
disk_ioctl 控制设备相关功能

应用接口层source/ff.c、source/ff.h

(1)文件访问函数

  • f_open -- 打开/创建文件
  • f_close -- 关闭已打开的文件
  • f_read -- 从文件读取数据
  • f_write -- 将数据写入文件
  • f_lseek -- 移动读写指针,扩展文件大小
  • f_truncate -- 截断文件大小
  • f_sync -- 刷新缓存数据
  • f_forward -- 将数据转发到流
  • f_expand --为文件分配连续块
  • f_gets -- 读取字符串
  • f_putc -- 写入一个字符
  • f_puts -- 写入字符串
  • f_printf -- 写入格式化字符串
  • f_tell -- 获取当前读写指针
  • f_eof -- 测试文件结束
  • f_size -- 获取大小
  • f_error -- 检测错误

(2)目录访问函数

  • f_opendir -- 打开目录
  • f_closedir -- 关闭已打开的目录
  • f_readdir -- 读取目录项
  • f_findfirst -- 打开目录并读取第一个匹配项
  • f_findnext -- 读取下一个匹配的项目

(3)文件和目录管理函数

  • f_stat -- 检查文件或子目录是否存在
  • f_unlink -- 删除文件或子目录
  • f_rename -- 重命名/移动文件或子目录
  • f_chmod -- 更改文件或子目录的属性
  • f_utime -- 修改文件或子目录的时间戳
  • f_mkdir -- 创建子目录
  • f_chdir -- 更改当前目录
  • f_chdrive -- 更改当前驱动器
  • f_getcwd -- 获取当前目录和驱动器

(4)卷管理和系统配置函数

  • f_mount -- 注册/注销卷的工作区域
  • f_mkfs -- 在逻辑驱动器上创建一个FAT卷
  • f_fdisk -- 在物理驱动器上创建分区
  • f_getfree -- 获取卷的可用空间
  • f_getlabel -- 获取卷标
  • f_setlabel -- 设置卷标
  • f_setcp -- 设置活动代码页
相关推荐
普中科技2 个月前
【普中STM32F1xx开发攻略--标准库版】-- 第 48 章 FATFS 文件系统实验
stm32·单片机·嵌入式硬件·文件系统·开发板·fatfs·普中科技
android_cai_niao2 个月前
Android SD卡读写测试
sd卡·sdcard·内置存储·外置存储·内部存储
嵌入式的飞鱼3 个月前
闪迪C4内存卡怎么样
sd卡·tf卡
π同学3 个月前
ESP-IDF+vscode开发ESP32第七讲——存储设备读写
vscode·flash·sd卡·vfs·eps32·fat
深圳市雷龙发展有限公司longsto6 个月前
CS创世 SD NAND:比TF卡更小更耐用更稳定
flash·sd卡·spi·sd nand·emmc·tf卡·nand
时光の尘6 个月前
【STM32】两万字详解SD卡移植最新版本FatFs文件系统(ff16)
stm32·mcu·dma·sd·fatfs·sdio·ff16
涂山苏苏⁠7 个月前
串行flash文件系统FatFs
fatfs
无聊到发博客的菜鸟7 个月前
使用STM32对SD卡进行性能测试
stm32·单片机·rtos·sd卡·fatfs
楼兰公子8 个月前
arm-linux 系统allwinner R528 外挂的sd卡片为什么只能传输189.54M文件
linux·arm开发·sd卡