振南的znFAT
----单片机上的单片机上的单片机上的FAT32FAT32文件系文件系统
统第三章谁格式化了我的SD 卡
从这一章开始,我们正式接触FA T32文件系统。我们不会单纯讲枯燥无味的FA T32文件系统协议,振南认为这样于你于我都不是什么好事。我最不喜欢死板地陈述协议,估计你也不会喜欢这种条条框框的方式。所以我们还是从实际应用出发,结合我们的日常经验来讲,这样会事半功倍。
SD 卡,我想,只要你用过数码相机、智能手机等设备,就一定接触过。只要你接触过,一切就好办了!我们就结合SD 卡来讲解FAT32。
第一节关于SD 卡
1、为什么选用SD 卡
我们研究FAT32,必然要选择某种存储设备。因为FAT32不是孤立存在的,必须以某种存储设备为载体,就像我们思想不能凭空存在,必须信赖于头脑这个真实的硬件一样。那么选取哪种存储设备呢?这也是振南在研究FA T32初期提出的问题。综合各种考虑,它应该满足以下几点要求:①易于购买。这一
点是显而易见的,如果它根本就不存在,比如还没有被发明出来;如果理论上可以得到,但事实上很难实现,比如它只有美国的某一个特殊机构在使用;如
果它就在身边,触手可及,但价格很高,根本买不起,更不会忍心拿它来作实验等等,这些情况都会对我们的实验造成不便。总之,我们要从身边最常见的存储设备中选择。作最坏的打算,就算我们实验中把它烧毁了,我们还可以很方便的再买一个,继续我们的研究。
②资料齐全,驱动易于编写。也许您也有过这种情况,一个看起来很不错的硬件,比如一个显示屏、一个芯片等等,但苦于不到相关资料,而让它永远躺在那里睡大觉。所以我们选择的存储设备一定要有很齐全的资料,这样我们才能有所参考,顺利的编写驱动程序。
③封装简单,易于焊接。存储设备放在那里,自己是不会工作的,都要有相应的电路才可以。这就需要我们作PCB,即印制电路板,或者用万用板来焊接。作PCB时,我们是需要为它绘制封装的,当然它的封装越简单越好。同时,如果存储设备不方便焊接,也会对我们的实验造成困难。比如一些引脚很密的FLASH芯片,或者引脚位于底部,只有用专用的焊接设备才能焊接的存储设备。
④存储容量大于FA T32的最低要求。FA T32不支持容量小于512M的分区,因此如果你买了一个128M或256M的存储设备,仍然无法研究FA T32文件系统,因为你根本无法把它们格式化为FAT32。
⑤接口简单,易于接线。其实我们接触最多的还是硬盘,
当然现在比较流行的SATA硬盘接口由于采用串行方式,所以接口比较简单,没有几条线。但老式的IDE硬盘,接口针数就很多了。这样不方便我们接线,同时由于单片机或微处理器的IO毕竟有限,所以这种接口较为复杂,接线较多的存储设备也不适用于我们的实验。
除了上面讲到的这些因素,其实还有很多,这里就不再一一列举了。下面我们来看看几种现在比较流行存储设备,经过比较,您就知道我们为什么选择SD卡了。如图3.1,当今流行的存储设备。
图3.1当今流行的存储设备
这些都是现在最为流行的存储设备,这意味着它们都可以很方便购买到。但它们却有各自的不足之处:
U盘:USB接口,驱动很难编写,通常需要加USB的主机控制器,提高了我们实验的成本和难度。
XD卡:专用于数码相机,相关资料比较少,所以不了
解应该如何来写它的驱动。其次,它的价格较高。
FLASH芯片:FLASH常被直接焊接在PCB上。由于较大容量的FLASH芯片,引脚通常很多,而且较为密集,所以对手工焊接造成困难。同时,它也不能被计算机直接读取,需要有相应控制器的配合,所以要将它进行格式化比较困难。
硬盘:常用于计算机中,容量可以非常大。但是它接口较为复杂。其实最不方便的是,它通常需要24V电源供电,使用不便而且很危险。
剩下的就是SD卡与CF卡了。SD卡的优点当然是不言而喻的:易于购买、价格便宜、易于焊接、接口简单、资料齐全等等。(其实这也是众多产品中使用SD卡的原因!)那有人要问:“既然SD卡被选为
最佳存储设备,那还要提到CF 卡干什么?”这里可以稍带着说一下,对CF卡了解的人可能知道,CF卡的存取速度是比较快的,同时容量也很大,全称是“Compact Flash Card”,俗称是固态硬盘。虽然它的接口针数比较多,但其实我们用单片机驱动它,只用到其中的几根而已,驱动也很简单。所以除了SD卡,我们还选择了CF卡。那么为什么要用到两种存储设备?在这里振南先卖个关子,在后面的章节中,大家自会明白这样作的用意。
下面的讲解,我们还是以SD卡为载体来进行的。
2、SD卡的存储结构
我们用SD卡当然是用来存储数据的,文件系统就是用来组织这些数据用的。那么SD卡上的数据是如何存储的呢?数据是一个字节一个字节顺序存储的,可以操作任何一个字节?还是这些字节被组织为基本的数据单元,成块的存储,只能对块进行操作?或者是其它的方式?如图3.2所示,SD卡上的数据存储方式。
图3.2SD卡上的数据存储方式
格式化命令format参数确切的答案是:SD卡上的数据是以数据块的方式进行存储的。这个数据块我们就称之为扇区!这是一个极为重要的概念。其实不光SD卡是这样,像硬盘、U盘等等这些存储设备中,也是这样来存储数据的。
从图3.2中我们看到一个扇区中包含了若干个字节,通常是512字节,扇区是最基本的读写单位,也就是说,我们不可能单独操作扇区中的某个字节,就算我们要修改扇区中的某个字节,也要把整个扇区都读出来,修改完后再按扇区写回去。可能您会问了,为什么要以扇区为单位,难道按字

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。