读取FAT16文件专业知识讲座_第1页
读取FAT16文件专业知识讲座_第2页
读取FAT16文件专业知识讲座_第3页
读取FAT16文件专业知识讲座_第4页
读取FAT16文件专业知识讲座_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

读取FAT16文献下列内容均参照自baidu文库中"SD卡FAT16文献系统学习笔记"只是我加入了很多图片以帮助理解,希望对学习FAT16系统中你有所帮助!

1/12读取文献流程:

1.读物理扇区0,得到引导扇区(逻辑扇区0)偏移地址。

2.读引导扇区内容,得到文献系统基本配备信息。

3.根据文献系统基本配备信息计算FAT,FDT,及数据簇起始地址。

4.根据要读文献名搜索FDT(根目录),找到要读文献起始数据簇号及文献大小。

5.根据文献起始数据簇号在FAT表中查找所有该文献占用数据簇号,根据数据簇号查找对应数据簇。6.查找下一种数据簇号读取对应数据簇,直到读出最后一种数据簇0xFFFF。2/12

我这里就有一张SD卡(容量为1G),插上电脑后格式化为FAT格式,然后再往里面放某些文献!

在电脑上装上一种叫WinHex软件,利用其打开磁盘工具,就能够在物理层面上打开这张SD卡。

读物理扇区0(也即MBR),得到引导扇区(逻辑扇区0)(DBR)偏移地址。

先读取SD卡第一种扇区(512字节),即扇区0,该扇区数据如下列图所示:

3/124/12正常话,该扇区最后两个字节如上图所示为55AA,假如不是则证明是读错了,或者该SD没有被格式化.该扇区有两个主要信息:

一、在0x1ca开始四个字节03071E00,即0x1E0703=1967875,代表该SD卡有1967875个扇区,而每个扇区有512字节,因此该SD卡容量为1967875*512/1024/1024=960.8MByte

二、在0x1C6开始四个字节FD000000,即0xFD=253,它表达引导扇区在扇区253.

到此,这个扇区0就能够不用管了。5/12读取引导扇区(DBR)下列是扇区253前64Byte内容。由于253*512=0x01FA00,因此能够懂得下列图左边偏移地址为:0x0001FA006/12首先第0x3到0xA内容为ASCII码“MSDOS5.0”,统计了系统版本,这个我们不用管。下列才是我们需要理解叫做BPB内容:

第0xb开始两个字节0002,即0x2023=512,代表每个扇区(sector)有512个字节(byte)

接下来20代表每个簇(cluster)有32个扇区

接下来0600即0x6代表有6-1个保存扇区,能够计算第一种FAT表所在扇区为253+6=259

接下来02代表有两个FAT表

接下来0002,即0x2023=512,代表FDT(目录区)有512登记项

第0x16开始两个字节f100,即0xf1=241,代表每个FAT表占241个扇区

第0x36到0x3d代表就是“FAT16”ASCII码,说明这张SD卡是FAT16格式根据上述DBR内容可得到下列信息:

目前DBR所在扇区:253

每扇区字节数:512

每簇扇区数:32

第一种FAT表所在扇区:DBR所在扇区+保存扇区数=253+6=259

FAT表占用扇区数:241

根目录首扇区:第一种FAT表扇区+FAT扇区数*FAT表数=259+241*2=741;

根目录项数:512

根目录占用扇区数:(根目录项数*32)/512=32

第一种数据扇区:根目录扇区+根目录所占扇区数=741+32=7737/12我sd卡里有一种叫做“123.txt”文档用记事本打开内容是:

目前我们就要找到它,并且看看它在sd卡实际内容。

首先:跳到根目录扇区741(741*512=0x5CA00),看看它内容:8/129/12我们在上面每32个字节逐次找(直到找到“123.txt”文献名),一种项要占用32个字节。前面8个字节是文献名“123”背面3个字节TXT是后缀名(熟悉吧!)

但我们真正用到是这32个字节最后6个字节(2E014E550300)

其中“4E550300”表达文献大小,占用0x03554E=218446个字节(也就是218446/1024=213K)占用了(218446/512/32)14个数据簇

“2E01”表达文献首簇号在“0x012E=302”处

该文献首个数据簇扇区位置是:第一种数据扇区+(目前簇号-2)*每簇扇区数(也就是32)

773+(302-2)*32=10373

10/12来到10373号扇区(实际地址10373*512=0x510A00),看看它内容:

看右边文献解释,是不是跟记事本打开文档一致!

下面我们再查找下一数据簇内容,首先要查找下一种数据簇号所在扇区:

是这样计算:FAT首地址+302/256=(259+0x01)=260,我们来到260号扇区,然后计算簇号所在偏移地址

(302mod256)*2=0x2E*2=0x5C

所在簇号就在该扇区偏移地址0x5C处:

就是实际地址(260*512+0x5C=0x2085C)

11/12由上图可知,0x2085C,0x2085D(数据簇占用两个字节)内容是:2F01,即0x012F就是下一簇簇号。同理计算出再下一簇簇号扇区是:259+1,偏移地址是0x2F*2=0x5E,即实际地址0x2085E,该处为0x0130同理能够计算出余下簇号为:0x0131,0x0132,0x0133,0x0134,0x0135,0x0136,0x0137,0x0138,0x0139,0x

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论