Fatfs文件系统2015-04.doc

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Fatfs文件系统2015-04

2015-04-18 FATFS文件管理系统 、 FATFS 是一个完全免费开源的 FAT 文件系统模块,专门为小型的嵌入式系统而设计。它完 FATFS 的特点有: (?代码量少、效率高 (?多种配置选项 (?支持多卷(物理驱动器或分区,最多 10 个卷) (?多个 ANSI/OEM 代码页包括 DBCS (?支持长文件名、 ANSI/OEM 或 Unicode (?支持 RTOS (?支持多种扇区大小 (?只读、最小化的 API 和 I/O 缓冲区等 二、FATFS结构图 三、FATFS源码 .源码下载 1)在/fsw/ff/00index_e.html下载FatFs源码R0.10b版本; (2)打开压缩包,里面有doc和src文件夹doc是对FatFs的一些介绍及说明src为FatFs的源码 2.FatFs源码介绍 (1)与硬件平台无关的 ffconf.h FATFS 模块配置文件 ff.h FATFS 和应用模块公用的包含文件 ff.c FATFS 模块 diskio.h FATFS 和 disk I/O 模块公用的包含文件 interger.h 数据类型定义 option 可选的外部功能(比如支持中文等) 2) 与硬件平台相关的文件 diskio.c FATFS 和 disk I/O 模块接口层文件 3) 移植时,的选项配置 _FS_TINY。这个选项在 R0.07 版本中开始出现,之前的版本都是以独立的 C 文件出现 _FS_READONLY。这个用来配置是不是只读,本章我们需要读写都用,所以这里设置为 0 即可。 _USE_STRFUNC。这个用来设置是否支持字符串类操作,比如 f_putc, f_puts 等,本章我们需要用到,故设置这里为 1。 _USE_MKFS。这个用来定时是否使能格式化,本章需要用到,所以设置这里为 1。 _USE_FASTSEEK。这个用来使能快速定位,我们设置为 1,使能快速定位。 _USE_LABEL。这个用来设置是否支持磁盘盘符(磁盘名字)读取与设置。我们设置为 1,使能,就可以通过相关函数读取或者设置磁盘的名字了。 _CODE_PAGE。这个用于设置语言类型, 包括很多选项(见 FATFS 官网说明),我们这里设置为 936,即简体中文( GBK 码,需要 c936.c 文件支持,该文件在 option 文件夹)。 _USE_LFN。该选项用于设置是否支持长文件名(还需要_CODE_PAGE 支持),取值范围为 0~3。 0,表示不支持长文件名, 1~3 是支持长文件名,但是存储地方不一样,我们选择使用 3,通过 ff_memalloc 函数来动态分配长文件名的存储区域。 _VOLUMES。用于设置 FATFS 支持的逻辑设备数目,我们设置为 2,即支持 2 个设备。 _MAX_SS。扇区缓冲的最大值,一般设置为 512。 四、FATFS源码步骤 .数据类型 在integer.h文件中配置类型根据编译器类型配置,如VC中int2,在KeilMDK中int占4Integer.h中的数据类型与MDK中相同,所见就不需要配置 2. 在ffconf.h中配置上面介绍的重要的配置和其他配置重要的配置按照上面介绍的配置可以了其他配置保持默认; 3. 在diskio中编写底层驱动 disk_initialize - Initialize disk drive disk_status - Get disk status disk_read - Read sector(s) disk_write - Write sector(s) disk_ioctl - Control device dependent features get_fattime - Get current time 首先需要定义存储器的号码,我们定义SD卡为 SPI FLASH为还需根据不同存储器的类型定义存储的sector和block下面介绍的六种驱动函数 disk_initialize DSTATUS disk_initialize ( BYTE pdrv /* Physical drive nmuber (0..) */ ){ u8 res=0; switch(pdrv) { case SD_CARD: res=SD_Init();//SD 卡初始化 break; case EX_FLASH: //外部 flash W25QXX_Init(); FLASH_SECTOR_COUNT=2048*1

您可能关注的文档

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档