Chinaunix首页 | 论坛 | 博客
  • 博客访问: 14407
  • 博文数量: 6
  • 博客积分: 201
  • 博客等级: 入伍新兵
  • 技术积分: 60
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-19 16:24
文章分类
文章存档

2011年(4)

2009年(2)

我的朋友
最近访客

分类: LINUX

2011-09-06 18:44:09

今天学习下午学习了FAT32文件系统。总结一下...
SD卡上面的FAT32文件系统:
主结构:{保留扇区}+{FAT表项}+{数据区}
子结构:
{保留扇区}={引导扇区DBR}+{剩余部分}
                               512字节
512字节的DBR包含着磁盘的大量信息。
(1)字节数/扇区;扇区数/簇;
(2)保留扇区的大小(单位为:扇区)
(3)磁盘总共有多少扇区,多少FAT表(一般为2个,也可为1个),以及每个FAT表占多大地方(两个表大小相等)
(4)分区前已使用的扇区数。这个对SD卡似乎没作用。我的SD卡在WindowXP下格式化后为63个扇区,Ubuntu下格式化后为0.
{剩余部分}就不管它了。要是以后遇到不理解的,再看它。
{FAT表项}={FAT1 FAT2}
SD卡的每个扇区512字节,8个扇区结合为一个簇。在{数据区}是按照簇来使用的。每个簇都有一个编号,一个编号占4个字节,{数据区}的一个簇就对应{FAT表}中的一个4字节表项。
1)若是一个文件大小小于一个簇的大小即小于8*512字节=4K。一个簇就可放下,对应的FAT表项就是文件结束标志0x0fffffff.
2)若是一个文件大于4K,则要放到很多簇中去,先给这个文件指定一个起始簇,起始簇的表项中放着下一个簇的编号,一直这样,直到文件结束的最后一簇的表项填为文件结束标志0x0fffffff.
   至于这个起始簇怎么指定?在磁盘格式化的时候,磁盘就有了根目录,这个目录当然要用目录项,磁盘上的所有文件或者文件夹都在根目录下。这个根目录被指定了起始簇,一般为2,第0 ,1簇有特殊用途。
   再者,我在磁盘上创建文件和文件夹,他们的起始簇谁来指定呢?在有OS的时候由OS来完成,没有OS的话,那你自己编程制定去吧,嵌入式的文件系统。
还有什么短目录项(32字节)和长目录项(N个32字节,N>=1)?这里面包含了磁盘上的文件或者文件夹的信息。
  (1)文件名. 一个32字节的短目录项只能包含8个字符,超过8字符的文件名就要使用长目录项,不过,长目录项只是用在文件名上面,文件的其余信息还是要用短目录项来说明。所以长目录项和短目录项是同时存在的。另外,要是文件名太长,使用了长文件名目录项,那么表示短文件名的目录项每一项就可有13个字符,而不是8个(为什么?多了3个字节的扩展名+1字节文件属性+1字节的保留。)
  (2)各种时间和日期,各种属性。


阅读(529) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~