转载 SD的FAT32文件系统搞定 sd卡fat32格式化工具

原文地址:SD的FAT32文件系统搞定作者:现实生活求简单

FAT文件系统主要有三种格式:FAT12,FAT16,FAT32

FAT12没有看到过,不太清楚

FAT16则是一种微软早期的系统的一种文件系统,能管理的硬盘大小不超过2G

FAT32则是现在在电脑上的主流的一种文件系统,能管理的硬盘大小为2T

虽然在电脑上主流为FAT32,但在一些偏携式器件里的存储系统所用的还是FAT16,所以研

究FAT16和FAT32都是很有必要的,以下为我这几天看的一些资料的总结。

FAT文件系统的一般性介绍参照http://hi.baidu.com/hao01222/blog/item/43142e811de75edbbd3e1ef8.html里介绍的就可以了。

这里主要是介绍引导扇区的各位定义。

由于FAT16和FAT32的引导扇区定义不同,所以我们这也分开来介绍:
[转载]SD的FAT32文件系统搞定 sd卡fat32格式化工具

FAT32:在FAT32引导扇区中主要有意义的也就00H—52H,下面我们就以程序的先后的顺序来记录:
PS:我们这里讲的地址均为逻辑磁盘地址,在单片机读出的也为逻辑磁盘地址(我不知道为什么?)。若转化为物理扇区,需加上32个扇区。从4000H开始读则为所需的引导扇区
PS:读数据时最重要的一点:必须从扇区的开始读起,不能从中间读,否则返回值不准(我的返回值均为0XFF)。

第一步:我们要确定是否为FAT32或FAT16:在FAT32中由52H,53H,54H,55H,56H来确定,若此五字节为FAT32,此则说明此卷为FAT32文件系统,若不是应查找36H,37H,38H,39H,3AH,3BH,若此五字节为FAT16,则说明此卷为FAT16文件系统。

(以下都先认定为FAT32格式,FAT16格式的下面再说)

第二步:我们要确定的是的每各扇区的字节数:由0BH,0CH来决定,共两字节,一般都是512BYTE

第三步:我们要确定的是每簇所占的扇区数:由0DH决定,一个字节(512M的为一簇占8扇区)。

第四步:查看隐藏扇区大小,此处关系FAT1,FAT2,根目录地址:1CH,1DH,1EH,1FH所决定,共四字节。

第五步:保留扇区,这对编程而言很重要,他关系到你的FAT1,FAT2,和根目录的地址:由0EH,0FH决定,共两个字节(FAT1的起始扇区为保留扇区+隐藏扇区)。

第六步:查看文件分配表的个数,一般都是两个,但关系到根目录的地址,还是查下比较好:由10H决定,一个字节。

第七步:查看此卷的大小,即分区所占扇区数:20H,21H,22H,23H所决定,共四字节:此四字节数再乘以每个扇区所占字节数,即为此卷的实际大小。

第八步:查看FAT的大小,即FAT1,FAT2所占扇区数,此处关系根目录的地址:24H,25H,26H,27H所决定,共四字节(根目录地址即为保留扇区数+隐藏扇区+FAT扇区数*2)

第九步:查看根目录所在簇(这一块我到现在也不知道有什么用),由2CH,2DH,2EH,2FH决定,共四字节。

SD文件系统基本实现(构想)
------只是实现了基本功能


SD文件系统根目录找寻(注意必须从扇区开始读取,否则读取值错误):


一,读取扇区大小--------512

二,读取隐藏扇区个数

三,读取保留扇区个数

四,读取FAT个数----------2

五,读取FAT大小

六,读取一簇包含的扇区个数-------8

七,计算根目录的地址


根目录地址=(隐藏扇区个数+保留扇区个数+FAT大小*FAT个数)*扇区大小



SD文件系统的显示


一,根目录读取(每32个字节读取):

1,第一字节为5E,省去这32字节

2,第一字节为00,结束根目录读取

3,其他数值,读取文件名


二,文件名读取(32个字节读取):

1,前八个字节为文件名

2,第8~10字节为文件类型

3,第11字节为文件属性-----判断其是否为0X10,若是则为文件夹

4,第14,15字节为文件创建时间

5,第20,21,26,27字节为文件所在簇号---(簇号—2)*一簇的扇区数+根目录所在的扇区==文件所在扇区

6,第28~31字节为文件的长度


三,判断11字节

1,是0X10,表明文件是一个文件夹

2,不是0X10,表明不是一个文件夹,只是普通的单个文件


四,子文件夹读取(每32个字节)

1,前32字节为当前文件夹的信息-----26,27,28,29字节为其簇号

2,32位~45字节为父文件夹的信息------相对应的同样四个位置为其簇号

3,从46字节开始读取子文件夹内的文件(如同根目录)


五,文件的读取(保留相对父文件夹的地址信息,以便返回)

1,从文件目录中读取文件所在的簇

2,根据簇来读取所在的扇区(计算方法上面有介绍)

3,通过扇区*512来得到其首地址

4,通过文件的大小(上面注明如何得到),来读取数据


六,文件的返回--------读取文件保存的父文件夹的地址信息从而进行文件的返回


七,文件夹的返回--------读取父文件夹地址信息(前面介绍过),判断其簇号是否为0

1,若为0,表明父文件夹为根目录。簇号+2返回(前两个簇为系统保留)。

2,若不为0,则表明父文件夹还是另一个文件夹的子文件夹,直接通过其簇号找到地址后返回(计算方法前面介绍过)。

以上即为我的SD文件系统读取的想法,感觉虽然想的简单,但若真正做下去就很烦琐,所以就没有做下去了,只是做了简单的根目录的读取,希望能对大家有所帮助。

其中根目录如何找寻,我在另一篇中已有介绍

http://hi.baidu.com/hao01222/blog/item/03ffd6ee8f16752a2df534dc.html

希望能得到高手指点我想法中的错误之处。




  

爱华网本文地址 » http://www.aihuau.com/a/25101011/78176.html

更多阅读

误格式化SD卡数据恢复的小技巧 误格式化sd卡

误格式化SD卡数据恢复的小技巧——简介如果数据里面没重要数据,可以直接格式化或者右击我的电脑-管理-磁盘管理格式化它,一般格式化了就能用了,如果格式化不了就说明硬件问题,没办法了。其实,随着现代技术的发展和软件的功能性强大,SD卡被

如何转换U盘的文件系统 格式 文件系统格式转换

如何转换U盘的(文件系统)格式——简介U盘,是现在办公一族,常常能用到的工具,用于文件的拷贝。但是如何让您的U盘能拷贝大文件呢?下面就说下怎么实现U盘格式的转换,实现大文件的拷贝。如何转换U盘的(文件系统)格式——工具/原料电脑一台如何

手机SD卡损坏的修复方法 手机sd卡受损不用电脑

手机SD卡损坏的修复方法——简介经常会网友遇到手机使用时间较久后会遇到提示“SD卡已损坏,您可能必须将其重新格式化”故障,导致手机SD卡无法使用。最近身边有朋友手机就遇到了这种情况,经过查找原因以及网上找了一些资料后,采用了一些

U盘文件系统选用什么格式的好 u盘装系统文件格式

u盘文件系统选用什么格式的好,u盘文件系统主要有FAT32、NTFS两种,大家比较看看:● FAT32文件系统FAT32使用4个字节(也就是32位)的空间来表示每个扇区(Sector)配置文件的情形,故称之为FAT32。FAT16的分区容量上限是2047MB,而FAT32的分

SD卡格式化后数据恢复方法 免费数据恢复软件

SD卡格式化后数据恢复方法——简介今天小编用打卡器读取SD卡时,里边的数据无法正常显示,然后小编就将SD卡进行格式化操作。但格式化之后就后悔了,因为SD卡里边还有重要的数据没有进行备份。小编很想找回SD卡格式化之前的数据,于是请教了

声明:《转载 SD的FAT32文件系统搞定 sd卡fat32格式化工具》为网友我会保护你分享!如侵犯到您的合法权益请联系我们删除