1SD卡中FAT32文件格式快速入门(图文详细介绍)目录第一章硬盘结构与SD卡结构......................................................................................................21.1硬盘介绍............................................................................................................................21.1硬盘结构.....................................................................................................................21.2MBR分析...................................................................................................................21.2SD结构...............................................................................................................................41.3SD卡存储结构...................................................................................................................5第二章FAT32文件系统介绍.........................................................................................................62.1FAT文件系统简介.............................................................................................................62.2FAT32文件系统结构.........................................................................................................62.2.1保留区(深绿色区域).........................................................................................72.2.2文件分区FAT表(黄色区域)..........................................................................102.2.3数据区(灰色区域)...........................................................................................12附录.................................................................................................................................................16说明:MBRMBRMBRMBR:MasterBootRecord(主引导记录)DBRDBRDBRDBR:DOSBootRecord(引导扇区)FATFATFATFAT:FileAllocationTable(文件分配表)硬件:硬件:硬件:硬件:本文SD卡为Kingston4GB,FAT32格式,簇大小4KB,每扇区512字节。2第一章第一章第一章第一章硬盘结构与硬盘结构与硬盘结构与硬盘结构与SDSDSDSD卡结构卡结构卡结构卡结构1.1硬盘介绍1.1硬盘结构如果你熟悉硬盘结构跳过本节。下图是硬盘的结构,如果你只是为了学习SD卡FAT32文件系统的话,这里你只需要注意硬盘排序结构:主引导记录(MBR)—引导扇区—数据—引导扇区—数据。图11.2MBR分析MBR(MainBootRecord主引导记录区)放置在硬盘物理地址0的地方。总共512字节的主引导扇区中,MBR只占用了其中的446个字节,另外64个字节交给了DPT(DiskPartitionTable硬盘分区表),最后两个字节“55,AA”是分区的结束标志。DPT由4个分区表组成,每个16字节。下图中以以硬盘的MBR图,粉红色为硬盘分区表。3图2对于我们来说,更关注硬盘分区表表中红色区域:下图为硬盘分区表详细说明起始地址字节数描述0x1BE1可引导标志,0x00不可引导,0x80可引导0x1BF~0x1C13分区起始CHS地址(CHS=磁头、柱面、扇区),起始地址0x1C21分区类型0x1C3~0x1C53分区结束CHS地址0x1C60x1C60x1C60x1C64444从磁盘开始到该分区开始的偏移量(分区起始LBALBALBALBA地址Little-endianLittle-endianLittle-endianLittle-endian顺序)0x1CA0x1CA0x1CA0x1CA4444总扇区数(Little-endianLittle-endianLittle-endianLittle-endian顺序)4图31.2SD结构SD卡没有分区,默认就是一个分区。首先用WinHex文件打开SD所在的盘符,显示如下图:图41非分区空间非分区空间非分区空间非分区空间((((红线所示红线所示红线所示红线所示))))::::起始扇区0,我认为这个分区就是硬盘上的MBR所在区域,打开后如下图所示,也可以称为SD卡的MBR区域。5图5根据表1知道:红线区域(00002000)为下个分区的扇区地址,即第8192扇区,见图3分区1的起始扇区。蓝线区域(00760C00)为SD卡总的扇区个数,我们可以计算一下:0x760C00*512(每扇区字节)=3960995840(字节),与实际大小基本一样。2分区分区分区分区1111(蓝线所示(蓝线所示(蓝线所示(蓝线所示))))::::起始扇区8192.3剩余扇区剩余扇区剩余扇区剩余扇区::::才疏学浅,我不知道干嘛的,呵呵1.3SD卡存储结构由此可知SD卡文件系统并不是处在整个SD卡最开始的地方,它处在MBR所处的保留区之后,于是我们可以对使用FAT32文件系统的SD卡整体布局给出如下图示。6图6第二章第二章第二章第二章FAT32FAT32FAT32FAT32文件系统介绍文件系统介绍文件系统介绍文件系统介绍2.1FAT文件系统简介FAT(FileAllocationTable,文件分配表)文件系统是windows操作系统所使用的一种文件系统,它的发展过程经历了FAT12、FAT16、FAT32三个阶段。FAT文件系统用“簇”作为数据单元。一个“簇”由一组连续的扇区组成,簇所含的扇区数必须是2的整数次幂。簇的最大值为64个扇区,即32KB。所有簇从2开始进行编号,每个簇都有一个自己的地址编号。用户文件和目录都存储在簇中。本文每簇4KB大小。FAT文件系统的数据结构中有两个重要的结构:文件分配表和目录项:文件分配表:文件和文件夹内容储存在簇中,如果一个文件或文件夹需要多余一个簇的空间,则用FAT表来描述,如何找到另外的簇。FAT结构用于指出文件的下一个簇,同时也说明了簇的分配状态。FAT12、FAT16、FAT32这三种文件系统之间的主要区别在与FAT项的大小不同。目录项:FAT文件系统的每一个文件和文件夹都被分配到一个目录项,目录项中记录着文件名、大小、文件内容起始地址以及其他一些元数据。在FAT文件系统中,文件系统的数据记录在“引导扇区中(DBR)”中。引导扇区位于整个文件系统的0号扇区,是文件系统隐藏区域(也称为保留区)的一部分,我们称其为DBR(DOSBootRecorder——DOS引导记录)扇区,DBR中记录着文件系统的起始位置、大小、FAT表个数及大小等相关信息。在FAT文件系统中,同时使用“扇区地址”和“簇地址”两种地址管理方式。这是因为只有存储用户数据的数据区使用簇进行管理(FAT12和FAT16的根目录除外),所有簇都位于数据区。其他文件系统管理数据区域是不以簇进行管理的,这部分区域使用扇区地址进行管理。文件系统的起始扇区为0号扇区。2.2FAT32文件系统结构FAT文件系统整体分布如上图存储器文件结构图所示,有:7【1深绿色】保留区含有一个重要的数据结构——系统引导扇区(DBR)。FAT12、FAT16的保留区通常只有一个扇区,而FAT32的保留扇区要多一些,除0号扇区外,还有其他一些扇区,其中包括了DBR的备份扇区。【2黄色】FAT区由来年各个大小相等的FAT表组成——FAT1、FAT2,FAT2紧跟在FAT1之后。【3灰色】FAT12、FAT16的根目录虽然也属于数据区,但是他们并不由簇进行管理。也就是说FAT12、FAT16的根目录是没有簇号的,他们的2号簇从根目录之后开始。而FAT3FAT3FAT3FAT32222的根目录通常位于2222号簇。2.2.1保留区(深绿色区域)FAT32文件系统的开始部分有一个由若干个扇区组成的保留区,保留区的大小会记录在DBR扇区中,比较常见的为32、34或38个扇区。如上图:由DBR中)0x0e和0x0f两个地址的数值决定,记得是小端模式,即N的值。2.2.1.1引导扇区(DBR)【大小】:512字节;对读写FAT文件系统来说常用的就图中红色划线部分,48个字节。其他的均为一些标注信息。想了解具体的定义请看附录表。图78【1】0x00~0x02:3字节,跳转指令。【2】0x03~0x0A:8字节,文件系统标志和版本号,这里为MSDOC5.0。【3】0x0B~0x0C:2字节,每扇区字节数,512(0X0200)。【4】0x0D~0x0D:1字节,每簇扇区数,8(0x08)。【5】0x0E~0x0F:2字节,保留扇区数,38(0x0026),符合FAT1起始地址为38扇区。【6】0x10~0x10:1字节,FAT表个数,2。【7】0x11~0x12:2字节,FAT32必须等于0,FAT12/FAT16为根目录中目录的个数;【8】0x13~0x14:2字节,FAT32必须等于0,FAT12/FAT16为扇区总数。【9】0x15~0x15:1字节,哪种存储介质,0xF8标准值,可移动存储介质,常用的0xF0。【10】0x16~0x17:2字节,FAT32必须为0,FAT12/FAT16为一个FAT表所占的扇区数。【11】0x18~0x19:2字节,每磁道扇区数,只对于有“特殊形状”(由磁头和柱面每分割为若干磁道)的存储介质有效,63(0x003F)。【12】0x1A~0x1B:2字节,磁头数,只对特殊的介质才有效,255(0x00FF)。【13】0x1C~0x1F:4字节,EBR分区之前所隐藏的扇区数,8192(0x00002000),与MBR中地址0x1C6开始的4个字节数值相等。【14】0x20~0x23:4字节,文件系统总扇区数,7736320(0x00760C00),7736320*512=3960995840≈3.67GB。【15】0x24~0x27:4字节,每个FAT表占用扇区数,7541(0x00001D75)。【16】0x28~0x29:2字节,标记,此域FAT32特有。【17】0x2A~0x2B:2字节,FAT3