广告

原创 图文并茂 SD/TF卡 FAT文件系统彻底剖解(二)

2010-9-22 18:21 11429 0 3 分类: MCU/ 嵌入式
 

图文并茂 SD/TF卡 FAT文件系统彻底剖解(二)



      这一节我将剖析一张32MB的TF卡,其内部文件系统FAT数据的构建,希望能让大家对FAT有更深入的了解。


     首先是将SD卡彻底格式化,而为何不用快速格式化。这个问题后面在说明。


     此时可以看到一张SD卡盘符,及其属性如图1


图1


image


      从图1我们可以得到这样一些信息 ,此盘容量为28.9MB,已用空间为0,可用空间28.9MB。


      下面我们用WinHex打开此盘,分析具体的数据。如图2所示


图2


0


    从图2我们可以得到这些信息:


 


              1.   此SD卡     容量为29.2MB,   即  30605312 B


                                   使用量为0B


                                   空闲为28.9MB



                         共59272簇,簇大小为 一个扇区,即512B


                                   共59272个扇区,扇区大小为512B


               2.  此SD卡被分成了6个部分:


  Boot sector       DBR区(DOS BOOT RECORD)即操作系统引导记录区 


                 扇区开始于 第 0 扇区       结束于  0 + (4KB *1024) /512 –1          =7             大小4KB       即 8个扇区


 FAT1      扇区开始于 第 8 扇区       结束于  8 + (116KB *1024) /512 –1      =239          大小116KB    即 232个扇区


 FAT2      扇区开始于 第 240 扇区    结束于  240 + (116KB *1024) /512 –1  =471          大小116KB    即 232个扇区


 ROOT directory 根目录区       


                扇区开始于 第 472 扇区    结束于  472 + (16KB *1024) /512 –1    =503          大小16KB      即 32个扇区


  Free space        


                扇区开始于 第 504 扇区    结束于  504 + (30347264) /512 –1       =59775      大小28.9MB   即 59272个扇区


  idle space          无


                 扇区总数为 59776, 即 59776×512 =30605312B =29.1875 MB      符合此盘的容量


            下面双击Boot sector 区,可以看到图3


图 3     


1   


2


            从图 3 可以看出此DBR区共有 4KB,  数据具体代表的含义请参照上一节的相关图片与表(如表2)分析。这里就不重复了,直接列出从DBR中获取的信息。



     1. 本U盘的扇区大小为512字节



     2. 每簇扇区数为1,也就是说U盘共有 59776簇。



     3. 保留扇区数为8个,也就是说U盘在FAT开始之前仅有一个引导扇区。



     4. 有2个FAT表, 每个占用(0xE8)232个扇区。



     5. 本U盘共有 59776个扇区,总容量为 29.1875 MB 。



     6. 每道扇区63个,磁头255个,无隐藏扇区。


            下面打开FAT1区的数据,如图4


图 4


3


4  FAT表实际上是一个数据表,以2个字节为单位,我们暂将这个单位称为FAT记录项,从图4中,可以知道,前两个记录项(即前四个字节)是0xFFFFFFF8,它是FAT表的标志,通常情况,第1、2个记录项用作介质描述。从第三个记录项开始记录除根目录外的其他文件及文件夹的簇链情况.


     主要此处FAT1的地址为偏移地址,也就是相对于FAT1表的起始地址的偏移,而不是实际的地址。图5才是它在SD卡中的实际地址


图5


5


6


                                         地址范围  0x0000 1000 ----0x0001 DFFF    大小为 0x1D000 =116KB


                同样,FAT2只是作为FAT1的一个备份,所以其内容与FAT1完全一样,唯一不同的是他们的分配地址不同,FAT2的地址见图6


图 6


7


                                   地址范围  0x0001 E000 ----0x0003 AFFF    大小为 0x1D000 =116KB


                 下面打开根目录区,如图 7


图 7


8


                                         地址范围  0x0003 B000 ----0x0003 EFFF    大小为 0x4000 =16KB


                                 此根目录下没有任何文件,除了橙色圈出的盘符名称占据了32自己外,其余数据都为0.


         接下来是数据区,如图8


图 8


9 


                                         地址范围  0x0003 F000 ----0x01D2 FFFF    大小为 0x1CF0FFF =29635KB =28.94MB


                                 此数据区没有任何文件数据。 


 


                          接下来,我们往SD卡存入一个ReadMe.txt文件,看看几个区中的数据都有什么变化。


                          存入文件后,从电脑 上看到的信息如 图9


  图 9       


10


 


image                                             


        接下来,再次用WinHex 打开此SD卡,看到的信息如图 10


图 10


11


     与空盘(图2)对照着看,红色部分为改变的数据,此时SD卡使用了0.5KB,且多了一个ReadMe.txt 的 文 件。


     DBR区的数据没有任何变化。接下来开FAT1的数据变化,如图 11


图 11


12


                       仅多了一个 FF FF 数据,表示文件仅占用了一个扇区。


                       而 FAT2区的数据跟FAT1完全一样,如图12


图 12


13


           下面是根目录区,如图13


图13


14


    新增信息的内容含义,请具体看上一节的相关信息。这里就不再重复了。


   数据区已经在其偏移的第一扇区,增加了文件的内容信息,如图14


图14


15 


        到此,加入一个文件后,SD开内各扇区所发生的变化,就已讲述完毕,请对照着前后图片分析。


 


       对于快速格式,与彻底格式化的区别,  我也实际用此SD卡试过。个人理解为,快速格式化仅是将DBR区,FAT1区, FAT2区,根目录格式化,而数据区的所有扇区数据依然保留在原有的地方,每次写入新数据时,SD卡再根据需要擦除相应的扇区。但彻底格式化SD卡是,除了前面介绍的扇区需要格式化为,连所以的数据扇区都将格式化,所以比较耗时。


image


 


      到此,关于我个人理解的FAT的构架信息,就已经讲完了,都比较浅显,主要是针对初学者,有一个比较直观的认识,如果对大家有所启发,还望不吝赐教,共同进步!


 

广告

文章评论 3条评论)

登录后参与讨论

billzhu_345737527 2014-8-29 19:10

gdu

养兔子的神爸 2012-9-14 09:01

很好。用事实说话。图文并茂。

小陶 2011-8-22 10:51

太好了 刚学这个,有帮助
相关推荐阅读
singlechip 2013-07-03 14:54
[博客大赛]四层板搞定--AT91SAM9X35 第二版
    花了一个月时间,又重新设计了一款AT91SAM9X35的板子。针对第一版做了以下改进。   1 200PIN1.27MM的双排插针换成了更可靠的BTB-80 插针   ...
singlechip 2013-04-25 09:48
[博客大赛]四层板搞定--AT91SAM9X35
  1月15号从零开始设计原理图,到今天4月15号,刚好3个月,终于用4层板设计完成了AT...
singlechip 2013-04-09 18:06
准备花3个月时间用四层板画--AT91SAM9X35
  最近终于腾出手来,比较看好AT91SAM9X35这颗芯片,打算好好弄弄。先从画板开始吧?虽然手上有芯片商提供的开发板,但总觉得不能自己画出一块板出来,技术永远不会属于自己。所以准...
singlechip 2013-02-01 15:01
PCB设计资料汇总
http://pan.baidu.com/share/link?shareid=202013&uk=3826038294#dir/path=%2FPCB%E8%AE%BE%E8%AE%A1...
singlechip 2012-12-12 16:00
[ti博客大赛]基于MSP430装备监控型冲击震动记录仪
概述 装备监控型冲击振动记录仪(以下简称记录仪)用于长时间监视装备在储存过程中受到的冲击振动,对超过阈值的冲击事件进行记录和报警。记录的事件包括对事件的发生强度和发生时间进行实时的记录。当需要...
singlechip 2012-12-12 16:00
[ti博客大赛]当年纯手工打造的---基于MSP430姿态调整仪
当年纯手工打造的---基于MSP430姿态调整仪。。。。采用三轴加速度传感器。。。 感兴趣的朋友可以到我博客探讨。。。。 http://bbs.ednchina.com/BLOG_ARTI...
我要评论
3
0
广告
关闭 热点推荐上一条 /3 下一条