FAT

来源:互联网 发布:淘宝怎么查看买家信用 编辑:程序博客网 时间:2024/05/16 15:11

FAT背景

1.FAT表(File Allocation Table),文件分配表,是Microsoft在FAT文件系统中用于磁盘数据/文件索引和定位引进的一种链式结构。把磁盘比作一本书,FAT表可以认为相当于书中的目录,而文件就是各个章节的内容。但FAT表示方法却与目录有很大不同,在FAT文件系统中,文件的存储依照FAT表指定的簇链式数据结构来进行,同时,FAT文件系统将组织数据时使用的目录也抽象成文件,以简化对数据的管理。2.FATFS16使用了16位的空间来表示每个扇区(sector)配置文件的情形,故称之为FAT16。(FAT12、FAT32依此类推)。簇(Cluster),就是磁盘的配置单位,就像图书馆内一格一格的书架一样,每个要存到磁盘的文件就必须配置足够数量的簇,才能存放到磁盘中。簇是由扇区组成,每个簇都是扇区的整数倍。3.文件占用磁盘空间时,基本单位不是字节而是簇。簇的大小与磁盘的规格有关,一般情况下,软盘每簇是1个扇区,硬盘每簇的扇区数与硬盘的总容量大小有关,可能是4、8、16、32、64......FAT文件系统下,每一个磁盘被分成固定大小的簇,每个簇至少512字节,其大小可成倍增长,最大32K。FAT16系统中,每个簇都是由唯一的索引号--单个16位二进制数来标识,因为16位二进制最大为65536,所以FAT分区所拥有的簇数量不可能超过65536个,簇的数量和大小的限制,就是FAT16分区不能超过2GB的原因(寻址字节也会限制分区大小,如当FAT32使用2个字节寻址限定其分区不超过4GB)。4.FAT中的入口连接着一个文件的各个簇,文件的目录入口包含其第一个簇的索引号,而该簇在FAT中的入口又包含下一个簇的索引号,依此类推。一个文件的最后一簇对应的FAT入口则包含一个特殊的文件终止符,未使用的簇和损坏的簇也会用特殊代码标识。5.FAT12、FAT16、FAT32区分办法:簇数量。FAT12一定小于4096,FAT16一定小于65536,FAT32一定大于65536。

FatFs库函数:

f_mount:开辟一个工作区,这个函数是必须的,应该放在程序的最前面。example:    int main(void)    {        FATFS *hat;//申明一个文件系统hat        hat = malloc(sizeof(FATFS));//为系统"hat"分配一个FATFS应有的内存空间        f_mount(hat,"",0);//为系统"hat"开辟一块工作区        f_open(...//打开文件等等操作        ...        free(hat);//释放系统“hat”的内存空间    }return:http://elm-chan.org/fsw/ff/doc/rc.html#ok