找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3148|回复: 0
收起左侧

FAT文件系统解析

[复制链接]
ID:72519 发表于 2015-1-23 03:54 | 显示全部楼层 |阅读模式
启动扇区:
1 offset 00: EB 58 90  JMP指令,字节数 3。灰线。
2 offset 03: 4D  53  44  $2  53  35  2E  30   MSDOS5.0 厂商版本号。 字节数 8  灰色方框。
以下部分是BIOS block.
3 offset 0B: 00  02 每扇区字节数:512  字节数 2.  红色线。
4 offset 0D: 08  每族占用的扇区数8个。字节数 1.  绿色方框。
5offset 0E: 26 00 保留扇区中的保留扇区数 38个。字节数 2. 蓝色线。则FAT1的开始地址:38*512=19456=$200.
6 offset 10: FAT表的个数。一般都为2 一个作备份用。字节数1. 红色方框线。
7 offset 11-20 为一些我们不需要操作的信息。所以没有写出来。



以下是FAT32   参数块。
8 offset 24  E5 0E  FAT表占用的扇区数:3813个。 FAT表占用的字节数就是 3813*512=1952256byte=1DCA00。一共两个FAT共占用 1952256*2=3904512个。



根据启动区、FAT1FAT2、根目录、数据区的次序,可以依次计算出它们的首地址:
启动区:00
FAT1:   38*512=19456=$200.
FAT2:   19456+3813(FAT 表占用的扇区数)*512=1971712=1E1600
根目录区: 1971712+ 3813(FAT 表占用的扇区数)*512=3923968=3BE000.
数据区:


下面分析根目录区:
$2$2$2$2$2$2$2  


这里使用的是FAT32短文件目录项,每32个字节表示一个文件(文件夹也是),32个字节的表示定义分别如下
10ffset: 00,红色部分 表示卷标即SD卡名称,是你在格式化时取的一个名子。8个字节。
2offset: 20 字节数:8个。 表示文件名称。全部是以大写方式表示。文件名:csh302ab.
3offset:28  字节数:3个。 文件扩展名。 ASSII码表示。
4offset 2B  字节数:1个。 文件属性。绿色框。
5offset $2  reserved.
6offset 2D,2E,$2 文件建立时间。访问日期。




7offset 34,35, $2,3B 该文件的开始簇号 高位字节,低位字节。00 00 00 03,根据这个就可以找到文件下一个簇号在FAT1中的位置了。$200+3*4=$2$2.下一个簇开始地址。
8、黑色线。文件长度。$2=148316字节。因为文件是按照整簇来存放的,不够一个簇的大小,也要给一个簇的空间。
下面分析文件的存放空间:
BOSI 参数块中可以知道其每簇占用8个扇区。每个扇区512字节,那么一个簇的空间是8*512=4096个字节,文件长度为148316个字节,则占用了148316 / 4096=36.2=37个簇。




上面已经从根目录区得到文件第一个开始簇为03 则开始簇开始地址为:3BE000(根目录区首地址)+03-02*8*512=3BF000.文件存放位置的起始地址:
则文件存放第一个簇开始地址为:3BF000.
文件存放第二个簇开始地址为:3BE000+(4-2) *4096=$20000.
文件存放第三个簇开始地址为:3BE000+(5-2) *4096=$21000.
  .
.
文件存放第37个簇开始地址为:3BE000+(39-2) *4096=3E3000.  内容为0x$2 FF FF FF,文件放置结束,没有了。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表