一、移动文件指针
typedef struct {
FATFS* fs; /* Pointer to the related file system object (**do not change order**) */
WORD id; /* Owner file system mount ID (**do not change order**) */
BYTE flag; /* Status flags */
BYTE err; /* Abort flag (error code) */
DWORD fptr; /* File read/write pointer (Zeroed on file open) */
DWORD fsize; /* File size */
DWORD sclust; /* File start cluster (0:no cluster chain, always 0 when fsize is 0) */
DWORD clust; /* Current cluster of fpter (not valid when fprt is 0) */
DWORD dsect; /* Sector number appearing in buf[] (0:invalid) */
#if !_FS_READONLY
DWORD dir_sect; /* Sector number containing the directory entry */
BYTE* dir_ptr; /* Pointer to the directory entry in the win[] */
#endif
#if _USE_FASTSEEK
DWORD* cltbl; /* Pointer to the cluster link map table (Nulled on file open) */
#endif
#if _FS_LOCK
UINT lockid; /* File lock ID origin from 1 (index of file semaphore table Files[]) */
#endif
#if !_FS_TINY
BYTE buf[_MAX_SS]; /* File private data read/write window */
#endif
} FIL;
FRESULT f_lseek (
FIL* fp, /* Pointer to the file object */
DWORD ofs /* File pointer from top of file */
)
表示文件指针从文件头开始移动ofs个距离
不通过这个函数,而使用FIL结构体里的fptr成员也可以移动读写指针(f_open打开文件,用fptr移动文件指针,立刻用f_read读时会出现问题,要用f_lseek)
二、关于FR_INVALID_DRIVE(无效的驱动号)问题
ffconfig.h中有一个参数
#define _VOLUMES 2
/* Number of volumes (logical drives) to be used. */
表示驱动号的数量(磁盘驱动器的数量),这参数说明当驱动号大于或等于2时会出现“无效的驱动号”错误。
若想挂载更多设备,将其修改成更大的数即可,
参考帖子:http://www.openedv.com/posts/list/6683.htm