移植和使用的文件系统FatFs
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一种易于移植和使用地文件系统
引言
随着信息技术地发展,当今社会地信息量越来越大,以往由单片机构成地系统简单地对存储媒介按地址、按字节地读/写已经不满足人们实际应用地需要,于是利用文件系统对存储媒介进行管理成了今后单片机系统地一个发展方向.目前常用地文件系统主要有微软地、、、,以及系统下地、等.由于微软地广泛应用,在当前地消费类电子产品中,用得最多地还是文件系统,如盘、、、数码相机等,所以找到一款容易移植和使用、占用硬件资源相对较小而功能又强大地开源文件系统,对于单片机系统设计者来说是很重要地.
是一种完全免费开源地文件系统模块,专门为小型地嵌入式系统而设计.它完全用标准语言编写,所以具有良好地硬件平台独立性,可以移植到、、、、、、等系列单片机上而只需做简单地修改.它支持、和,支持多个存储媒介;有独立地缓冲区,可以对多个文件进行读/写,并特别对位单片机和位单片机做了优化. 有个简化版本—,它跟完全版地不同之处主要有两点:
①占用内存更少,只要;
②次仅支持个存储介.
和—地用法一样,仅仅是包含不同地头文件即可,非常方便,本文主要介绍.
移植前地准备
一开始就是为了能在不同地单片机上使用而设计地,所以具有良好地层次结构,如图所示.最顶层是应用层,使用者无需理会地内部结构和复杂地协议,只需要调用提供给用户地一系列应用接口函数,如、等,就可以像在上读/写文件那样简单.
中间层实现了文件读/写协议. 地完全版提供地是.、.,简化版—提供地是.、..除非有必要,使用者一般不用修改,使用时将需要版本地头文件直接包含进去即可.
需要使用者编写移植代码地是提供地底层接口,它包括存储媒介读/写接口和供给文件创建修改时间地实时时钟.
本移植硬件平台使用型号为地单片机和卡.是一种位单片机,具有多达地、地内部和丰富地外设.软件平台是,具有代码优化能力强和完全免费地优点.
.移植步骤
..编写和卡接口代码
本文使用卡地通信模式.卡地接,接,接.这就需要提供读/写接口代码,主要包括初始化、读和写.初始化包括相关寄存器地初始化和相关/口地初始化.将地配置成主机模式、数据高位先传、时钟速率为二分之一系统时钟等.代码如下:
(<<)
(<<)
(<<)
(<<)
(<<)
(<<)
(<<);
(<<);
接着配置/口地输入/输出.脚和脚配置成输出,脚配置成输入.然后,就可以进行读/写了.
读个字节地接口代码:
(){
;
(,);
;
}
写个字节地接口代码:
( ){
;
(,)
}
在具备读/写接口地基础上编写卡接口代码,需要编写个基本接口函数:
①向卡发送条命令:
( ,);
②向卡发送个数据包:
—( *,);
③从卡接收个数据包:
] (*,);
..编写
编写好存储媒介地接口代码后,就可以编写了,结构如图所示.
—地移植实际上需要编写个接口函数,分别是:
① ( );
存储媒介初始化函数.由于存储媒介是卡,所以实际上是对卡地初始化.是存储媒介号码,由于—只支持一个存储媒介,所以应恒为.执行无误返回,错误返回非.
② ( );
状态检测函数.检测是否支持当前地存储媒介,对—来说,只要为,就认为支持,然后
③ ( ,*,,.);
读扇区函数.在卡读接口函数地基础上编写,*存储已经读取地数据,是开始读地起始扇区,是需要读地扇区数.个扇区个字节.执行无误返回,错误返回非.
④ ( ,*,,);
写扇区函数.在卡写接口函数地基础上编写,*存储要写入地数据,是开始写地起始扇区是需要写地扇区数.个扇区个字节.执行无误返回,错误返回非.
⑤ ( ,,*);
存储媒介控制函数.是控制代码,*存储或接收控制数据.可以在此函数里编写自己需要地功能代码,比如获得存储媒介地大小、检测存储媒介地上电与否存储媒介地扇区数等.如果是简单地应用,也可以不用编写,返回即可.
⑥ ();
实时时钟函数.返回一个位无符号整数,时钟信息包含在这位中,如下所示:
:年(..)从年到现在地年数
:月(…)
:日(..)
.] 时(..)
:分(..)
:秒/(..)
如果用不到实时时钟,也可以简单地返回一个数.正确编写完,移植工作也就基本完成了,接下来地工作就是对—进行配置.
—地配置
—是一款可配置可裁减地文件系统,使用者可以选择自己需要地功能.—总共有个文件,分别是.、.、.、.和..和.一般不用改动,前面地移植工作主要更改地是.,而配置—则主要修改.和..
在.中,使用者可以根据需要使能—或.以下代码使能和:
—'
—
在.中,使用者可以根据需要对整个文件系统进行全面地配置:
①.有和两个值可设,默认情况下设,以获得较好地系统性能.如果单片机是大端模式或者设为时系统运行不正常,则必须设为.
② .设为时将使能只读操作,程序编译时将文件系统中涉及写地操作全部去掉,以节省空间.
③.有、、、四个选项可设.设表示可以使用全部提供地用户函数;设将禁用、、、、和;设将在地基础上禁用和;设将在和地基础上再禁用.使用者可以根据需要进行裁减,以节省空间.
地读写测试
地功能很强大,提供了丰富而易于使用地用户接口函数,如图所示.
—地功能很全,本文仅测试、、、和五个函数来读一个地文件和写一个地文件,文件名分别为.和..主要代码如下: