FAT16文件系统:SD卡数据读取步骤解析

4星 · 超过85%的资源 需积分: 20 7 下载量 114 浏览量 更新于2024-09-22 收藏 84KB DOC 举报
"本文主要介绍了SD卡中FAT16文件系统的数据读取流程,包括如何定位分区开始扇区、扇区大小、簇大小、FAT表位置以及根目录的位置,进而阐述了读取根目录下所有文件的过程。" 在FAT16文件系统中,SD卡的数据读取流程是一个关键的环节,它涉及到对磁盘分区信息的理解和操作。首先,我们需要找到分区的起始扇区。在这个例子中,通过读取MBR(主引导记录)的DPT(分区表)部分,我们可以发现分区开始扇区的偏移地址是65H(101 decimal)。这个信息通常位于MBR的特定位置,如0000001C6H处的4字节数据。 接下来,我们计算扇区的大小。扇区大小通常是固定的,比如这里读取到的0002(16进制)表示每扇区有2000H(8192 decimal)字节,这是通过读取地址00000CA00H+0B00H得到的。扇区大小的信息对于后续的数据访问至关重要,因为它决定了读写操作的基本单位。 然后,我们需要知道每簇包含多少个扇区,这是通过读取0000CA00+08得到的,此处为08,意味着每簇有8个扇区。保留扇区数(用于启动记录等特殊用途)为2,这个信息位于0000CA00+0E,即0002H。 FAT表的大小是通过读取0000CA00+16H得到的,这里是00F3H,这意味着FAT表占用155个扇区。FAT1和FAT2的起始地址可以通过上述信息计算得出,FAT1起始于0000CE00H,而FAT2紧接着FAT1,因此地址为00CE00H+F3*200H。 根目录的地址计算相对复杂,它位于FAT表之后,因此地址为00CA+02*200H+2*F3*200H=49A00H。一旦有了根目录的起始地址,就可以开始遍历并读取目录项。每个目录项占用20H(32)字节,第一个目录项的地址是INTDIR_ADDR=49A00H+20H=49A20H。 读取根目录的过程如下:从DIR_ADDR(即49A20H)开始,每次读取20H字节的数据,直至达到下一个目录项。在读取的数据中,00表示未使用,E5表示已删除,05表示E5,2E表示目录。文件名由DIR_ADDR~DIR_ADDR+7组成,最多8个字符,不足8个字符用空格填充;扩展名在DIR_ADDR+8~DIR_ADDR+A之间;文件的起始簇号则存储在DIR_ADDR+14H~DIR_ADDR+15H,高字节部分用于构建完整的簇号。 通过这样的步骤,我们可以读取并解析FAT16文件系统中的数据,从而实现对SD卡上文件的访问和操作。理解这些基础概念和流程对于开发涉及文件系统交互的应用程序或者进行数据恢复工作至关重要。
Augusdi
  • 粉丝: 1w+
  • 资源: 5737
上传资源 快速赚钱