FatFS文件系统详解-附移植建议

本文详细介绍了FatFS文件系统的特性以及如何进行移植,包括修改ffconf.h配置文件,理解关键数据结构和函数,以及编写底层操作接口。移植时需关注FatFS的配置选项,如文件系统功能、硬件相关设置等,并实现相应的扇区读写函数。
摘要由CSDN通过智能技术生成

    最近做的spi flash,本打算弄个文件系统,由于之前用过了JFFS、YAFFS和TrueFFS,代码量都相当的大,这次想找款代码量不那么吓人的,学习一下,听说配置会相对复杂一些。选来选去,最终选定了FatFS,代码量足够的小,最新的R0.09版本只有1个.c文件(当然,还有一个底层的要自己写,option文件夹里的无视),老点版本就更小了。而且更新很频繁,用户量也够大,就选定它了。尽管最后由于硬件和项目原因未能实际的移植它到vxWorks,但学过的还是要记录下。

    在这里http://elm-chan.org/fsw/ff/00index_e.html下载源码,只有800多K,小的可怜,还可以下载示例程序,有AVR、Win32、lpc等多平台已实现的方案。打开看src文件夹,一个option文件夹、00readme.txt、diskio.h、ff.c、ff.h、ffconf.h和interger.h。移植时需要修改的文件主要包括ffconf.h和interger.h,后者是在它的定义与目标平台上的有冲突,或者用的不习惯时修改的。

    在做具体修改之前,先大概阅读下FatFS的源代码,可以先读integer.h,了解所用的数据类型,然后是ff.h,了解文件系统所用的数据结构和各种函数声明,再就是diskio.h,了解与介质相关的数据结构和操作函数。ff.c这个文件相对较大,可以在最后将所实现的函数大致扫描一遍,之后根据用户应用层程序调用函数的次序仔细阅读相关代码。各个文件都可以直接用记事本打开查阅,非常方便。ff.h中的几个结构体十分重要,列举如下,首先是最基础的文件系统结构体:

/* File system object structure (FATFS) */
typedef struct {
	BYTE	fs_type;		/* FAT子类型,一般在mount时用,置0表示未挂载*/
	BYTE	drv;			/* 物理驱动号,一般为0*/
	BYTE	csize;			/* 每个簇的扇区数目(1,2,4...128) */
	BYTE	n_fats;			/* 文件分配表的数目(1,2) */
	/*FAT文件系统依次为:引导扇区、两个文件分配表、根目录区和数据区*/
	BYTE	wflag;			/* 标记文件是否被改动过,为1时要回写*/
	BYTE	fsi_flag;		/* 标记文件系统信息是否被改
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值