本帖最后由 PCA 于 2012-4-7 08:21 编辑
振南老师的znFAT,还没看懂,一起看吧
振南的 振南的znFAT
--单片机上的FAT32文件系统
前言
1、znFAT是什么?
关于znFAT,也许您从未耳闻,这是因为振南并没有去宣传,也
很少向人提起,基本都是私下在作,在这个过程中与不少网友和爱好
者进行了交流,他们为znFAT提了不少的建议和需求,使znFAT可
以不断改进和扩充。也有不少人建议我开源,在这种要求之下,我在
网上公开了一部分代码,果然是受到了很大的关注。但我要说的是,
先前没有全部开源是因为我自认为znFAT还不够完善。现在,znFAT
经过一遍遍的测试以及在实际工程中的应用,已经较为完善了。我不
敢说znFAT已经一点问题没有了,但如果一直是我一个人在作,它也
难以得到更进一步的发展,所以谨以此书,向大家介绍znFAT的研发
与实现过程。
znFAT到底是什么?znFAT是振南原创的一种方便移植于各种微
处理器上的开源的FAT32文件系统解决方案。
2、znFAT能用来作什么?
振南的znFAT(前言).pdf
(1.97 MB, 下载次数: 420)
2012-4-7 08:18 上传
点击文件名下载附件
振南的znFAT(前言).pdf
(1.97 MB, 下载次数: 274)
2012-4-7 08:20 上传
点击文件名下载附件
这是最核心的一个问题,就如同筷子用来吃饭、雨伞用来挡雨,
各有各的功能,所以才有存在的必要。简单来说,znFAT最重要的用
途就是在存储设备上,如SD卡、CF卡等等,实现FAT32文件系统,
进行各种文件操作,并保证与windows等操作系统上的FAT32文件
系统相兼容。
虽然我们每天都在用电脑,在与文件打交道,但不一定每个人都
知道有文件系统这种东西,或者不了解它的运行机制。而我要说的是,
正因为计算机、MP3、手机等等现在能这么普及,很大程度上是因为
有文件系统。
FAT32文件系统是一种机制,或者是一种智慧,更如一个主管,
可以将存储器上的数据有机的组织为一个文件,并向我们提供针对于
文件的各种操作,比如创建文件、读取文件等等。
znFAT是一套解决方案,也就是一套实际可以看到的代码,更通
俗的说就是用C语言对FAT32的实现,用于运行在某一种微处理器
上,并在某一种存储设备上真正实现FAT32中的各种文件操作。至
于znFAT中都实现了哪些功能,在后面的介绍中大家会有全面的了
解,同时也就能了解到编写一套文件系统解决方案所要花费的心血
了。
3、为什么要自己从0写,不是有现成的方案吗?
能问出这一问题的人,想必不是初学者,因为文件系统这种东西
已经算是比较高级的应用了,所以一般人在初学阶段是不会接触文件
系统的。只有有了一定经验,进入实际项目的人,才会越来越发现文
件系统的重要。
为人所熟知的现有的文件系统有FATFS、uc/FS等等,由来已久,
并且也在不断的改进发展,拥有很大的应用人群。这些现有的方案,
都向使用者提供了源代码,方便移植到各种平台上。但稍有了解的,
就会发现,这些解决方案都来自于国外,或是公司,或是研究团体,
从而造成源代码很难被读懂,想要深入去了解文件系统是怎样实现
的,比较困难。所以如果能原创性地编写出一套完善的文件系统解决
方案,并配以相应的教程和应用实例,就可以使我们对文件系统有更
深刻的了解。理解了它的真谛,我们就可以去实现那些现有方案中没
有实现,而我们又急于实现的功能,一切工作都变得非常灵活。
在这里,您可能还会问,难道国内就没有成形的文件系统解决方
案吗?我要说,有!比如沁恒电子、各个开发MP3、MP4、手机的公
司,我想都会有专门的人去研究文件系统并予以实现,但最重要的一
点,他们是不会开放源代码的,更不会告诉你他们是怎样实现的!
4、FAT32文件系统到底有多复杂,好不好学?
虽在FAT32文件系统协议文档中讲的东西很多,乍看起来很零
乱,使人无从下手,但只要耐住性子多看几遍,真正的看进去了,就
会发现FAT32文件系统内容虽多,但层次分明,逻辑缜密。最后你
会产生这样的想法,只要肯下功夫,就一定能写出一套不错的方案来。
不过,如果是自己从0来研究FAT32文件系统,还是不太好弄
明白的,这也是本书的初衷,振南的任务就是把FAT32文件系统掰
开了揉碎了,让您轻松接受,并感觉到FAT32文件系统设计上的一
些微妙之处,感叹微软令人佩服的创造力(FAT32文件系统的老家是
微软!)
5、有了znFAT我们能作出些什么?
当我们真正把FAT32文件系统研究明白了,学会用znFAT在存
储设备上进行各种文件操作了,这个时候,znFAT就成为了我们得心
应手的工具了。也就是说,利用znFAT我们就可以开始更进一步的开
发了。而此时我们开发的层次已经与以前截然不同了,以前我们读写
数据也许就是直接在存储器的扇区里或存储单元里读写,而现在我们
是在文件里进行读写,而且我们读写的数据与windows是相通的了。
我们可以作出更多精彩的实验和产品,比如SD卡MP3播放器、
可插接U盘的数码相框、CF卡电子书等等。可以说,如果我们具有
了操作文件的能力,很多问题都可以迎刃而解,很多实验都变得很简
单了。
6、znFAT是不是需要特定的硬件才能实现?
其实znFAT研发过程中的难题有很多,除了FAT32文件系统本身
的复杂度外,还有就是实际平台的硬件资源了。研发znFAT的一个重
要指标就是可移植性,不光包括znFAT本身的程序接口要易于移植,
另外更为重要的就是占用资源量,占用资源越少,越容易向一些低端
的微处理器上移植。振南在研发znFAT的过程中所使用的硬件是
STC12C5A60S2(STC公司出产的一种1T增强型51核单片机,片内
有1280字节的RAM)、1G的SD卡与CF卡各一张(其实就是基于
振南的“天狼星精华板”上的硬件资源,这里为什么要有两种存储设
备,SD卡与CF卡,到后面您就明白了!)
应该说振南所使用的硬件已经是非常简陋了,也正是因为硬件资
源较为贫瘠,才能写出更为精简高效的代码来,以节省资源。所以振
南在编写程序的过程中,不光要考虑功能的实现,还要计算RAM等
资源的用量。现在现在为止,znFAT实现所有功能所需要的RAM资
源只有900多字节,其中有512字节的扇区数据缓冲区,也就是说,
znFAT实现FAT32的逻辑只用了400多字节。而常用的单片机、ARM、
DSP等芯片RAM一般也在几K到几十K字节,所以znFAT可以轻
松向这些芯片进行移植。
7、本书都会讲哪些内容?
在本书中,FAT32文件系统协议及基本的原理是肯定要讲解的,
然后就是znFAT各项功能的具体实现。由于文件系统不可能孤立存
在,必须要运行于某一种微处理器上,因此要把STC12C5A60S2单
片机一些基本用法讲一下;其次还要基于一种存储设备,所以还要讲
解SD卡与CF卡的驱动原理与具体实现。除此之外,还有程序的调
试方法、相关软件的用法等等。总之,此书不乏要讲的东西。
前言中振南用自问自答的方式,也许让您粗略了解了FAT32文
件系统及znFAT。此时的你,估计还是一个门外汉,下面就让振南慢
慢地把您让进屋来。
我也加入过他的QQ群, 也没什么干货
一周热门 更多>