没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
FAT 文件系统实验
学习目标:
1. 了解 FAT 文件系统
2. 学会移植 FATFS
3. 学会使用 FATFS
我们学习了 SD 卡的使用,并且学会了怎么对 SD 卡进行读写操作,不过要
真正应用 SD 卡,必须学习使用文件系统。什么是文件系统呢,操作系统用于明
确磁盘或分区上的文件的方法和数据结构,即在磁盘上组织文件的方法。我们电
脑的 windows 系统使用的就是 FAT 文件系统,大家都知道,一般我们新买的 SD
卡,如果没有使用过,插入电脑的时候都要先格式化,为什么呢?就是因为 SD
卡里面没有建立 FAT 文件系统,所以格式化之后,建立了 FAT 文件系统,电脑
才能识别 SD 卡上面的内存和文件。FAT 文件系统根据字节长度,有 FAT12、
FAT16、FAT32。
13.1 FATFS 简介
FATFS 是一个完全免费开源的 FAT 文件系统模块,专门为小型的嵌入式系
统而设计。它完全用标准 C 语言编写,所以具有良好的硬件平台独立性,可以
移植到 8051、PIC、AVR、SH、Z80、H8、ARM 等系列单片机上而只需做简
单的修改。它支持 FATl2、FATl6 和 FAT32,支持多个存储媒介;有独立的缓
冲区,可以对多个文件进行读/写,并特别对 8 位单片机和 16 位单片机做了优
化。反正 FSTFS 优点蛮多,挺好用,就是了,呵呵…大家下载最新的 FSTFS 可
以在 http://elm-chan.org/fsw/ff/00index_e.html 这个网站下载到。
13.2 FATFS 的移植
1. FATFS 源码文件说明
我们这里移植示范使用的是 R0.09b 版本,在我们例程文件下有一个 R0.09b
版本的压缩包。
我们解压该压缩包,会得到两个文件夹:
其中 doc 文件夹是各种使用说明,有英文版的和日文版的。而 src 文件夹就
是我们要使用的 FATFS 源码:
其中我们不需要修改的文件是:
ff.h FATFS 和应用模块公用的包含文件
ff.c FATFS 模块
diskio.h FATFS 和 disk I/O 模块公用的包含文件
interger.h 数据类型定义
里面还有个 option 文件夹,这个是可选的外部功能(比如支持中文等)。一
般我们使用中文的话,将 cc936.c 添加到工程里面就好了。
那么我们需要修改的文件也就两个了。
ffconf.h FATFS 模块配置文件
diskio.c FATFS 和 disk I/O 模块接口层文件
2. ffconf.h 配置说明
这 ffconf.h 的头文件里面是关于 FATFS 的各种设置,我们可以根据自己的需
要来裁剪 FATFS,已达到自己想要的标准。我们来看一下它都有那些设置:
1) _FS_TINY
这个设置是配置是使用标准模式,还是微小模式。我们使用标准模式,
这里设置为:0。
2) _FS_READONLY
是否使用只读模式,我们选择可读可写。设置为:0。
3) _FS_MINIMIZE
这个设置是选择是否裁剪掉一些函数,具体裁剪那些,大家可以查看下
面的设置说明,我们这里使用的全功能模式。设置为:0。
4) _USE_STRFUNC
这个用来设置是否支持字符串类操作,我们选择使用。设置为:1。
5) _USE_MKFS
使用使用格式化,我们这里选择使用。设置为:1。
6) _USE_FASTSEEK
使用使能快速定位,我们选择使用。设置为:1。
7) _USE_LABEL
是否启用磁盘卷标功能。使用也可以,不使用也可以。我们这里使用。
设置为:1。
8) _USE_FORWARD
这个是在 TINY 模式下的设置,我们这里使用标准模式,不理它。
9) _CODE_PAGE
这个用于设置语言类型。我们使用的中文。设置为:936
10) _USE_LFN
该选项用于设置是否支持长文件名(还需要_CODE_PAGE 支持),取值
范围为 0~3。0,表示不支持长文件名,1~3 是支持长文件名,但是存储地方
不一样。我们这里就默认使用 FATFS 本身的存储方式了。设置为:1。
11) _MAX_LFN
设置最大文件名长度,我们直接设置最大。设置为:255。
12) _LFN_UNICODE
是否使用 FATFS 的字符编码。我们不使用。设置为:0
13) _FS_RPATH
这里也是一些函数裁剪,我们这里设置为:1。
14) _VOLUMES
这里设置的是支持的卷轴数量,我们挂载 SD 卡,有时候可以挂载下
FLASH,所以这里我们设置为两个:2。
15) _MAX_SS
这里是设置扇区缓冲的最大值,我们设置为:512。
16) _MULTI_PARTITION
是否使用多重分区分配。我们这里设置为:0。
17) _USE_ERASE
使用使用扇区擦除。我们这里不那么麻烦,想使用的时候在设置。设置
为:0。
18) _WORD_ACCESS
这里定义使用权限。一般不使用。我们设置为:0。
19) _FS_REENTRANT
20) _FS_TIMEOUT
21) _SYNC_t
22) _FS_LOCK
这几个设置,我们都没有使用到,所以直接保持默认状态就好。
3. diskio.c 移植
diskio.c 是最底层的接口函数。一般需要编写 6 个接口函数,如图:
剩余14页未读,继续阅读
资源评论
知识世界
- 粉丝: 361
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功