打印

《振南znFAT》,市面唯一SD卡、FAT32嵌入式存储技术与应用专著.3.31出样,4月全国发售

[复制链接]
10670|64
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
znmcu|  楼主 | 2013-6-14 11:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 znmcu 于 2014-3-22 16:08 编辑

《振南的znFAT—嵌入式平台上的FAT32文件系统》全书梗概 书稿内部二版暂定

振南经历近四年的研究、筹划与写作,《振南的znFAT--嵌入式平台的FAT32文件系统》一书将于今年年底正式出版。现将全书梗概先行发布。
【近期会发布全书各章简要先行电子版】
此书将是市面上唯一一本专讲文件系统与SD卡等嵌入式存储技术的专著

http://www.znmcu.cn/bbs
http://www.znmcu.cn




前言
阐明FAT的主要作用!为什么要了解FAT内部技术和实现!
讲述振南研发znFAT的动机、过程、研发程度、应用情况等等。

预备:欲善其事 必利其器
    论语道:“工欲善其事,必先利其器!”当然,写这话的老老老头子肯定不会单片机,更不会懂得啥是单片机?啥是FAT32文件系统?但我们这里套用这句至理名言,让大家知道我的用意。本书的核心要务就是要向大家讲清楚FAT32文件系统是如何在单片机上实现的,以及围绕它所作的诸多实验。既然有实验,则必然有平台。既然涉及到平台,那就有必要在书的最前面设置这样的一章,对平台进行介绍,包括平台的硬件配置、调试和使用方法等内容。
这里我们会看到本书的第一个实验,在后面我们会发现,各种实验充斥着本书。振南秉承一个原则:一切落于实验,通俗才是王道!我本人最痛恨生硬的公式、定义和计算,希望本书在振南的把持之下,尽量离“天书”或所谓的“不知所云”远点。

第一章:实验切入 端倪初现
本书开篇时振南说过,znFAT的研发是源自于早期的一个电子制作“MP3数码相框”,目的是为了讨好女生。我们在前面也看到了它的实验效果演示,想必很多人都会有DIY的冲动。好,那振南就以这个实验来切入,用几章的篇幅一步步地向大家讲解它的实现过程与方法。
MP3数码相框”,顾名思义,就是带有MP3播放功能的数码相框。说白了,就是既能播放MP3,又能显示图片。正所谓:“绘声绘影,才更得芳心啊!”
我先问问大家:“‘MP3数码相框’的工作原理是什么?”不知道?再想想……其实很简单,把MP3音频与像素数据,从存储器读出来,发送到解码器和显示器,最终播放声音,显示图像即可。你一定会有疑虑:“哪会有这么简单?”我说的是最最基本的实现过程,其实其中是大有明堂的。有何明堂?送您两个字:“往后看吧!”
    在这一章中,我们就先来实现一个最为简单的“MP3数码相框”。这里,还看不到文件系统的影子,但通过它我们可以了解存储器、MP3解码器、显示器件最为基础的内容,让大家看到实验的雏形,最后引申出几个问题,推动大家的思维继续前进。

第二章:逐渐深入 转入正题
在上一章中,我们最后引出了一个问题“如何向FlashRom放入数据?”在这一章中,振南会给出解决的方法。我们也会看到用FlashRom作存储器是多么的麻烦。因此,SD卡闪亮登场,担负起了存储器的重要职责。这样,“简易音乐数码相框”就可以升级为“简易SD音乐数码相框”了。可以说,引入了SD卡,我们才开始走上FAT32文件系统之路。

第三章:自建模型 会意由衷
在上一章中我们使用WinHex找到了SD卡上的文件数据,并实现了“简易SD卡音乐数码相框”,但最后也留下了一个问题“文件系统是如何组织数据的?如果文件数据不连续该怎么办?”这一章中,为了更好的回答这一问题,我们撇开生搬硬套、条条框框的形式,让大家开动脑筋,自己亲自设计或者说构思一种较为合理的文件管理方案。振南相信通过这种主动思考的方式,会让大家对文件系统和数据管理的认识更为真切,在我们对方案进行不断改进的过程中,意识到问题的所在,最终我们会发现我们的思想已经与微软的FAT32文件系统不谋而合了。

第四章:轻踏上路 初涉解析
经过上一章的介绍,我们大体了解了FAT32文件系统的整体结构,以及各功能部分之间的关联,但大家对它们的认识还是十分模糊的,顶多算是肤浅。从本章开始我们就深入到各个部分进行详细讲解。这里,我们介绍第一个部分—MBR,主引导记录。可以说,它是FAT32文件系统的入口,甚至是所有文件系统的入口,通常一个磁盘上只有一个MBR,可见它的重要。如果对它的定位不准,或解析不正确,则以后的各种文件系统相关的操作均无从谈起。它到底为何如此重要,请看下文。

第五章:摘取参数 精准定位
    在上一章中,我们实现了对MBR的解析,对扇区数据提取和参数计算的方法进行了介绍。在这一章中,我们将继续这样的工作—解析DBR。其实在本章中解析得到的参数才是FAT32文件系统的核心参数,它们构筑起了FAT32文件系统的整体框架,也是我们今后实现各种文件操作的根本基础。同时,我们将看到znFAT的第一个供用户应用层调用的功能函数雏形—znFAT_Init(文件系统初始化)。好,下面我们就来看一下本章的具体内容。对了,随便告诉大家,研究DBR将使我们能够揭露那些U盘制假者的卑劣伎俩哦。

第六章:文件在手 剖析寻数
    经过了前两章看似乏味的参数解析,我们已经获取了FAT32最为核心的参数,并完成了znFAT的初始化函数(znFAT_Init)。此时,FAT32的整体轮廓已经清晰可见了。但是文件到底在哪里?答:文件在目录中!我们现在已经找到了首目录的所在,所以文件其实已经在我们手中,唾手可得。在本章中文件会在我们面前显出原形,我们要作的就是如何去分析它,获取文件信息并读取它的数据。最终完善我们的SD音乐数码相框,这里我们就可以称之为“带有znFAT雏形的SD音乐数码相框”了。振南提醒,不要因为中间隔了MBRDBR这两章,就忘记了第三章中提出的问题:拷到SD卡中的MP3和BIN文件数据到底在哪?

第七章:渐入渐深  初触核心
    我们在上一章实现了“带znFAT雏形的音乐数码相框”实验,程序已经能够自主地进行文件解析,完成文件信息获取与数据定位了。但是最后我们也提出了一个有关数据连续性的问题。其实在我们实际读取文件数据的时候,很多情况下数据是不连续的。(为什么会不连续?这个在第三章中已经讲过。主要是因为文件删除后所遗留的剩余空间被重利用所造成的)在这一章中,我们就来讲解FAT表的相关内容,它是FAT32中实现数据链式存储的主要手段,可以说它是最为核心的部分,整个文件系统都以FAT来命名足以证明这点。好,此章引言暂且少叙,请看正文。

第八章:数据读取  灵活定位
在上一章中,我们实现了带有簇链的文件数据读取。可以说加入了FAT簇链机制,才算是抓住了FAT32的精髓。同时我们也针对数据读取的实现提出了诸多的问题。本章就专门围绕文件数据读取功能的深化、细化、全面化以及具体实现上的方法、技巧展开探讨。我们将初步实现znFAT中的第二个用户级API函数—文件数据读取(znFAT_ReadData)。这个函数对簇项簇链等内部操作细节进行了封装,为使用者提供一个简单而强大的功能函数接口。它可以实现对文件任意位置上的任意数据长度的读取,解除了按整扇区或整簇进行数据读取的限制。最终我们将使用所谓“分步式”的方式来完成“SD卡音乐数码相框”实验。这个实验一直贯穿于前面几章,我们套用这个实验在讲解FAT32的相关内容与实现,估计大家已经渐渐对它失去了兴趣。在这章中,我们将引出新的实验—“汉字电子书”实验(后面章节还会出现更多内容丰富、精彩纷呈的实验)。好,下面就请大家来看本章的精彩内容吧。

第九章:数据游走 平台转移
在上一章的最后,振南为大家引出了“SD卡汉字电子书”实验。这到底是怎样的一个实验?又要实现什么功能?实验里包含了哪些技术和知识点?…… 别着急,在本章中我们将会就这些问题慢慢进行讲解。就像前文中“音乐数码相框”实验是为了阐述文件解析、数据读取等功能的实现方法一样,我们在这里所提出的“SD卡汉字电子书”实验同样是有目的的:借它向大家介绍文件数据定位功能的需求与实现方法。同时,在本章中我们将把FAT32的程序开发与测试工作从嵌入式平台转移到PC平台,这对于我们以后的研究与调试工作都具有很重要的意义,真正实现“交叉开发模式”。好,不再吊大家的胃口了,直接来看正文。

第十章:文件匹配 目录扩展
前面我们引出了PC平台,并在上面完成了汉字字形显示实验,进而对数据读取和定位函数进行了大数据量高强度的测试。但是我们似乎一直遗留着一个问题,不知道大家有没有发现。振南在这里提示一下:在前面的实验中,我们向Analyze_FDI函数传入的文件目录项的首地址是从哪来的?对!是从首目录扇区的固定位置上获取的,而这个位置是我们通过WinHex软件看到的。但是,实际拷入的文件所对应的文件目录项又怎么会只放在固定的位置上呢?而应该是被文件系统分配到某个适当的位置上去了。进一步来说,我们应该根据给定的文件名,来确定与之匹配的文件目录项的位置,进而完成文件信息解析及数据读取等操作。这样,我们将初步完成本书前面所说的“文件名与数据的映射”(第三章)。其实,在FAT32中,只要与文件名一沾边,那涉及的内容就多了。本章还是先来处理一些比较简单的情况,至于那些复杂的内容我们会在后面的章节再来详细讲解。

第十一章:逐层深入 寻踪及致
到现在,我们对FAT32的研究与实现已经到达了一定的地步。但是,细心的你一定已经发现问题:前面我们所实现的文件操作都是在根目录下进行的,如果文件在子目录中该如何处理呢?在本章中振南就来告诉大家如何深入到各级子目录。我们在前面已经有过对文件目录项的介绍,那么进入子目录就变得简单多了。因为目录也是以文件目录项的形式来存储的(前面我们说过,文件目录项不光可以用于描述文件,同时也可以描述目录)。但是文件与目录终归是有差异的。因此,针对于目录会有很多新的东西,可以说这是一个新的挑战。如果说FAT表中所描述的簇链对文件和目录的广度(宽度)进行了拓展,那么深层目录结构的引入就是在深度这个方向上的延伸。进入深层目录功能的实现,会使znFAT操作文件的能力进一步提升,可以满足一般情况下对文件操作的功能需求。好,我们来看本章的正文。

第十二章:真知实践 精彩展现
【实验专题,使用znFAT完成各种精彩实验

第十三章:数据记录 偷梁换柱
可以说,这一章是一个分水岭。在我们前面十几章的讲解中,一直都是在围绕读取操作来进行的,也就是说我们只使用到了扇区读取函数(znFAT_Device_Read_Sector),并没有涉及与扇区写入相关的内容。其实znFAT早期的开发工作到这里就基本完成了,并没有实现写入操作相关的功能,它仅仅是为了完成本书开篇时所说的电子制作—“音乐数码相框”实验而已。但是后来,有很多人看到我在研究FAT,经常会来问我有没有文件创建和数据写入的功能,想通过znFAT来满足他们数据记录的需求。我只能告诉他们暂时还没有实现这些功能。这种失落与无奈使我决定把FAT不断作下去,最终能形成一个完备的方案,实现文件操作的各种常用功能。
虽然当时znFAT还没有实现成型的数据写入功能,但还是使用一些变通,甚至是偷梁换柱的方法帮助一些人巧妙地实现了数据记录的功能。振南觉得有必要将这些方法介绍给大家。如果它们已经可以满足大家的需求,那我们也许就可以无须或者尽量少地去牵扯FAT了。因为FAT毕竟还是比较复杂的。当然,这些方法必然是有一定的局限性的,只能针对于个别的、要求不高的应用场合。要想实现真正意义上的,通用的文件创建、数据写入等功能,我们还是要规规矩矩地继续对FAT进行研究,一步一步地去实现我们想要的功能

第十四章:文件创建  更及核心
本章将实现文件与目录的创建。这其中会涉及到大量构造性的工作,比如对文件目录项、功能扇区数据,乃至FAT32的核心—FAT表与簇链的构造。如果说本书前面的章节只是对FAT32的观摩的话,那么从这一章开始,我们就要对它“动刀”了。这是危险的行为!因为只要稍有不慎就可能对数据造成破坏,甚至导致整个文件系统的崩溃。同时,在实现上,它也会比读取操作更难一些,因为我们要操作的数据对象不再是现成地存放在扇区中,而需要我们对其进行创造。在这里,我们变成了“造物主”,我们决定了文件系统的存亡。好,接下来,我们进入本章正文。

第十五章:数据写入 细微可见
在上一章中,我们实现了文件与目录的创建,更重要的是引出了空簇搜索与簇链构造。这是FAT32的核心,也是本章以及后续各章相关内容的重要基础。大家是否还记得在前面第十三章中我们使用“偷梁换柱”的方法所作的“数据采集与存储”实验。在这里,我们使用真正的“数据写入”函数(znFAT_WriteData)对实验进行重现和拓展。这个函数将没有任何的功能限制,可以对任意文件进行任意数据的写入。其实在具体的实现上,数据写入和前面讲过的数据读取是有相似之处的,大家可以对比阅读。另外,在本章中我们还将看到一个新的实验—“简易数码相机”,它会揭示出一些新的问题,为我们指明后面继续研究和努力的方向。好,我们进入正文。

第十六章:巧策良方 数据狂飙
上一章我们实现了数据的写入功能,但是最后却暴露出一个很严重的问题:数据的写入效率低下。导致这一问题的症结到底在哪?哪些因素会影响数据的写入效率?如何加以改善?这就是本章将要考虑的问题。为了从根本上使之得以解决,真正让数据“飙”起来,振南花了大量的时间和精力进行研究。在这个过程中,我深深地认识到了:要作一个高效、优秀的技术方案,仅仅照着文档协议按步就班地将其实现是远远不够的,这样作出来的功能也许可以满足基本的应用需求,但如果想拔高,通常会遇到“瓶颈”。这要求我们一定要有自己独到的关键技术或思想,让它独树一帜,表现不凡。在如何提高数据写入效率的问题上,振南独创性的提出了几种巧妙的策略和方案,比如簇链预建、CCCB算法、EXB算法等。它们到底是什么?且听振南为你细细讲解。

第十七章:模式变换 百花争艳
    通过上一章的努力,我们极大地提升了数据的写入效率。但是最后振南提到了“非实时模式”这一概念,还说它可以进一步提升数据写入效率。这是怎么回事?振南在本章中将给出解答。随后,znFAT的数据写入效率将达到极限,振南一直盼望的时刻终于到来了—“数据写速大比拼”,znFAT将与现有优秀方案(FATFSEFSL)进行较量,看看谁的数据写入速度更快!接下来,振南还将继续介绍“znFAT的工作模式”,包括其配置方法以及各种“工作模式”的特点。不同“工作模式”在资源占用量、数据读写效率等方面均有不同,从而使znFAT可以适用于不同的硬件平台,满足不同的应用需求。最后,振南将对不同“工作模式”下的数据写入效率进行对比,让大家明确各种“工作模式”的性能水平。好,废话少说,直入正题。

第十八章:创新功能 多元拓展
到这里,所有的基本功能均已实现,包括文件的打开、数据的读取、文件与目录的创建、数据的写入等等,而且我们还提出了一些原创性的核心机制和算法。现在,znFAT的功能与运行效率已经不可小觑。不过,这些也只是一个文件系统方案本应包含的最最基本的功能。实际的应用需求是多样而复杂的。这就要求我们要继续实现一些创新性、拓展性的功能。从某种意义上来说,这些功能或许更具有亮点,这不光表现在实现的技巧上,更多的是在设计思想上。你会发现,这些创新功能在代码实现上也许非常简单,但重点在于我们是否能想得到。在长期的应用与项目实践的过程中,在与广大使用者及爱好者的交流切磋中,振南总结了一些常用的扩展功能,如多文件、多设备、数据重定向等。在本章中,我们就对它们进行一一介绍。

第十九章:层递删截  通盘格空
在人们使用znFAT去实现一些定时周期性的数据存储功能时,有人又向我反馈了这样一个问题:“SD卡的容量终归是有限的,文件数据写满之后,我能不能把前面的数据或文件删掉,再继续写入数据呢?”这一问题揭示了znFAT在功能上的欠缺。我们还需要实现数据、文件和目录的删除功能,其中目录的删除较有难度,它将再一次向我们的脑细胞发起挑战,大家可以拭目以待。此时,振南要问一个问题:“如何清空磁盘上的所有数据?”有人会说:“znFAT不是有通配功能吗?你就一个个地去挨个删除就行了呗!”非也。在这种情况下,格式化将比删除来得更直接,更便捷。其实格式化不光可以清空磁盘,它还是我们基于FAT32进行各种文件操作的重要前提。它的工作就如同在磁盘上“画格子”,使其符合FAT32协议标准。但是现在对磁盘的格式化,我们都是借助计算机来完成的,znFAT本身并没有格式化功能。因此,格式化功能的实现将标志其在功能上进一步完备,自成体系。好,请看本章正文。

第二十章:突破短名  搞定长名
【对FAT32的长文件名进行讲解与实现

第二十一章:青涩果实 缤纷再现
【实验专题,使用znFAT完成精彩实验

第二十二章:设备驱动  根源所在
【深入讲解SD卡等存储设备的底层扇区读写驱动的实现与测试

相关帖子

沙发
caizhiwei| | 2013-6-14 12:06 | 只看该作者
顶顶顶,严重支持

使用特权

评论回复
板凳
hwl1023| | 2013-6-14 12:09 | 只看该作者
支持

使用特权

评论回复
地板
kmyft| | 2013-6-14 12:09 | 只看该作者
nb  顶下 不错

使用特权

评论回复
5
mbsxhk| | 2013-6-14 12:16 | 只看该作者
顶。。。。。。。。。。。。。。

使用特权

评论回复
6
王力斯| | 2013-6-14 12:16 | 只看该作者
期待。。。。。

使用特权

评论回复
7
依米| | 2013-6-14 12:42 | 只看该作者
期待

使用特权

评论回复
8
dirtwillfly| | 2013-6-14 14:29 | 只看该作者
期待,很赞

使用特权

评论回复
9
jack123e| | 2013-6-14 18:01 | 只看该作者
谁需要AM3359的开发板啊? 基于ARM Cortex-A8的TI AM3359处理器,主频720MHz - 板载512MByte DDR3 SDRAM、512MByte NAND Flash - 5路串口,1路RS485,千兆双网口,2*USB Host+1*USB OTG,LCD,CAN,TF卡,键盘等 - 支持24位RGB全彩色输出,50-pin FPC连接器 - 支持VGA,WiFi,摄像头输入,LVDS,3G无线通讯模块 - 支持Linux3.2.0,WinCE 7 及 Android 2.3操作系统
另外有飞思卡尔,ATMEL ,M3开发板 多款! 欢迎选购!还有承接项目外包。 联系腾讯Q号1067652973

使用特权

评论回复
10
zoomone| | 2013-6-14 19:47 | 只看该作者
支持!

使用特权

评论回复
11
快乐小小鱼| | 2013-6-14 21:20 | 只看该作者
虽然不懂,但是支持下!做技术的每个环节,就算看视很简单,要是深究,就有很多说不完的原因,这些才是关键啊!

使用特权

评论回复
12
znmcu|  楼主 | 2013-6-14 21:34 | 只看该作者
其实没什么不懂的,你只要想想怎么用单片机去读写SD卡上的文件。
znFAT遵循微软FAT32标准进行研发,在研发过程中流露出了大量的编程技巧、思想、心得,这些也都在书中有所体现。
整套系统使用纯C编写,书里对FAT32文件技术与C语言编程技术进行了深入全面剖析。

使用特权

评论回复
13
frlop| | 2013-6-14 22:04 | 只看该作者
顶!!!

使用特权

评论回复
14
沉默爱电子| | 2013-6-14 22:12 | 只看该作者
支持,出来的时候去买一本看看,学学。

使用特权

评论回复
15
lark100| | 2013-6-14 23:45 | 只看该作者

使用特权

评论回复
16
老老实实| | 2013-6-15 10:50 | 只看该作者
支持,加油啊。

使用特权

评论回复
17
老老实实| | 2013-6-15 10:50 | 只看该作者
出来一定买一本看看,4年的心思绝对值得收藏

使用特权

评论回复
18
reille| | 2013-6-15 12:25 | 只看该作者
24章,70万字,就为讲解fat32,是不是有点太繁琐了?

使用特权

评论回复
19
SunFans| | 2013-6-15 12:44 | 只看该作者
不错,顶上去……

使用特权

评论回复
20
znmcu|  楼主 | 2013-6-18 09:29 | 只看该作者
单单FAT32本身,写不了几十万字。
最重要的是,实现。。。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4474

主题

5195

帖子

33

粉丝