版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、FAT16/32 文件系统1.总则该文件系统是由本人个人开发的,全部代码在 VC 下编写,测试。VC 下测试基于虚拟磁盘驱动(在 Flash_management.c)实现对磁盘的读写。实现的文件系统兼容 FAT16/FAT32 文件系统格式,兼容长文件名,兼容 GB2312/UNICODE 汉字编码,并且实现了对子目录的支持,实现了文件的,写入,创建,删除等文件系统的常用功能。另个,代码都使用C 编写,可以移植到单片机上运行。2.版本说明以下是文件系统的各个版本,供客户以实际需要进行选择合适的版本:免费版本只支持一个盘和 FAT16英文版本 1只支持一个盘,和 FAT16/FAT32(报价:
2、RMB800)英文版本 2-支持多个盘,和 FAT16/FAT32(报价:RMB1000)中文版本 1支持多个盘,和 FAT16/FAT32,兼容 GB2312/UNICODE 汉字编码(报价:1200)3.文件系统字符串规则1)盘符规则盘符规则,盘符a)名从 C 开始到 Z 结束2)文件名规则(长文件名不超过 255 字节)文件名是由文件名和扩展名组成, 1)短文件名不超过8 个字节,长文件名不超过 255 字节 2)扩展名一般为 3 个字节文件名为英文字母、数字和下划线的组合文件名首字符不能为数字文件名字符不区分大小写a)b)c)d)4.文件系统的功能列举1)该文件系统实现了兼容 FAT1
3、6/FAT32,兼容长文件名,兼容 GB2312/UNICODE 汉字编码,并且实现了对子目录的支持,实现了文件的件系统的常用功能。,写入,创建,删除等文2)代码都使用 C 编写,可以移植到单片机上运行。在单片机上运行程序员需要把虚拟磁盘驱动替换为SD 卡或磁盘驱动。实现了文件读写的缓冲内存:文件缓冲内存越大,读写文件越快,其大小可以编译3)宏 EnableFiuf,TotalFiUFsQTYeachFCB,FiUFSize 来设置(fat_cfg.h)。5.程序源文件说明1)2)3)4)5)6)fat.c文件系统的源代码fat.h文件系统API 函数的 declare 文件 Fat_cfg.
4、h文件系统配置文件 Types.h文件系统的数据类型替换定义 Flash_management.c虚拟磁盘的驱动Time.cRTC 时钟驱动,提供文件的,创建,修改时间6.文件系统的数据结构(参考,实际的情况可参考文件系统配置文件 fat_cfg.h)1)分区数据结构支持 FAT16/FAT32 struct partition_BPBchar partition_id; /从 C 开始到 Z 结束char system_id; /分区类型 0C-FAT32,06-FAT16 ect. long relative_sector; /分区起始扇区号long total_sector;/分区总扇区
5、数bytes_per_sector;/每扇区字节数 char sector_per_cluster; /每簇扇区数sector;/保留扇区数 char numbers_of_FAT;/FAT 副本数boot_entries;/根目录项数,供 FAT12/16 使用small_sector; /小扇区簇char media_descriptor; /描述符sectors_per_FAT; /每 FAT 扇区数,供 FAT12/16 使用sectors_per_track; /每道扇区数 number_of_head; /磁头数long hidden_sectors; /隐藏扇区数long lar
6、ge_sector;/总扇区数,包含 FAT32 总扇区数long sector_per_FAT32;/每 FAT 扇区数,供 FAT32 使用extended flag;/ 扩展标志,供 FAT32 使用file_system_ver; /文件系统版本long root_cluster_number;/根目录簇号file_system_information_sectornumber; /文件系统信息扇区号 copy_of_boot_sector;/备份引导扇区char;12;/保留,供 FAT32 使用2)文件数据结构支持 FAT16/FAT32 struct file_char file
7、name256;/支持长文件名char file_extention3; /文件扩展名 char file_attribute;/属性char;char create_time_10ms;/创建时间的 10 毫秒位file_created_time;/文件创建时间 file_created_date;/文件创建日期last_acs_date;/文件最后日期_cluster_number_high2bytes; /文件首簇号高 16 位 recent_modified_time;/文件最近修改时间 recent_modified_data;/文件最近修改日期_cluster_number_low
8、2bytes; /文件首簇号低 16 位long file_length;/文件长度 Core 数据结构struct core_current_folder256;/存放当前目录3)char file_openned_flag;/标记 struct file_已打开7.文件 API 函数1)自动格式化 FAT16 函数 FAT16_filesystem_autoformat()该函数在 U 盘启动时运行,它首先会 Flash 0 扇区的 MBR,判断 MBR 有效标记 0 x55aa,如果 MBR有效标记不是 0 x55aa,该函数将把Flash 自动格式化成FAT16 文件系统;起用自动格式
9、化处理,Flash 上原有的数据将被迫丢失,因此从安全的角度考虑,建议慎用本函数。2)FAT 文件系统初始化函数 char FAT_filesystem_initialiation()该函数是在 U 盘启动时调用,它将 Flash 中默认的第一个分区的信息读入 struct partition_BPB 中,和初始化 struct CORE。3)文件建立函数 u8 create_file(u8 * filename)该函数用于在文件系统中建立一个文件,文件名及其路径通过形参char *filename 来指定;4)目录建立函数 u8 create_floder(u8 * foldername)该
10、函数用于在文件系统建立一个目录,目录名通过形参 char *foldername 来指定;5)文件重命名函数 u8 rename_file(u8 * oldfilename,u8 * newfilename)该函数用于对文件系统中的一个文件重命名,原文件名由参数u8 * oldfilename 来指定,新文件名由参数 u8 * newfilename 来指定;6)文件打开函数 u8 open_file(u8 * filename)该函数用于在文件系统中的打开一个文件,文件名通过参数 u8 * filename 来指定,如果打开文件成功,返回值为当前文件操作句柄 FCBsn(FCB sequen
11、tial number),或 0 xff文件打开错误,在错误打开的情况下,建议先使用 close_file 关闭一个打开的文件后再打开文件。7)文件关闭函数 u8 close_file(u8 FCBsn)该函数调用关闭一个已打开的文件,并释放当前文件占用的文件操作句柄,文件操作句柄由 FCBsn 指定。8)当前目录改变函数 u8 cd_folder(u8 * foldername,u8 mode)该函数用于改变文件系统的当前目录,改变至目录由参数 u8 * foldername 来指定。函数有两种的操作模式分别为:1)参数 mode= 0:为进入目录;2)参考 mode=1 为返回上层目录。9
12、)文件读写位置设定函数 u8 f_seek(u8 FCBsn, s32 offset, u8 origin)该函数用于文件读写当前位置的设定;FCBsn 是已打开文件的文件柄;offset-相对 origin 位置偏移量;origin 指定位置移动的参考,其起始参考位置共有三个: SEEK_SET(0)文件的开始位置 SEEK_CUR(1) 文件的当前位置 SEEK_END(2) 文件的结束位置。10)文件读函数 u16 read_file(u8 FCBsn,8* buffer, u16 length)该函数完成已打开文件的数据存放在缓冲区 buffer 中,而的当前位置指定的长度数据,数据的
13、长度是由参数 u16 length 来指定,缓冲区的首地址由参数 u8 * buffer 来指定,该函数返回为成功的字节数;11)文件写函数 u16 write_file(u8 FCBsn,u8* buffer, u16 length)- 该函数实现将缓冲区 buffer 中指定长度的数据写入一个已打开文件的当前位置,写数据长度由参数 u16 length 指定,缓冲区首地址由参数char* buffer 指定,该函数的返回值为成功写入的字节数;12)遍历目录函数 u8 folder_enumeration(u8 *return_string,u8 mode,u8 *ATTR)该函数用于遍历当
14、前目录下所有的文件项和目录项,调用一次将返回一个文件项或目录项,同时定义有二种遍历模式,mode(0)-调用后将复位到目录的第一个文件项或目录项重新开始,mode(1)-继续上一遍历后的目录项,遍历模式由参数 char mode传递, 遍历返回的文件项或目录名于缓冲区中,其首地址由参数 u8*return_string 指定,返回文件目录项的类型由 u8 *ATTR 传递,其值为返回文件或目录 directory entry 的attribute 字段;13)遍历DISK 函数u8 disk_enumeration(u8 disk_,u8 *return_string,u8 mode,u8*
15、ATTR)该函数可以用于遍历指定DISK 下所有的文件与目录,一次调用返回一个文件项或目录项,同时定义有二种遍历模式,mode(0)-调用后将复位到目录的第一个文件项或目录项重新开始,mode(1)-继续上一遍历后的目录项,被枚举磁盘 ID(ID 编号由 0 开始,到um_Disks 1)由参数 u8 disk_来指定,遍历模式由参数 charmode 来指定,遍历返回的文件项或目录名于缓冲区中,其首地址由参数 u8*return_string 指定,返回文件目录项的类型由 u8 *ATTR 传递,其值为返回文件或目录 directory entry 的attribute 字段;14)文件删除
16、函数- u8 delete_file(u8 *filename)该函数用于删除文件系统中的一个文件,删除文件名通过参数 char *filename 指定。15)目录删除函数- u8 delete_folder(u8 * foldername)该函数用于删除文件系统中的一个目录,删除目录名通过参数u8 *foldername 指定,被删除目录必须是空目录;16)文件查找函数u8 find_file(u8 * filename,u8 mode, u8* folder_name )文件查找函数支持 2 种模式:1)mode = 0:当前目录下查找;2)mode=1:在整个磁盘中查找;查找文件名通过
17、参数char * filename 来指定,查找模式通过参数 u8 mode 来指定,查找成功后文件加上其所在的目录的完整路径名字符串通过参数 folder_name返回。17)查 询 分 区 容 量 和 剩 余 容量 函数 u8 volume_inquiry(u8partition_id,u32*volume_capacity, u32 *volume_free_space);该函数用于查询指定分区的分区容量与剩余空间,分区号通过参数u8 partition_id 来指定,查询的结果分区容量将存入在参数 u32 *volume_capacity 中, 查询的结果剩余容量将存入在参数 u32*
18、volume_free_space 中1.例程1) 使用 volume_inquiry(),查看分区容量和分区剩余容量 volume_inquiry(c,&cc,&bb);prf(Volume C Capacity: %ldn,cc);prf(Volume C FreeSpace: %ldn,bb);2) 在当前目录C:之下建立一个目录:CREATE_FOLDER_TESTcreate_floder(CREATE_FOLDER_TEST);3) 在目录 CREATE_FOLDER_TEST 之下建立一个文件:created_file.txtcreate_file(C:CREATE_FOLDER
19、_TESTcreated_file.txt);4) 进入目录 d:CREATE_FOLDER_TEST,并遍历目录 d:CREATE_FOLDER_TEST 的所有文件cd_folder(d:CREATE_FOLDER_TEST,0); mode = 0;while(folder_enumeration(buf,mode,&ATTR) = SUCC)prf(nreaded entry=%s Attr = %x,buf,ATTR); mode = 1;5) 返回根目录,并遍历根目录下的所有文件cd_folder( ,1);mode = 0;while(folder_enumeration(buf,mode,&ATTR) = SUCC)prf(nreaded entry=%s Attr = %x,buf,ATTR); mode = 1;6) /* DISK0拷贝至DISK1 */mode = 0;/设置 disk_enumeration 列举mode(0)-复位至第一个文件项或目录项开始枚举while(disk_enumeration(0,buf,mode,&ATTR) = SUCC)/枚举
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 九年级化学上册 第五单元 定量研究化学反应 第一节 化学反应中的质量守恒教案 (新版)鲁教版
- 2024秋三年级英语上册 Unit 2 Colours课时6 Satrt to read-Story time教案 人教PEP
- 2024年城市配送员劳动合同范本
- 2024年厨房用品采购与承包合同
- 2024医院医疗器械维修保养合同
- 2024云计算中心运营维护合同
- 2024城市供水供电供气长期服务合同
- 2024全新股权投资及回购合同
- 2024年二手车买卖合同的车辆状况与过户
- 2024年可再生能源电力工程安装合同
- 银行提前还贷授权委托书
- 2024年江苏江南水务股份限公司公开招聘工作人员10人(高频重点提升专题训练)共500题附带答案详解
- 人教版数学小升初衔接练习+解析(统计与概率)
- 劳动项目五《晾衣服》教案
- 知道智慧网课《科技伦理》章节测试答案
- 9-XX人民医院样本外送检测管理制度(试行)
- 山东省名校考试联盟2023-2024学年高一化学上学期11月期中试题
- DZ∕T 0354-2020 局部生态地球化学评价规范(正式版)
- 2024委托运营协议
- 嗜酸性粒细胞增高在健康人群和患病人群中发生率的研究进展
- T-CPMA 034-2023 医务人员医院感染预防与控制
评论
0/150
提交评论