FatFs文件系统笔记--R0.13c

本文介绍了FatFs文件系统的基本概念、目录结构和移植过程,详细阐述了从源码获取、配置选项到实际移植的步骤,强调了移植中的关键文件diskio.c和ffconf.h的修改。同时提到了FatFs的缺点和替代方案littlefs。
摘要由CSDN通过智能技术生成

目录

1. FatFs文件系统简介

1.1 FatFs的目录结构

1.2  FatFs帮助文档

1.3  FatFs源码

2.  FatFs 文件系统的移植

2.1 FatFs 分层体系

2.1 FatFs 移植步骤

2.1.1 添加 FatFs 源码到工程

2.2 FatFs主要功能配置点

3. FatFs模块应用说明

4. FatFs 文件系统的缺点

5. 例程工程


1. FatFs文件系统简介

简而言之,文件系统即为,在存储设备上组织文件的方法。常见的windows下的文件系统格式包括FAT32、NTFS、exFAT。在使用文件系统前,要先对存储介质进行格式化。格式化先擦除原来内容,在存储介质上新建一个文件分配表和目录。这样,文件系统就可以记录数据存放的物理地址,剩余空间。

FatFs是面向小型嵌入式系统的一种通用的FAT文件系统。它完全是由AISI C语言编写并且完全独立于底层的I/O介质。因此它可以很容易地不加修改地移植到其他的处理器当中,如8051、PIC、AVR、SH、Z80、H8、ARM等。FatFs支持FAT12、FAT16、FAT32等格式。

官方文档及源码可以从FatFs官网获取:

http://elm-chan.org/fsw/ff/00index_e.html

以下皆以最新的R0.13c版本移植。

1.1 FatFs的目录结构

FatFs的官网获取源码,最新版本为R0.13c,解压之后可看到里面有 documents和 source 这两个文件夹。

1.2  FatFs帮助文档

打开 documents文件夹

 其中,doc 这两个文件夹里面是编译好的html文档,讲的是FATFS里面各个函数的使用方法; res 需要用到的图片。

00index_e.html 直接打开,可以看到系统简介,及相关API的介绍,具体链接doc的相关函数介绍文档。

1.3  FatFs源码

打开 source 文件夹

  •   00readme.txt   This file.
  •   00history.txt  版本历史
  •   ff.c           FatFs核心文件,文件管理的实现方法。该文件独立于底层介质操作文件的函数,利用这些函数实现文件的读写。
  •   ffconf.h       FatFs功能配置的宏定义,可以根据需要裁剪其功能
  •   ff.h           FatFs和应用程序模块的通用包含文件。
  •   diskio.h       FatFs和磁盘I / O模块的公共包含文件。
  •   diskio.c       包含底层存储介质的操作函数,这些函数需要用户自己实现,主要添加底层驱动函数。
  •   ffunicode.c    可选的Unicode实用程序功能
  •   ffsystem.c     可选的O / S相关功能的。 

文件阅读顺序   diskio.c --> ff.c,阅读文件系统源码ff.c文件需要一定的功底,建议读者先阅读FAT32的文件格式,再去分析ff.c文件。

2.  FatFs 文件系统的移植

2.1 FatFs 分层体系

用户应用程序需要由用户编写,一般我们只用到f_mount()、f_open()、f_write()、f_read()就可以实现文件的读写操作.

FatFs组件是FatFs的主体,文件都在源码src文件夹中,其中ff.c、ff.h、ffunicode.c.以及diskio.h四个文件我们不需要改动,只需要修改ffconf.h和diskio.c两个文件,根据是否有操作系统修改ffsystem.c。

2.1 FatFs 移植步骤

在此以秉火429 SPI Flash芯片作为物理存储设备,驱动具体驱动不做赘述,具体见链接

https://blog.csdn.net/XieWinter/article/details/95077050

2.1.1 添加 FatFs 源码到工程

源码直接解压拷贝,添加到工程,并包含相关的H文件。因为未使用到操作系统,所以屏蔽掉了ffsystem.c,如下图:

如果直接编译会发现会出错,因此需要修改diskio.c,系统默认使用日语,需要支持中文的话需要修改ffconf.h,当然,相关的裁剪根据需要,配置ffconf.h相关的宏。

配置ffconf.h,宏定义对应的功能,代码中都有说明,具体的配置范围可以见官方配置说明

http://elm-chan.org/fsw/ff/doc/config.html

具体配置,可以通过对比软件来查看与官方源码的差异点,这样有助于理解。

/*---------------------------------------------------------------------------/
/  FatFs Functional Configurations
/---------------------------------------------------------------------------*/

#define FFCONF_DEF	86604	/* Revision ID */

/*---------------------------------------------------------------------------/
/ Function Configurations
/---------------------------------------------------------------------------*/

#define FF_FS_READONLY	0
/* 此选项可切换只读配置,默认为可读写(0). (0:Read/Write or 1:Read-only)
/  Read-only configuration removes writing API functions, f_write(), f_sync(),
/  f_unlink(), f_mkdir(), f_chmod(), f_rename(), f_truncate(), f_getfree()
/  and optional writing functions as well. */


#define FF_FS_MINIMIZE	0
/* 此选项定义最小化级别以删除一些基本API函数。
/
/   0: Basic functions are fully enabled.
/   1: f_stat(), f_getfree(), f_unlink(), f_mkdir(), f_truncate() and f_rename()
/      are removed.
/   2: f_opendir(), f_readdir() and f_closedir() are removed in addition to 1.
/   3: f_lseek() function is removed in addition to 2. */


#define FF_USE_STRFUNC	0
/* 此选项切换字符串函数, f_gets(), f_putc(), f_puts() and f_printf(
  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值