前言:
SD卡 3.0 标准推出后,SD卡往高容量发展,这个时候 FAT,FAT32 已经不符合SDHD的需求了,
这时引进了新的文件系统 ---> exFAT。
如果哪里有翻译不正确的地方,希望大家指出来,谢谢!
原版内容在这里:
http://www.ntfs.com/exfat-overview.htm
一、exFAT 和 FAT32 比较
支持 Fat32 exFat
============================================
磁盘最大卷 8TB * 128PB
最大文件大小 4GB 16EB
最大簇大小 32KB 32M
最大簇数 2^28 2^32
最大文件名长度 255 255
时间日期分辨率 2S 10ms
MBR分区类型定义 0x0B,0x0C 0x07
注释:
* windows 无法格式化大于等于32G的Fat32的卷,虽然第三方可以可以格式化最大容支持到 16TB,以64KB每簇大小。
微软补丁 KB 设置每簇大小不超过 32kB,某些第三方格式化簇可以支持 64KB
参考:
KB FAT32 文件系统的限制:
http://support.microsoft.com/kb/
二、卷结构分析
offset,sectors size, sectors block 注释
===================================================
主引导区域
------------------------------------------------------------------------------------------------------
0 1 引导扇区
1 8 扩展引导扇区
9 1 OEM 信息记录
10 1 保留
11 1 引导校验扇区
------------------------------------------------------------------------------------------------------
主引导记录备份区域
------------------------------------------------------------------------------------------------------
12 1 引导扇区
13 8 扩展引导扇区
9 1 OEM 信息记录
10 1 保留
11 1 引导校验扇区
------------------------------------------------------------------------------------------------------
FAT 记录区域
------------------------------------------------------------------------------------------------------
24 fatoffset - 24 FAT队列 引导扇区记录了 fatoffset
fatoffset fatLength First Fat 引导扇区记录了 fatoffset fatLength
FatOffset +
FatLength FatLength Second FAT For TexFAT only
------------------------------------------------------------------------------------------------------
数据记录区域
------------------------------------------------------------------------------------------------------
offset,sectors : FatOffset + FatLength * NumberOfFats
Size, sectors : ClusterHeapOffset – (FatOffset + FatLength * NumberOfFats)
Block : Cluster Heap Alignment
offset,sectors : ClusterHeapOffset
Size, sectors : ClusterCount * 2^SectorsPerClusterShift
Block : Cluster Heap
offset,sectors : ClusterHeapOffset + ClusterCount * 2^SectorsPerClusterShift
Size, sectors : VolumeLength – (ClusterHeapOffset + ClusterCount * 2^SectorsPerClusterShift)
Block : Excess Space
2.1.1 引导扇区:
偏移量 大小 目标 注释
============================================================
0 3 Boot 跳转指令 0xEB7690
3 8 文件系统名称 “EXFAT”
11 53 必须为 0
64 8 分区偏移位置 单位扇区,假如0则忽略
72 8 卷长度 exFAT卷大小,单位扇区
80 4 FAT Offset 单位扇区
84 4 Fat Length 单位扇区
May exceed the required space in order to align the second FAT
88 4 ClusterHeapOffset 单位扇区
92 4 ClusterCount 最大簇为 2^32-11
96 4 RootDirectoryCluster
100 4 卷序号
104 2 文件系统版本 高位主版本号,低位次版本号,如 01.00
106 2 卷标志
bit0 size 1 0 第一FAT 1 第二FAT
bit1 size 1 0 空 1 有内容
bit2 size 1 0 不支持或被记录坏簇 1 某些读写操作失败
bit3 size 1 清空为零
bit4 size12 保留
108 1 BytesPerSectorShift 最小 9 (512字节每扇区)
最大 12 (4096字节每扇区)
109 1 SectorsPerCluster Shift 最小 0 (每簇一扇区)
最大 25- SectorsPerCluster Shift
110 1 NumberOfFats TexFAT 为 2
111 1 DriveSelect 0x80
112 1 PercentInUse 0..100, 0xFF- PercentInUse 代表不可用
113 7 保留
120 390 引导代码
510 2 引导标记 0xAA55
512 2^BytesPerSectorShift - 512 扩展空间
2.1.2 扩展引导扇区
偏移量 大小 目标 注释
================================================================
0 2^BytesPerSectorShift - 4 扩展引导代码
2^BytesPerSectorShift - 4 4 扩展引导标记 0xAA
2.1.3 OEM 信息记录
偏移量 大小 目标 注释
================================================================
0 16 参数类型 OEM_FLASH_PARAMETER_GUID
空代表不使用
16 32 参数值 OEM 定义
具体结构如下:
[cpp] view plain copy

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/52432.html