FATFS简介
#if !_FS_READONLY
#endif
#if !_FS_TINY
#endif
} FIL;
typedef struct _FILINFO_ {
#if _USE_LFN
#endif
} FILINFO; 这个结构主要描述文件的状态信息,包括文件名13个字符(8+.+3+)、属性、修改时间等。
接下来是函数的定义,先大概浏览一遍。
FRESULT f_mount (BYTE, FATFS*);
FRESULT f_open (FIL*, const XCHAR*, BYTE);//打开文件,第一个参数是文件信息结构,第二个参数是文件名,第三是文件打开模式
FRESULT f_read (FIL*, void*, UINT, UINT*);
FRESULT f_write (FIL*, const void*, UINT, UINT*);//写文件,参数跟读差不多
FRESULT f_lseek (FIL*, DWORD); //移动文件的读写指针,参数2应该是移动的数目。
FRESULT f_close (FIL*);
FRESULT f_opendir (DIR*, const XCHAR*);
FRESULT f_readdir (DIR*, FILINFO*);
FRESULT f_stat (const XCHAR*, FILINFO*);
FRESULT f_getfree (const XCHAR*, DWORD*, FATFS**);
FRESULT f_truncate (FIL*);
FRESULT f_sync (FIL*);
FRESULT f_unlink (const XCHAR*);
FRESULT
FRESULT f_chmod (const XCHAR*, BYTE, BYTE);
FRESULT f_utime (const XCHAR*, const FILINFO*);
FRESULT f_rename (const XCHAR*, const XCHAR*);
FRESULT f_forward (FIL*, UINT(*)(const BYTE*,UINT), UINT, UINT*); 这个函数还要提供一个回调函数。
FRESULT f_mkfs (BYTE, BYTE, WORD);
FRESULT f_chdir (const XCHAR*);
FRESULT f_chdrive (BYTE);
应该说基本能明白这些函数用于干什么。
#if _USE_STRFUNC
int f_putc (int, FIL*);
int f_puts (const char*, FIL*);
int f_printf (FIL*, const char*, ...);
char* f_gets (char*, int, FIL*);
#define f_eof(fp) (((fp)->fptr == (fp)->fsize) ? 1 : 0)
#define f_error(fp) (((fp)->flag & FA__ERROR) ? 1 : 0)
#if _FS_REENTRANT
BOOL ff_cre_syncobj(BYTE, _SYNC_t*); 创建同步对象
BOOL ff_del_syncobj(_SYNC_t);
BOOL ff_req_grant(_SYNC_t);
void ff_rel_grant(_SYNC_t); 释放同步对象。
#endif
3、diskio.h文件
typedef BYTE
typedef
BOOL assign_drives (int argc, char *argv[]); //这个函数不知道干吗
DSTATUS disk_initialize (BYTE); //磁盘初始化
DSTATUS disk_status (BYTE); //获取磁盘状态
DRESULT disk_read (BYTE, BYTE*, DWORD, BYTE);
#if
DRESULT disk_write (BYTE, const BYTE*, DWORD, BYTE);
#endif
DRESULT disk_ioctl (BYTE, BYTE, void*); //磁盘控制
接下来还有一些常数的定义,具体用到时在看。
4、diskio.c的结构
DSTATUS disk_initialize (
{
}
函数基本都像这样,drv表示磁盘的类型。没有实现,用户必须实现这部分代码。
5、ff.c文件简单浏览
#include "ff.h"
#include "diskio.h"
#define
#define
Static
Static WORD Lfn
FATFS移植文件系 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)