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)为例。
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)为例。
举报