如何学好FAT32文件系统?
我想知道该怎么学习FAT32文件系统,我想用STM32在SD卡上建立一个文本文件,然后接收串口发送过来的数据存放于刚建立的文本文件中,想请教我该如何移植文件系统(比如zn...
我想知道该怎么学习FAT32文件系统,我想用STM32在SD卡上建立一个文本文件,然后接收串口发送过来的数据存放于刚建立的文本文件中,想请教我该如何移植文件系统(比如znFAT),要修改些什么?注意什么?有什么教程没有,或者要看什么书?还望有经验的人不吝赐教,谢谢!
展开
展开全部
首先你要了解FAT32文件系统
0 你需要一个强大的16进制编辑器,比如WinHex,下一个下来, 你的后续123都需要大量的使用它。要做到看16进制编辑器比看小说都轻松,就毕业了。
1 有一篇网文http://www.sjhf.net/Article/sjhfdoc/200404/1.html
这是一家数据恢复企业的在线文档。以前我就是看这个开始学FAT文件系统的。
在你的电脑上分一个小点的FAT分区,甚至,用虚拟机,随便建一堆从几M(这时系统应该会建FAT16)几十M ,几百M。然后一边看这个文档,一边用WinHex打开你磁盘的MBR,找到你的分区起始位置,研究这些分区的头部,FAT表,以及后面的簇空间。
看完这个系列,基本入门,只是有些细节这个没讲。
2 可以看 [数据重现文件系统原理精解与数据恢复最佳实践].(马林).影印版 网上有pdf下载,需要搜一下,搜不到,的话说一声,我可以传给你。
这本书比较枯燥,但是看完可以对FAT32有个比较详细的了解
3 找一个FAT32的开源工程来玩玩,最好自己把它重构一遍,如果做到这里,基本完全入门。
近年有个比较好的文件系统开源工程http://discutils.codeplex.com/
这个是用C#写的,包含了FAT和NTFS,非常漂亮的工程,架构优美,功能强大,而且可以down下来慢慢把玩。
我把它的FAT部分用C++重构了一遍,收益良多,不仅是深入认识了FAT文件系统。 还让我写大型应用的功力有了长足的进步。
非常好的一个开源项目,真心话,学习文件系统 让你的心里非常有底,毕竟是操作系统三大件之一,而通过它入手又没有进程管理和内存管理那么陡峭的学习曲线。
可惜我只学完了FAT部分,NTFS部分开始重构了2个月就跳槽搞移动开发了,暂时没有时间来研究NTFS,这部分代码也是很精彩的。话说最好笑的就是开始重构的时候,不是要纵览整个工程 来决定从哪里开始嘛,FAT我大概花了3天来找到着手点。
NTFS大概花了2周才知道从哪开始啊。
如果你有耐心完成123步,FAT肯定可以学会。有兴趣继续玩NTFS的话,当然更好。文件系统这种东西,学精后还是很吃香的,虽然人才需求不多,但是学的人也少,竞争没这么激烈。
0 你需要一个强大的16进制编辑器,比如WinHex,下一个下来, 你的后续123都需要大量的使用它。要做到看16进制编辑器比看小说都轻松,就毕业了。
1 有一篇网文http://www.sjhf.net/Article/sjhfdoc/200404/1.html
这是一家数据恢复企业的在线文档。以前我就是看这个开始学FAT文件系统的。
在你的电脑上分一个小点的FAT分区,甚至,用虚拟机,随便建一堆从几M(这时系统应该会建FAT16)几十M ,几百M。然后一边看这个文档,一边用WinHex打开你磁盘的MBR,找到你的分区起始位置,研究这些分区的头部,FAT表,以及后面的簇空间。
看完这个系列,基本入门,只是有些细节这个没讲。
2 可以看 [数据重现文件系统原理精解与数据恢复最佳实践].(马林).影印版 网上有pdf下载,需要搜一下,搜不到,的话说一声,我可以传给你。
这本书比较枯燥,但是看完可以对FAT32有个比较详细的了解
3 找一个FAT32的开源工程来玩玩,最好自己把它重构一遍,如果做到这里,基本完全入门。
近年有个比较好的文件系统开源工程http://discutils.codeplex.com/
这个是用C#写的,包含了FAT和NTFS,非常漂亮的工程,架构优美,功能强大,而且可以down下来慢慢把玩。
我把它的FAT部分用C++重构了一遍,收益良多,不仅是深入认识了FAT文件系统。 还让我写大型应用的功力有了长足的进步。
非常好的一个开源项目,真心话,学习文件系统 让你的心里非常有底,毕竟是操作系统三大件之一,而通过它入手又没有进程管理和内存管理那么陡峭的学习曲线。
可惜我只学完了FAT部分,NTFS部分开始重构了2个月就跳槽搞移动开发了,暂时没有时间来研究NTFS,这部分代码也是很精彩的。话说最好笑的就是开始重构的时候,不是要纵览整个工程 来决定从哪里开始嘛,FAT我大概花了3天来找到着手点。
NTFS大概花了2周才知道从哪开始啊。
如果你有耐心完成123步,FAT肯定可以学会。有兴趣继续玩NTFS的话,当然更好。文件系统这种东西,学精后还是很吃香的,虽然人才需求不多,但是学的人也少,竞争没这么激烈。
展开全部
还是先从认识簇来学习。
FAT32英文为 file allocation table ,汉语就是文件分区格式表。就是将一个硬盘或存储卡格式成FAT32这种存储格式,当然除此,还有FAT16和FAT32以及现在优势大的NTFS格式。
如果现在有一个图片文件。JPG格式的。它的大小是65kB ,也就是65K个字节,假设一个FAT32格式的SD卡为1M,假设最小存储单位是字节,那1M就是1024K个字节,那么可以存储1024/65=15.75个,可以看到的也就是15个图片,当然剩余的字节也会被填满不会浪费,但事实上呢?
FAT32格式的存储文件规定其最小的存储单位是簇,那何为簇?簇就是若干个字节合成的一个单位。每个文件占用一个簇,每个簇都相同。在这种格式下,只能以簇为存储单位,若一个文件小于簇的容量,那么这个簇就会有剩余的字节被浪费,文件大于一个簇将会取用下一个簇。举例来说,一个簇为4KB,一个文件64kB ,那么恰好占用16个簇,如果一个文件65KB,那么将占用17个簇,也就是68kB,最后一个簇被用掉1KB,但剩余的3KB将不会在被任何其他文件占用,所以被浪费掉了。
FAT32英文为 file allocation table ,汉语就是文件分区格式表。就是将一个硬盘或存储卡格式成FAT32这种存储格式,当然除此,还有FAT16和FAT32以及现在优势大的NTFS格式。
如果现在有一个图片文件。JPG格式的。它的大小是65kB ,也就是65K个字节,假设一个FAT32格式的SD卡为1M,假设最小存储单位是字节,那1M就是1024K个字节,那么可以存储1024/65=15.75个,可以看到的也就是15个图片,当然剩余的字节也会被填满不会浪费,但事实上呢?
FAT32格式的存储文件规定其最小的存储单位是簇,那何为簇?簇就是若干个字节合成的一个单位。每个文件占用一个簇,每个簇都相同。在这种格式下,只能以簇为存储单位,若一个文件小于簇的容量,那么这个簇就会有剩余的字节被浪费,文件大于一个簇将会取用下一个簇。举例来说,一个簇为4KB,一个文件64kB ,那么恰好占用16个簇,如果一个文件65KB,那么将占用17个簇,也就是68kB,最后一个簇被用掉1KB,但剩余的3KB将不会在被任何其他文件占用,所以被浪费掉了。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询