5.分区分析
继续回顾我们一开始的这张布局图
5.1 保留分区分析
保留分区为第一个分区,其中引导扇区位于保留分区的第一个扇区。
根据 4.3 章节计算结果可知,保留分区起始地址为 0x00,大小 0xc00
保留分区数据如下,保留分区内最重要的内容即为引导扇区,除引导扇区外,其他剩余空间全部保留,采用0x00覆盖。关于引导扇区已在 4.2 章节详细分析,此处不再做介绍。
5.2 fat区分析
根据 4.3 章节描述,fat区的起始地址为 ==0xc00==,大小为 ==0x3b400==,此外存在两个fat区,fat1和fat2,起始地址分别为:==0xc00==、==0x1e600==,对应地址数据如下:
fat1 数据:
fat2 数据如下:
==由于此处采用fat16格式,所以每个fat条目占据两个字节!==
根据上述数据进行分析:
确认 fat2 为 fat1 的备份;
存在5个fat条目其中 fat[0] 和 fat[1] 为保留条目,fat[0] 的内容与 bpb_media 媒体类型字段一致,fat[1] 用来记录错误历史记录 (详见 4.5 章节描述)
==根据4.5章节描述,fat2对应数据区的第一个簇==,又fat[2]、fat[3]、fat[4] 数据均为 0xff,表明存在三个文件,且每个文件的大小小于等于一个簇的空间;且分别存放在数据区第1到第3个簇上!
此处可能大家会由疑问,刚刚格式化的sd卡为什么会存在文件内,其实这个是系统文件,格式化后自带的,默认是隐藏的,只有使用winhex才能看到,也就是对应的system volume information文件夹。
5.3 根目录区分析
注意,根目录区只有 fat12 / fat16 系统上存在,在fat32系统上不存在此区域。
根目录区用来记录根目录下的文件内容,根据 4.3 章节计算可知,根目录区起始地址为:==0x3c000==,大小为==0x4000==,数据内容如下:
以下是对数据字段进行分析后的内容,如下图所示:
格式化之后,默认会生成一个system volume infomation的系统文件夹,同时此文件夹是根目录下唯一的一个文件,因此在根目录的数据如上图所示。
此文件夹为目录属性,是隐藏的系统目录
长文件名为system volume information,短文件名为system~1
==此目录指向存放的数据在2号簇(对应数据区第一个簇),文件大小字段,由于此文件为目录属性,此字段无意义,因此强制为0==
至此,根目录区分析完了,同时根目录区的 system volume information文件指向数据区第一个簇(2号簇),接下来我们便进入数据区进行分析。
5.4 数据区分析
根据 4.3 章节计算可知,数据区起始地址为:0x40000,大小为242176 * 512 = 0x764 0000,数据内容如下:
对应数据字段分析如下:
system volume information 目录下存在两个文件,分别是indexervolumeguid 和 wpsettings.dat。根据上述分析可知:
indexervolumeguid文件的数据存放在 fat[3],3号簇上,即数据区的第3个簇(数据区的第1个簇为2号簇);
wpsettings.dat 文件的数据存放在 fat[4],4号簇上,即数据区的第2个簇(数据区的第1个簇为2号簇);
首先,我们跳转到4号簇上查看indexervolumeguid的数据,对应地址计算方式为:
firstsectorofcluster = datastartsector + (n - 2) bpb_secperclus = 512 + (4 - 2) 4
= 520;
对应地址为: firstsectorofcluster bpb_bytspersec = 520 512 = 0x0004 1000
接着跳转到3号簇上查看wpsettings.dat的数据,对应地址计算方式为:
firstsectorofcluster = datastartsector + (n - 2) bpb_secperclus = 512 + (3 - 2) 4
= 516;
对应地址为: firstsectorofcluster bpb_bytspersec = 520 512 = 0x0004 0800
5.5 新增文件测试
在根目录下新增 test 目录,使用winhex更新磁盘数据,观察各数据区变化
保留区无变化
fat区变化如下:
根目录区变化如下:
6.总结
以上便是关于fat文件系统的全部分析了,通过上述分析,外加新增文件辅助理解,对于文件在fat文件系统下如何管理、存储,相信已经有了非常深入的了解。
fat文件系统分为四个区:
保留区最重要的是里面包含引导扇区,引导扇区内存放着bios参数信息,通过此参数可以知道fat文件系统的flash布局,以及flash大小,fat块大小、簇大小等关键信息;
fat区,记录了文件所占用簇的情况,以及对于文件大小大于一个簇的文件,在fat区内形成簇链,记录文件由哪几个簇组成
根目录区,只有fat12/16系统所有,记录了根目录下的文件/目录条目信息
数据区,记录数据分为两个部分,第一部分为目录信息,除根目录外,每个文件夹需要占据一个及以上的簇描述对应目录下的文件情况;第二部分为具体文件数据。两部分数据通过短文件名sfn字段进行关联!
Pickering Electronics公司将在慕尼黑华南电子展上展出 微型高压单列直插舌簧继电器
英特尔下一世代3D XPoint研发阵地转移至墨西哥
安森美开发下一代GaN-on-Si功率器件
小米正式进军迷你快充市场
嵌入式和单片机的区别是什么?两者有什么联系
FATFS文件系统详解(下)
浅谈板对板连接器的工作原理、功能及参数选择
骨传导耳机好用吗,骨传导耳机有什么优点
科技如何让我们的老年生活更美好?
基于物联网的道路照明系统设计
安防市场百家争鸣,唯有科技创新是王道
爱特梅尔推独一识别码的序列EEPROM产品
什么是公共分布式账本它可以做些什么
CMOS图像传感器正在变革 德淮半导体的CMOS实力怎样
机械设备电气控制电路故障分析以及排除方法
华为P11什么时候上市?华为P11最新消息:华为P11曝光不断,华为P10无奈跌至新低价!你是继续等新还是买旧?
IDC:2018年商用电脑医疗卫生市场年出货量达到 220万台 同比增长1.9%
工业路由器IR2730赋能智慧城市助力智慧路灯数据采集管理
典型振动量检测系统设计
百度AI芯片昆仑完成研发,将用于三星芯片的生产