STM32
直播中

nhcp

15年用户 1135经验值
私信 关注
[问答]

FATFS文件系统的结构是怎样构成的

FATFS是什么?FATFS的特点有哪些?
FATFS文件系统的结构是怎样构成的?

回帖(1)

赵晶晶

2021-10-27 10:01:50
  1,磁盘分区
  磁盘每一面被分为若干磁道离圆心越近磁道越小,每一个磁道被以512字节为单位划分,叫做扇区,最外圈扇区最多,最里圈扇区最少。
  磁盘驱动器在向磁盘读取和写入数据都是以扇区为单位的,为了对扇区进行管理和查找,对扇区进行编号,从第0(最里圈)磁道开始累积计数。
  2,文件系统
  3,FATFS简介
  FATFS 是一个完全免费开源的 FAT 文件系统模块,专门为小型的嵌入式系统而设计。它完
  全用标准 C 语言编写,所以具有良好的硬件平***立性,可以移植到 8051、PIC、AVR、SH、
  Z80、H8、ARM 等系列单片机上而只需做简单的修改。它支持 FATl2、FATl6 和 FAT32,支持
  多个存储媒介;有独立的缓冲区,可以对多个文件进行读/写,并特别对 8 位单片机和 16 位
  单片机做了优化。
  FATFS 的特点有:
  ⚫ Windows 兼容的 FAT 文件系统(支持 FAT12/FAT16/FAT32) ⚫ 与平台无关,移植简单
  ⚫ 代码量少、效率高
  ⚫ 多种配置选项
   支持多卷(物理驱动器或分区,最多 10 个卷)
   多个 ANSI/OEM 代码页包括 DBCS
   支持长文件名、ANSI/OEM 或 Unicode
   支持 RTOS
   支持多种扇区大小
   只读、最小化的 API 和 I/O 缓冲区等
  FATFS结构如下:
  
  应用层只需要调用相关API进行操作,无需理会FAT协议,中间层 FATFS 模块,实现了 FAT 文件读/写协议。FATFS 模块提供的是 ff.c 和 ff.h。除非有必要,使用者一般不用修改,使用时将头文件直接包含进去即可。需要我们编写移植代码的是 FATFS 模块提供的底层接口,它包括存储媒介读/写接口(disk I/O)和供给文件创建修改时间的实时时钟。
  FAT源文件大概介绍:
  ffconf.h FATFS 模块配置文件
  ff.h FATFS 和应用模块公用的包含文件
  ff.c FATFS 模块
  diskio.h FATFS 和 disk I/O 模块公用的包含文件
  interger.h 数据类型定义
  option 可选的外部功能(比如支持中文等)
  与平台相关的代码(需要用户提供)是:diskio.c FATFS 和 disk I/O 模块接口层文件
  FATFS 模块在移植的时候,我们一般只需要修改 2 个文件,即 ffconf.h 和 diskio.c。FATFS
  模块的所有配置项都是存放在 ffconf.h 里面,我们可以通过配置里面的一些选项,来满足自己
  的需求。
  通过以下三步,我们即可完成对 FATFS 的移植。
  第一步,查看我们使用的 编译器,数据类型和 integer.h 里面定义的是否一致。
  第二步,关于 ffconf.h 里面的相关配置我们将需要的功能对应配置修改为我们介绍时候的值即可,其他的配置用默认配置。
  第三步,因为 FATFS 模块完全与磁盘 I/O 层分开,因此需要一些函数来实现底层物理磁
  盘的读写与获取当前时间。底层磁盘 I/O 模块并不是 FATFS 的一部分,并且必须由用户提供。
  以SD卡和spi flash(外部flash)为例。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分