logo资料库

FatFs文件系统中文手册.pdf

第1页 / 共49页
第2页 / 共49页
第3页 / 共49页
第4页 / 共49页
第5页 / 共49页
第6页 / 共49页
第7页 / 共49页
第8页 / 共49页
资料共49页,剩余部分请下载后查看
1.特点
2.应用程序接口
2.1 f_mount
2.2 f_open
2.3 f_close
2.4 f_read
2.5 f_write
2.6 f_lseek
2.7 f_truncate
2.9 f_opendir
2.8 f_sync
2.10 f_readdir
2.11 f_getfree
2.12 f_stat
2.13 f_mkdir
2.14 f_unlink
2.15 f_chmod
2.16 f_utime
2.17 f_rename
2.18 f_chdir
2.19 f_chdrive
2.20 f_getcwd
2.21 f_forward
2.22 f_mkfs
2.23 f_fdisk
2.24 f_gets
2.25 f_putc
2.26 f_puts
2.27 f_printf
2.28 f_tell
2.29 f_eof
2.30 f_size
2.31 f_error
3、磁盘 I/O 接口
3.1 disk_initialize
3.2 disk_status
3.3disk_read
3.4 disk_write
3.5 disk_ioctl
3.6 get_fattime
4、 FatFs 模块应用
4.1 如何移植
4.1.1 基本概念
4.1.2 系统组织
4.1.3 需要哪些函数?
4.2 限制
4.3 内存使用(R0.09a)
4.4 模块大小裁减
4.5 长文件名
4.6 Unicode API
4.7 重入
4.8 重复的文件访问
4.9 执行有效的文件访问
4.10 关于闪存媒体的考虑
4.10.1 使用多扇区写
4.10.2 强制内存擦除
4.11 临界区(Critical Section)
FatFs 通用 FAT 文件系统模块 中文手册 版本:R0.009a  
FatFs 通用 FAT 文件系统模块  目录  1、特点 ....................................................................................................................................................................... 1  2、应用程序接口 ....................................................................................................................................................... 2  2.1 f_mount ......................................................................................................................................................... 3  2.2 f_open ............................................................................................................................................................ 4  2.3 f_close ............................................................................................................................................................ 6  2.4 f_read ............................................................................................................................................................. 7  2.5 f_write ............................................................................................................................................................ 8  2.6 f_lseek ............................................................................................................................................................ 9  2.7 f_truncate .................................................................................................................................................... 10  2.8 f_sync ........................................................................................................................................................... 11  2.9 f_opendir ..................................................................................................................................................... 12  2.10 f_readdir .................................................................................................................................................... 13  2.11 f_getfree .................................................................................................................................................... 15  2.12 f_stat .......................................................................................................................................................... 16  2.13 f_mkdir ....................................................................................................................................................... 17  2.14 f_unlink ...................................................................................................................................................... 18  2.15 f_chmod ..................................................................................................................................................... 19  2.16 f_utime ...................................................................................................................................................... 20  2.17 f_rename ................................................................................................................................................... 21  2.18 f_chdir ........................................................................................................................................................ 22  2.19 f_chdrive .................................................................................................................................................... 23  2.20 f_getcwd .................................................................................................................................................... 24  2.21 f_forward ................................................................................................................................................... 25  2.22 f_mkfs ........................................................................................................................................................ 27  2.23 f_fdisk ........................................................................................................................................................ 28  2.24 f_gets ......................................................................................................................................................... 29  2.25 f_putc ......................................................................................................................................................... 30  2.26 f_puts ......................................................................................................................................................... 31  2.27 f_printf ....................................................................................................................................................... 32  2.28 f_tell ........................................................................................................................................................... 33  2.29 f_eof ........................................................................................................................................................... 34  2.30 f_size .......................................................................................................................................................... 35  2.31 f_error ........................................................................................................................................................ 36  3、磁盘 I/O 接口 ...................................................................................................................................................... 37  3.1 disk_initialize ............................................................................................................................................... 37  3.2 disk_status ................................................................................................................................................... 37  3.3disk_read ...................................................................................................................................................... 38  3.4 disk_write .................................................................................................................................................... 38  3.5 disk_ioctl ...................................................................................................................................................... 39  3.6 get_fattime .................................................................................................................................................. 40  4、FatFs 模块应用 .................................................................................................................................................... 41  4.1  如何移植 .................................................................................................................................................... 41   
FatFs 通用 FAT 文件系统模块  4.1.1  基本概念 ......................................................................................................................................... 41  4.1.2  系统组织 ......................................................................................................................................... 41  4.1.3  需要哪些函数? ............................................................................................................................. 41  4.2  限制 ............................................................................................................................................................ 42  4.3 内存使用(R0.09a) ........................................................................................................................................ 42  4.4 模块大小裁减 ............................................................................................................................................. 42  4.5  长文件名 .................................................................................................................................................... 43  4.6 Unicode API .................................................................................................................................................. 43  4.7  重入 ............................................................................................................................................................ 44  4.8  重复的文件访问 ........................................................................................................................................ 44  4.9  执行有效的文件访问 ................................................................................................................................ 44  4.10  关于闪存媒体的考虑 .............................................................................................................................. 45  4.10.1  使用多扇区写 ............................................................................................................................... 45  4.10.2  强制内存擦除 ............................................................................................................................... 45  4.11  临界区(Critical Section) ...................................................................................................................... 46     
FatFs 通用 FAT 文件系统模块  FatFs 是一个为小型嵌入式系统设计的通用 FAT(File Allocation Table)文件系统模块。FatFs 的编写遵循 ANSI C,并且完全与磁盘 I/O 层分开。因此,它独立(不依赖)于硬件架构。它可以被嵌入到低成本的微控制 器中,如 AVR、8051、PIC、ARM、Z80、68K 等等,而不需要做任何修改。 1、特点 Windows 兼容的 FAT 文件系统 不依赖于平台,易于移植 代码和工作区占用空间非常小 多种配置选项: 多卷(物理驱动器和分区) 多 ANSI/OEM 代码页,包括 DBCS 在 ANSI/OEM 或 Unicode 中长文件名的支持 RTOS 的支持 多扇区大小的支持 只读,最少 API,I/O 缓冲区等等 1 
FatFs 通用 FAT 文件系统模块  2、应用程序接口 FatFs 模块为应用程序提供了下列函数,这些函数描述了 FatFs 能对 FAT 卷执行哪些操作。 函数名 描述 f_mount f_open f_close f_read f_write f_lseek f_truncate f_sync f_opendir f_readdir f_getfree f_stat f_mkdir f_unlink f_chmod f_utime f_rename f_chdir f_chdrive f_getcwd f_forward f_mkfs f_fdisk f_gets f_putc f_puts f_printf f_tell f_eof f_size f_error 注册/注销一个工作区 打开/创建一个文件 关闭一个文件 读取文件 写文件 移动读/写指针,扩展文件大小 截断文件大小 清空缓冲数据 打开一个目录 读取一个目录项 获取空闲簇 获取文件状态 创建一个目录 删除一个文件或目录 修改属性 修改日间戳 删除/移动一个文件或目录 修改当前目录 修改当前驱动器 恢复当前目录 直接输出文件数据流 在驱动器上创建一个文件系统 划分一个物理驱动器 读取一个字符串 写一个字符 写一个字符串 写一个格式化的字符串 获取当前读/写指针 测试一个文件是否到达文件末尾 获取一个文件的大小 测试一个文件是否出错 2 
FatFs 通用 FAT 文件系统模块  2.1 f_mount 在 FatFs 模块上注册/注销一个工作区(文件系统对象)。 FRESULT f_mount ( BYTE Drive, /* 逻辑驱动器号 */ FATFS* FileSystemObject /* 工作区指针 */ ); 参数 Drive 注册/注销工作区的逻辑驱动器号(0-9)。 FileSystemObject 工作区(文件系统对象)指针。 返回值 FR_OK (0)函数成功。 FR_INVALID_DRIVE 驱动器号无效 描述 f_mount 函数在 FatFs 模块上注册/注销一个工作区。在使用任何其他文件函数之前,必须使用该函数为 每个卷注册一个工作区。要注销一个工作区,只要指定 FileSystemObject 为 NULL 即可,然后该工作区可以 被丢弃。 该函数只初始化给定的工作区,以及将该工作区的地址注册到内部表中,不访问磁盘 I/O 层。卷装入过 程是在 f_mount 函数后或存储介质改变后的第一次文件访问时完成的。 3 
FatFs 通用 FAT 文件系统模块  2.2 f_open 创建/打开一个用于访问文件的文件对象 FRESULT f_open ( FIL* FileObject, /* 空白文件对象结构指针 */ const XCHAR* FileName, /* 文件名指针 */ BYTE ModeFlags /* 模式标志 */ ); 参数 FileObject 将被创建的文件对象结构的指针。 FileName NULL 结尾的字符串指针,该字符串指定了将被创建或打开的文件名。 ModeFlags 指定文件的访问类型和打开方法。它是由下列标志的一个组合指定的。 模式 FA_READ FA_WRITE FA_OPEN_EXISTING FA_OPEN_ALWAYS FA_CREATE_NEW FA_CREATE_ALWAYS 描述 指定读访问对象。可以从文件中读取数据。 与 FA_WRITE 结合可以进行读写访问。 指定写访问对象。可以向文件中写入数据。 与 FA_READ 结合可以进行读写访问。 打开文件。如果文件不存在,则打开失败。(默认) 如果文件存在,则打开;否则,创建一个新文件。 创建一个新文件。如果文件已存在,则创建失败。 创建一个新文件。如果文件已存在,则它将被截断并覆盖。 注意:当 _FS_READONLY == 1 时,模式标志 FA_WRITE, FA_CREATE_ALWAYS, FA_CREATE_NEW, FA_OPEN_ALWAYS 是无效的。 返回值 FR_OK (0)函数成功,该文件对象有效。 FR_NO_FILE 找不到该文件。 FR_NO_PATH 找不到该路径。 FR_INVALID_NAME 文件名无效。 FR_INVALID_DRIVE 驱动器号无效。 FR_EXIST 该文件已存在。 FR_DENIED 由于下列原因,所需的访问被拒绝: • 以写模式打开一个只读文件。 • 由于存在一个同名的只读文件或目录,而导致文件无法被创建。 • 由于目录表或磁盘已满,而导致文件无法被创建。 FR_NOT_READY 由于驱动器中没有存储介质或任何其他原因,而导致磁盘驱动器无法工作。 FR_WRITE_PROTECTED 在存储介质被写保护的情况下,以写模式打开或创建文件对象。 FR_DISK_ERR 由于底层磁盘 I/O 接口函数中的一个错误,而导致该函数失败。 FR_INT_ERR 由于一个错误的 FAT 结构或一个内部错误,而导致该函数失败。 FR_NOT_ENABLED 逻辑驱动器没有工作区。 FR_NO_FILESYSTEM 磁盘上没有有效地 FAT 卷。 描述 如果函数成功,则创建一个文件对象。该文件对象被后续的读/写函数用来访问文件。如果想要关闭一 个打开的文件对象,则使用 f_close 函数。如果不关闭修改后的文件,那么文件可能会崩溃。 在使用任何文件函数之前,必须使用 f_mount 函数为驱动器注册一个工作区。只有这样,其他文件函数 4 
FatFs 通用 FAT 文件系统模块  才能正常工作。 示例(文件拷贝) void main (void) { FATFS fs[2]; /* 逻辑驱动器的工作区(文件系统对象) */ FIL fsrc, fdst; /* 文件对象 */ BYTE buffer[4096]; /* 文件拷贝缓冲区 */ FRESULT res; /* FatFs 函数公共结果代码 */ UINT br, bw; /* 文件读/写字节计数 */ /* 为逻辑驱动器注册工作区 */ f_mount(0, &fs[0]); f_mount(1, &fs[1]); /* 打开驱动器 1 上的源文件 */ res = f_open(&fsrc, "1:srcfile.dat", FA_OPEN_EXISTING | FA_READ); if (res) die(res); /* 在驱动器 0 上创建目标文件 */ res = f_open(&fdst, "0:dstfile.dat", FA_CREATE_ALWAYS | FA_WRITE); if (res) die(res); /* 拷贝源文件到目标文件 */ for (;;) { res = f_read(&fsrc, buffer, sizeof(buffer), &br); if (res || br == 0) break; /* 文件结束错误 */ res = f_write(&fdst, buffer, br, &bw); if (res || bw < br) break; /* 磁盘满错误 */ } /* 关闭打开的文件 */ f_close(&fsrc); f_close(&fdst); /* 注销工作区(在废弃前) */ f_mount(0, NULL); f_mount(1, NULL); } 5 
分享到:
收藏