jicheng0622

【原创】用WinHex查看SD卡FAT32文件系统结构

0
阅读(11045)

    一鼓作气,今儿忙里抽个闲,既然前篇”原创猛料“开了个好头,今晚就继续敲一篇补补更,呵呵~

    前段时间自己曾经写了一篇关于sd卡和Fat文件系统的自学笔记(http://blog.chinaaet.com/detail/29284.html),分享了一些当年自己写SD卡驱动和FAT文件系统的心得。其中大多数内容都是基础的,而且后来看看颇有些”授之以鱼“的嫌疑,与俺一直以来”授之以渔“的宗旨颇有些不符,以致于前段时间还有博友网上问我关于怎么使用WinHex软件的问题。之后仔细想来还是觉着再细说一下”渔“的问题为妥,下面我就先浅谈一下最简单的WinHex软件的使用方法,之后再介绍通过它如何分析FAT文件系统结构:

一、如何使用WinHex软件打开SD卡等相关存储设备:

    从网上下载免费的WinHex软件(放心,是真免费的,不用破解,呵呵),一路默认,安装完之后,双击打开WinHex软件(事先插好U盘或者SD卡(本篇以SD卡为例)),选择”工具->打开磁盘“,选择插好的SD卡磁盘驱动器,确定之后即可打开该SD卡,效果如下图所示(我事先已经格式化好了,所以里面数据为空):

二、分析FAT32文件系统(我把SD卡格式化成FAT32格式)结构:

    对SD卡来说,相当于单个分区,所以比较简单。我们来分析一下它的组成(按照所占地址空间从低到高排列):启动扇区(从第0扇区开始,包括保留扇区,包含一定数量的扇区数)、文件分配表FAT1、FAT2(完全是FAT1的备份)、根目录FDT、数据区(其实FDT算是数据区的一部分)。其中启动扇区中的第0个扇区是重中之重,里面的参数包含了该SD卡的全部基本信息(想详细了解可以查询相关资料),包括保留扇区的数目、FAT表的大小及根目录所在的位置等等(所以如果自己用MCU读写SD卡的话,第0个扇区是必定要查询的,当然如果你固定使用某个SD卡则可以直接用winhex在PC机上查出来,然后事先存到程序里的参数数组里,嘿嘿,我当年最开始做SD卡开发的时候就是这样的,虽然是笨法子却省了不少事)。

    具体详细的分析方法,我在博客下面分享了一篇期刊论文,里面就是介绍WinHex分析FAT文件系统存储结构的,可以仔细研究一番。在本篇里,主要以实际为主,下面以我在SD卡根目录下新建一个001.txt文件为例剖析一下其在里面的存储结构(另外需要注意的是Winhex查看是以快照的方式,所以如果你对SD卡里面的内容有所更改需要再次获取新快照,方法为“专业工具->获取卷快照->选中获取新快照”):

1.选中001.txt文件,查看文件存储结构:

2.选中根目录,查看根目录内容:

3.选中FAT1(FAT2与FAT1一样),查看FAT表存储结构:

4.跳转到相应地址或者扇区:

    本篇写到这里就不多说了,详细的见附件文档,里面说的比较明白。还有我想说的是WinHex的功能远远不止我上面提到的这几点功能,它真的灰常强大,希望大家能多动手实践来挖掘它更丰富的功能,也欢迎在博客里留言分享使用经验,未完待续~

    附件为用WinHex分析FAT文件系统比较详细的一个期刊文档,强烈建议看看~