当前位置: 首页 > news >正文

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.cUnicode 编码工具函数文件

底层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 – 设置活动代码页
http://www.jsqmd.com/news/1276031/

相关文章:

  • BMS生产与诊断利器:TI BQ27Z7xx AltManufacturerAccess命令集深度解析
  • R3nzSkin国服特供版:英雄联盟全皮肤免费解锁终极指南
  • 7.27随手记
  • AMD Ryzen SMU调试工具深度解析:系统化硬件寄存器访问与性能优化实战指南
  • 15、BufferedReader的源码分析和使用方法详细分析(windows操作系统,JDK8)
  • 百考通:AI精准赋能,让每一份设计都高效落地,满足多元研究场景
  • Jetstrap核心功能解析:从安装到配置的简单步骤
  • 打造智能家庭音响:echo-sonos房间分组与多区域控制技巧
  • 深入解析MCU引脚复用与信号映射:以LM3S1968为例的嵌入式硬件设计指南
  • 金价波动怎么出手合适?重庆卖金时机讲解 - 每日生活报
  • 湖北考公选班:为什么“透明度”比“名师”更重要?一份基于公开信息的机构对比观察 - 天涯视角
  • 【单片机毕业设计推荐】基于 STM32/51 单片机的智能定时药盒系统设计与实现 ,基于 STM32/51 单片机的多分类智能服药提醒装置设计(024203)
  • OpenClaw自动化测试工具Windows部署全攻略
  • peg-markdown完全指南:C语言实现的PEG语法解析器如何高效处理Markdown?
  • 2026年GEO服务商实力测评:南京本地靠谱选择与教培行业AI搜索优化服务商推荐 - 天涯视角
  • Jellium Desktop系统主题分享:分享你的主题设置
  • AU-60:AI语音模组破解通话降噪难题
  • 防雷与接地工程施工方案
  • MySQL 索引失效场景——EXPLAIN 分析避免踩坑
  • 如何写一份让甲方无法拒绝的 AI 漫剧定制“商业策划案”?
  • 基于华为云 FlexusX 四节点集群的云计算全栈实操(二):云虚拟机性能基准(sysbench CPU/内存深度体检)
  • 6大核心技术解析:Magpie如何实现Windows窗口超分辨率的最佳体验
  • PDF补丁丁:免费开源的PDF处理终极解决方案,轻松搞定所有PDF编辑难题
  • Windows 11图片缩略图无法显示的终极解决方案
  • WPF开发必备:MVVM Dialogs框架对话框深度解析
  • Jellium Desktop循环播放插件:添加高级循环选项
  • 如何使用Phoenix Swagger生成专业API文档:从配置到部署的终极指南
  • 软件模拟9位UART实现Stellaris多机通信:原理、实现与优化
  • Know-it-all深度评测:它如何帮助开发者发现未知的Web技术点?
  • 宁波市出台黄金回收实体经营备案制度及大盘价联动作业管理指引 - 大牌深度测评