新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于单片机的SD卡FAT文件系统读写设计

基于单片机的SD卡FAT文件系统读写设计

作者: 时间:2011-11-18 来源:网络 收藏

e.jpg

3.6 应用层函数接口
向应用层设计了如下几个初级程序接口:Get Filelnfo(UINT8*F Info,FileInfo*TempFilelnfo)(获取文件信息),OutPut _RootFileinfo(void)(输出根目录文件信息),DirOr(UINT8 FileAttrib)(判断目录),Get Next Cluster(UINTl6 TempCluster)(获取下一文件簇信息),OutPutFileCluster(UINTl6 TempStart Cluster)(输出文件簇地址),OutPutFile(UINTl6 Temp StartCluster)(输出文件内容),ShowClusterContent(UINTl6 TempCluster)(输出簇内容)。通过这些初级程序接口实现了OpenDir(UINTl6 TempStartCluster)(目录打开),FileDelete(文件删除),FileDataRead(文件数据读取),FileCreate(UINTl6 TempStartCluster,UINT32TempFileLength)(文件创建)等功能。
3.6.1 目录读取及文件信息获取
的具体文件和目录项都是通过读取ROOT目录来进行查找的,所以FAT的文件排布是以树形的结构排布。对于FAT来说,目录项与文件项在同一目录中是同样占32个字节的属性项。研究中使用了1个数据结构Filelnfo来存储文件信息,并通过if(Temp_F_Info[0x0b]0x l0)来分辨文件与目录。
中,文件是以簇的形式保存在中的,簇的排布是不连续的,1个文件如果大于1个簇的话,则要通过FAT表来查找该文件所有簇所在的位置,从而找到整个文件。目录一般只占有1个簇的大小,在FAT表中等同于小于1个簇的小文件,值显示为FF。
目录是以文件的形式存储在父目录中的,目录中的文件信息记录了该文件的起始簇以及文件的大小,知道了文件的起始簇,通过FAT表中的信息可以很方便地找到文件的下一个簇的位置,并由文件的大小判断出文件的结束位置。

3.6.2 文件的读写
在FAT文件系统中,读取文件只需要知道该文件的起始簇以及大小便可以很方便地得到整个文件的信息。读取步骤是:获取根目录信息,通过根目录信息找到下一层目录所在簇位置,通过下一层目录信息递归找到文件所在目录,读取文件信息属性,得到文件的起始簇位置和文件大小,通过FAT表递归查找到文件的全部簇地址,最终以FF结尾;根据文件大小判断文件的结束位置,最后输出整个文件。
文件的创建和写入则是通过FAT表查找未被使用的空簇(值为00),写满1簇之后再查找下一未被使用的空簇,并同时更新FAT1表和FAT2表。然后在文件所被创建的目录信息中添加文件信息,最终实现文件的创建。
3.6.3 文件的删除
在FAT文件系统中,对文件的删除不需要把整个文件信息全部清除,只需要清除FAT表中的文件簇信息以及目录中的文件信息,避免了对的频繁读写,同时也节省了时间。

结语
本设计将的存储方式应用到单片机系统中,简化了复杂的文件数据的存储设计,减小了系统的尺寸,提高了系统的可靠性,使得单片机对文件的读出和存取简单易行。对FAT裁减实现了嵌入式文件系统,提高了系统的存储能力,同时也增强了单片机与PC级之间的通信能力,简化了繁琐的调试。采用Freescale 16位单片机MC9S12XSl28MAA的串行外设接口SPI对SD卡进行访问,加快了整个系统的设计进度。实践证明,该设计读写SD卡文件信息的速度以及稳定性满足调试要求。该设计只需对底层驱动进行简单修改就可直接应用于MMC卡、 SD卡等其他存储介质上。

51单片机相关文章:51单片机教程


单片机相关文章:单片机教程


单片机相关文章:单片机视频教程


单片机相关文章:单片机工作原理


晶振相关文章:晶振原理
锁相环相关文章:锁相环原理

上一页 1 2 3 4 下一页

评论


相关推荐

技术专区

关闭