湖南工业大学本科毕业设计(论文)
25 WRITE_MULTIPLE_ BLOCK READ_OCR 接到本指令后,将连续写block长度的数据到自变量设定的地址,直到接到指令CMD12为止.(block长度由指令CMD16设定). 接到本指令后,Card将传送OCR数据. 58 59 CRC_ON_OFF 本指令是用来设定CRC 选项为ON或OFF.在SPI模式下,CRC的初始值设定为OFF.[CRC选项[bit=1]表示CRC ON;[CRC选项[bit=0]表示CRC OFF. SD卡有两个可选的通讯协议:SD模式和SPI模式。SD模式下传输速度比SPI模式快,由于我们采用的处理器S3C2440A带有SD卡控制组件,因此我们使用SD卡模式。下面列出读写流程图。
图2.9 SD卡读写流程图
11
结束读写扇区发送CMD7否发送CMD3否判断是否为SD卡?判断是否为MMC卡?发送CMD0初始化SD卡组件控制寄存器是是发送CMD2湖南工业大学本科毕业设计(论文)
2.3.2 FAT32文件系统读写函数模块
SD卡读写部分最终是完成SD卡的扇区读写进而为FAT32文件系统服务,FAT32文件系统包含四个部分。
1、保留扇区
位于最开始的位置。第一个保留扇区是引导区(分区启动记录)。它包括一个称为基本输入输出参数块的区域(包括一些基本的文件系统信息尤其是它的类型和其它指向其它扇区的指针),通常包括操作系统的启动调用代码。保留扇区的总数记录在引导扇区中的一个参数中。引导扇区中的重要信息可以被DOS和OS/2中称为驱动器参数块的操作系统结构访问。
2、FAT区域
它包含有两份文件分配表,这是出于系统冗余考虑,尽管它很少使用,即使是磁盘修复工具也很少使用它。它是分区信息的映射表,指示簇是如何存储的。
3、根目录区域
它是在根目录中存储文件和目录信息的目录表。在FAT32下它可以存在分区中的任何位置,但是在早期的版本中它永远紧随FAT区域之后。
4、数据区域
这是实际的文件和目录数据存储的区域,它占据了分区的绝大部分。通过简单地在FAT中添加文件链接的个数可以任意增加文件大小和子目录个数(只要有空簇存在)。然而需要注意的是每个簇只能被一个文件占有,这样的话如果在32KB大小的簇中有一个1KB大小的文件,那么31KB的空间就浪费掉了。
保留扇区在FAT32文件系统中非常重要,其主要信息如下表
表2.4 保留扇区结构表
12
湖南工业大学本科毕业设计(论文)
13
湖南工业大学本科毕业设计(论文)
介绍了保留扇区后接下来就是FAT表区了,FAT表与存储器各簇一一对应,即该存储器有多少扇区则FAT表就有多少项,对于FAT32文件系统每个表项为32Bit。
对于大文件,需要分配多个簇。同一个文件的数据并不一定完整地存放在磁盘中一个连续区域内,而往往会分成若干段,像链子一样存放。这种存储方式称为文件的链式存储。为了实现文件的链式存储,文件系统必须准备地记录哪些簇已经被文件占用,还必须为每个已经点用的簇指明存储后继内容的下一个簇的簇号,对文件的最后一簇,则要指明本簇无后继簇。这些都是由FAT表来保存的,FAT表的对应表项中记录着它所代
14
湖南工业大学本科毕业设计(论文)
表的簇的有关信息:诸如是否空,是否坏簇,是否已经是某个文件的尾簇等。以下为FAT16文件系统的FAT表结构
表2.4 保留扇区结构表
图3.0 FAT32文件读写流程图
有结束有无到结束簇找到起始簇号对应的FAT表项,找出下一簇号无从根目录区搜寻需要的文件名,得到起始簇号从保留扇区获取根目录区起始地址和FAT表起始地址2.3.3 WAV文件解码模块
IIS接口只接受PCM数据,因此我们必需从WAV文件中解码出PCM数据出来,
15