μC/FS
文件系统
软件版本 1.26
CPU 无关
用户参考手册
翻译:Coolbor Xie
2012 年 10 月 6 日
目录
1.关于本文档 .................................................................................................................................... 1
1.1.假设..................................................................................................................................... 1
1.2.如用使用本手册 ................................................................................................................. 1
2.µC/FS 简介 ..................................................................................................................................... 2
2.1.什么是 µC/FS? .................................................................................................................... 2
2.2.特性..................................................................................................................................... 2
3.基本概念 ................................................................................................................................ 3
3.1.API 层 .................................................................................................................................. 3
3.2.文件系统层 ......................................................................................................................... 3
3.3.逻辑块层 ............................................................................................................................. 3
3.4.设备驱动 ............................................................................................................................. 3
4.入门 ............................................................................................................................................... 4
4.1.安装..................................................................................................................................... 4
4.2.使用 Windows 示例............................................................................................................ 4
4.2.1.编译示例程序 .......................................................................................................... 4
4.2.2.一步一步调试示例程序 .......................................................................................... 4
4.3.将 µC/FS 集成到你的系统中 ............................................................................................. 6
4.3.1.创建一个没有 µC/FS 的简单工程 .......................................................................... 7
4.3.2.添加 µC/FS 配置 ...................................................................................................... 7
4.3.3.添加 µC/FS 通用源代码 .......................................................................................... 7
4.3.4.配置搜索路径 .......................................................................................................... 7
4.3.5.添加通用示例代码 .................................................................................................. 7
4.3.6.编译并测试你的应用 .............................................................................................. 7
5.µC/FS 的配置 ................................................................................................................................. 8
5.1.fs_conf.h .............................................................................................................................. 8
5.1.1.操作系统支持 ........................................................................................................ 13
5.1.2.时间/日期支持 ...................................................................................................... 13
5.1.3.文件系统层支持 .................................................................................................... 13
5.1.4.设备驱动支持和配置 ............................................................................................ 13
5.2.fs_port.h ............................................................................................................................ 14
6. API 函数 ...................................................................................................................................... 16
6.1.文件系统控制函数 ........................................................................................................... 16
6.1.1. FS_Exit():停止文件系统 ..................................................................................... 16
6.1.2.FS_Init():启用文件系统 ...................................................................................... 17
6.2.文件访问函数 ................................................................................................................... 18
6.2.1.FS_FClose():关闭文件 ......................................................................................... 18
6.2.2.FS_FOpen():打开文件 ......................................................................................... 19
6.3.直接输入/输出函数 ......................................................................................................... 21
6.3.1.FS_FRead():从文件读取数据 .............................................................................. 21
6.3.2. FS_FWrite():写数据到文件 ................................................................................ 22
6.4.文件定位函数 ................................................................................................................... 23
I
6.4.1. FS_FSeek():设置文件指针的位置 ..................................................................... 23
6.4.2. FS_FTell():返回文件指针的位置 ........................................................................ 24
6.5.错误处理函数 ................................................................................................................... 25
6.5.1. FS_ClearErr():清除错误状态 .............................................................................. 25
6.5.2. FS_FError():返回错误代码 ................................................................................. 26
6.6.在文件上操作 ................................................................................................................... 27
6.6.1. FS_Remove():删除文件 ...................................................................................... 27
6.7.目录函数 ........................................................................................................................... 28
6.7.1. FS_CloseDir():关闭目录 ..................................................................................... 28
6.7.2. FS_MkDir():创建目录 ......................................................................................... 29
6.7.3. FS_OpenDir():打开目录 ..................................................................................... 30
6.7.4. FS_ReadDir():从目录读 ...................................................................................... 31
6.7.5. FS_RewindDir():复位目录流中的位置 .............................................................. 32
6.7.6. FS_RmDir():删除目录 ......................................................................................... 33
7.设备驱动 ...................................................................................................................................... 34
7.1.设备驱动函数 ................................................................................................................... 34
7.1.1. _FS_DevIoCtl() ....................................................................................................... 34
7.1.2. _FS_DevRead() ...................................................................................................... 35
7.1.3. _FS_DevStatus() .................................................................................................... 36
7.1.4. _FS_DevWrite() ..................................................................................................... 37
7.2.设备驱动函数表 ............................................................................................................... 38
7.3.集成一个新设备驱动 ....................................................................................................... 38
8.SmartMedia 卡设备驱动 ............................................................................................................. 40
8.1.控制线函数 ....................................................................................................................... 40
8.1.1. FS_SMC_HW_X_BusyLedOff() ............................................................................... 40
8.1.2. FS_SMC_HW_X_BusyLedOn() ............................................................................... 41
8.1.3. FS_SMC_HW_X_SetAddr() .................................................................................... 42
8.1.4. FS_SMC_HW_X_SetCmd() ..................................................................................... 43
8.1.5. FS_SMC_HW_X _SetData() .................................................................................... 44
8.1.6. FS_SMC_HW_X_SetStandby() ............................................................................... 45
8.2.电源控制函数 ................................................................................................................... 46
8.2.1. FS_SMC_HW_X_VccOff() ....................................................................................... 46
8.2.2. FS_SMC_HW_X_VccOn() ....................................................................................... 47
8.3.状态检测函数 ................................................................................................................... 48
8.3.1. FS_SMC_HW_X_ChkBusy() .................................................................................... 48
8.3.2. FS_SMC_HW_X_ChkCardIn() ................................................................................. 49
8.3.3. FS_SMC_HW_X_ChkPower() ................................................................................. 50
8.3.4. FS_SMC_HW_X_ChkStatus() ................................................................................. 51
8.3.5. FS_SMC_HW_X_ChkWP() ...................................................................................... 52
8.3.6. FS_SMC_HW_X_DetectStatus() ............................................................................. 53
8.4.数据传输函数 ................................................................................................................... 54
8.4.1. FS_SMC_HW_X_InData() ....................................................................................... 54
8.4.2. FS_SMC_HW_X_OutData() .................................................................................... 55
8.5. 定时器函数 ..................................................................................................................... 56
II
8.5.1. FS_SMC_HW_X_ChkTimer() .................................................................................. 56
8.5.2. FS_SMC_HW_X_SetTimer() ................................................................................... 57
8.5.3. FS_SMC_HW_X_StopTimer() ................................................................................. 58
8.5.4. FS_SMC_HW_X_WaitTimer() ................................................................................ 59
9.MultiMedia & SD 卡设备驱动 ..................................................................................................... 60
9.1.控制线函数 ....................................................................................................................... 60
9.1.1. FS_MMC_HW_X_BusyLedOff() ............................................................................. 60
9.1.2. FS_MMC_HW_X_BusyLedOn() .............................................................................. 61
9.1.3. FS_MMC_HW_X_ClockCard() ................................................................................ 62
9.1.4. FS_MMC_HW_X_SetCS() ....................................................................................... 63
9.2.操作条件检测与调整函数 ............................................................................................... 64
9.2.1. FS_MMC_HW_X_AdjustFOP() ............................................................................... 64
9.2.2. FS_MMC_HW_X_CheckOCR() ............................................................................... 65
9.2.3. FS_MMC_HW_X_GetFOP() ................................................................................... 66
9.3.状态检测函数 ................................................................................................................... 67
9.3.1. FS_MMC_HW_X_CheckWP() ................................................................................ 67
9.3.2. FS_MMC_HW_X_DetectStatus() ........................................................................... 68
9.3.3. FS_MMC_HW_X_WaitBusy() ................................................................................. 69
9.4.数据传输函数 ................................................................................................................... 70
9.4.1. FS_MMC_HW_X_ReadByte() ................................................................................ 70
9.4.2. FS_MMC_HW_X_ReadByteNoSync() .................................................................... 72
9.4.3. FS_MMC_HW_X_ReadSingleBlock() ..................................................................... 73
9.4.4. FS_MMC_HW_X_WriteByte() ............................................................................... 75
9.4.5. FS_MMC_HW_X_WriteByteSingleBlock() ............................................................. 76
10.CompactFlash 卡 & IDE 设备驱动 ............................................................................................ 77
10.1.控制线函数 ..................................................................................................................... 77
10.1.1. FS_IDE_HW_X_BusyLedOff() ............................................................................... 77
10.1.2. FS_IDE_HW_X_BusyLedOn() ............................................................................... 78
10.1.3. FS_IDE_HW_X_HWReset() .................................................................................. 79
10.2. ATA I/O 寄存器访问函数 ............................................................................................... 80
10.2.1. FS_IDE_HW_X_GetAltStatus() ............................................................................. 80
10.2.2. FS_IDE_HW_X_GetCylHigh() ............................................................................... 81
10.2.3. FS_IDE_HW_X_GetCylLow() ................................................................................ 82
10.2.4. FS_IDE_HW_X_GetData() .................................................................................... 83
10.2.5. FS_IDE_HW_X_GetDevice() ................................................................................. 84
10.2.6. FS_IDE_HW_X_GetError() ................................................................................... 85
10.2.7. FS_IDE_HW_X_GetSectorCount() ....................................................................... 86
10.2.8. FS_IDE_HW_X_GetSectorNo() ............................................................................ 87
10.2.9. FS_IDE_HW_X_GetStatus() ................................................................................. 88
10.2.10. FS_IDE_HW_X_SetCommand() ......................................................................... 89
10.2.11. FS_IDE_HW_X_SetCylHigh() .............................................................................. 90
10.2.12. FS_IDE_HW_X_SetCylLow() ............................................................................... 91
10.2.13. FS_IDE_HW_X_SetData() ................................................................................... 92
10.2.14. FS_IDE_HW_X_SetDevControl() ........................................................................ 93
III
10.2.15. FS_IDE_HW_X_SetDevice() ............................................................................... 94
10.2.16. FS_IDE_HW_X_SetFeatures() ............................................................................ 95
10.2.17. FS_IDE_HW_X_SetSectorCount() ...................................................................... 96
10.2.18. FS_IDE_HW_X_SetSectorNo() ........................................................................... 97
10.3.状态检测函数 ................................................................................................................. 98
10.3.1. FS_IDE_HW_X_DetectStatus()............................................................................. 98
11.操作系统集成 .......................................................................................................................... 100
11.1.操作系统层控制函数 ................................................................................................... 100
11.1.1. FS_X_OS_Exit() .................................................................................................. 100
11.1.2. FS_X_OS_Init() ................................................................................................... 101
11.2.内部数据结构保护 ....................................................................................................... 102
11.2.1. FS_X_OS_LockFileHandle() ................................................................................ 102
11.2.2. FS_X_OS_LockMem() ........................................................................................ 103
11.2.3. FS_X_OS_UnlockFileHandle() ............................................................................ 104
11.2.4. FS_X_OS_UnlockMem() .................................................................................... 105
11.3.文件访问保护 ............................................................................................................... 106
11.3.1. FS_X_OS_LockFileOp()....................................................................................... 106
11.3.2. FS_X_OS_UnlockFileOp() ................................................................................... 107
11.4.设备访问保护 ............................................................................................................... 108
11.4.1. FS_X_OS_LockDeviceOp() ................................................................................. 108
11.4.2. FS_X_OS_UnlockDeviceOp() ............................................................................. 109
11.5.时间/日期函数 ............................................................................................................. 110
11.5.1. FS_X_OS_GetDate() ........................................................................................... 110
11.5.2. FS_X_OS_GetTime() .......................................................................................... 111
IV
1.关于本文档
本文档描述了 µC/FS FAT 文件系统的功能和用户 API。
1.1.假设
本文档假设你已经具备以下知识:
用于编译应用的软件工具(汇编器、连接器、C 编译器)
C 语言
目标处理器
DOS 命令行
1.2.如用使用本手册
本手册介绍了 µC/FS 提供的所有函数和宏。本册需要 C 语言知识,而对汇编知识没有要求。
1
2.µC/FS 简介
2.1.什么是 µC/FS?
µC/FS 是能用于任何媒体的 FAT 文件系统,而你只需要为其提供基本硬件访问函数即可。
µC/FS 是一个在速度、灵活性和内在使用上都优化过的高效软件库。
2.2.特性
µC/FS 是用 ANSI C 写的,能够在任何 CPU 上使用。µC/FS 的一些特性如下:
支持 MS-DOS/MS-Windows 兼容的 FAT12 和 FAT16
多设备驱动支持。你可以在 µC/FS 使用多个不同的设备驱动,这允许你同时访问不同类型硬件的文件
系统。
多媒体支持。一个设备驱动允许你同时访问不同的媒体。
操作系统支持。µC/FS 能够很容易地集成到任何操作系统中。这样就能够在多纯种环境下进行文件操
作。
为用户应用提供类似 API 的 ANSI C stdio.h.。使用 µC/FS 能够很容易移植到使用标准 C I/O 库的应用
中。
非常简单的设备驱动结构。µC/FS 设备驱动只需要非常基本的块读写函数。所以支持用户自己的硬件
是非常简单的。
SmartMedia 卡的通用设备驱动程序,能容易地用于任何一种读卡硬件。
使用 SPI 模式的 MultitMedia & SD 卡的通用设备驱动程序,便于集成。
2
API 层
文件系统层
3.基本概念
µC/FS 是按不用的层来组织的。以下给出了每一层功能性方面的简单描述。
设备驱动层
逻辑块层
文件操作到扇区操作的
转换
类似函数,例如:
FS_fopen,FS_fread 等
不同文件操作的设备操
作同步
访问设备扇区和检查状
态的低级程序
3.1.API 层
API 层是 µC/FS 与用户应用之间的接口。其中包含了一个 ANSI C 面向文件函数的库,如 FS_FOpen、
FS_FWrite 等。API 层将这些调用传递到文件系统层。目前,µC/FS 只有 FAT 文件系统层可用,但是 API
层可以同时处理多个不同的文件系统层。所以在 µC/FS 中同时使用 FAT 和其他任何文件系统是可能的。
3.2.文件系统层
文件系统层将文件操作转换成逻辑块操作。在这样的转换之后,文件系统调用逻辑块层并为设备指定相应
的设备驱动程序。
3.3.逻辑块层
逻辑块层的主要目的是同步访问设备驱动程序,以及为文件系统层提供简单的接口。逻辑块层将调用设备
驱动程序来进行块操作。
3.4.设备驱动
设备驱动是用于访问硬件的底层程序。设备驱动的结构很简单,可以很容易地集成到硬件。
3