新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于MCF51QE128的SD卡文件系统设计

基于MCF51QE128的SD卡文件系统设计

作者: 时间:2010-09-10 来源:网络 收藏

FATl6初始化子程序声明为byte Init_FAT(FArl6_t*FAT,byte*buffer),部分代码如下:

本文引用地址:https://www.eepw.com.cn/article/151574.htm

6j1.jpg

2.3 打开和创建文件
打开和创建文件采用一个函数来实现。首先根据读入的文件名查找根目录,若有匹配项则打开文件,否则创建一个新文件。流程如图6所示。

6i.jpg


打开和创建文件子程序声明为byte Open_File(FILE_t*FILE,FATl6_t*FAT,byte*buffer,byte*name)。部分代码如下:

6j1.jpg

在根目录中查找是否有文件项匹配,从根目录的第1个扇区开始读扇区。

6j1.jpg
根据文件起始簇号和根目录的记录项号,计算文件FAT表、根目录和数据区的相关信息。对于根目录和数据区的信息,已有文件和新文件的计算一致。如果是新文件,还需修改FAT表和根目录记录项。
2.4 多扇区数据读写
多扇区数据的读写是在打开文件的基础上,以扇区为单位读写文件,可连续读写多个扇区数据,同时写入文件的属性、日期和时间。写数据的流程如图7所示,读数据与之类似。多扇区数据的写子程序声明为byte Write_File(FILE_t*FILE,FATl6_t*FAT, byte attribute,word time,word date,dWOEd size_s,byte*buffer),根据写入扇区数size_s,设置文件的写入位置。首先将写入扇区数与文件剩余扇区数进行比较,若写入扇区数小于等于剩余扇区数,则新写入扇区数、簇数均为0,文件结束簇、写簇号不变,不需要修改FAT表,仅修改根目录中的文件长度。否则,需要计算新写入扇区数和簇数。若有增加簇,则需修改FAT表,包括FATl和FAT2、根目录的文件记,录项。最后,将数据写入文件数据区。

结语
本文基于Freescale公司MCF51QEl28微控制器,深入探讨了SD卡上FATl6文件系统的存储原则,给出了实现方案。软件算法上,对单扇区数据读写进行改进,实现了连续多个扇区数据的读写,大大提高了文件的读写效率,特别适用于数据量较大的视频、音频数据采集系统的文件存储。随着SD卡的快速流行,在此类存储设备中引入文件系统将得到更加广泛的应用。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 3 下一页

关键词: 嵌入式

评论


相关推荐

技术专区

关闭