基于CF卡的特定FAT文件系统的设计与实现
扫描二维码
随时随地手机看文章
1、引言
随着测试与信息技术的不断发展,测试采集系统的采集速度、处理能力以及存储容量逐渐成为衡量其性能的重要指标。随着数据采集精度的不断提高,需要存储的数据量也成倍的在增长,并且由于其实时性要求依然存在,因此,如何开发出大容量、高速的外挂移动存储设备成为测试系统发展的一个重要方向。
此外,对于部分有特殊要求的室外采集装置,其数据处理要求并不高,大部分设备只要求能够及时将数据进行连续存储,并能够保证在断电之后数据不丢失,且便于拆卸、转移,之后将数据存储设备取出,连接到后端的一些专用数据处理设备上进行数据的后期处理。对于这类存储采集装置,在具体的存储方案上无外乎磁介质、光介质和固体介质几种,而由于光介质的存储方式精密程度和对环境的要求都较高,因此采用得很少。磁介质由于其容量大的特点占得了先机,之前采用磁介质存储的方案较多。但是近年来,随着固体介质技术的不断发展,其容量已经与磁介质渐渐接近,并且基本上可以满足部分需求。本文所采用的CF卡就是其中一种工业上采用较多的固体存储介质方案。此外,在本系统中,采用的是FPGA+软核CPU作为控制核心。在存储的数据文件方面,则采用了可以与普通PC相兼容的经过了特殊处理的FAT32文件系统。
2、CF卡的结构和工作原理
CompactFlash技术是由CF协会(CompactFlash Association)提出的一种与PC机ATA接口标准兼容的技术。CompactFlash卡(简称CF卡)主要由两大部分构成:内部控制器和闪存模块,如图1所示,此外还包含一个双口RAM作为数据缓冲。CF卡的存储模块基本上都使用NAND型闪存,内部控制器用来实现CF卡与主机的接口以及控制数据的传输,使外围电路设计大大简化。实际上,这个控制器起到了一种协议转换的作用,即把对各种不同类型存储媒介的读写转化成了对通用控制器的访问,这样不同的CF卡都可以按照统一的接口规范来操作,而不用担心兼容性问题。此外,由于其完全符合ATA接口规范,使得对基于CF卡的存储系统的开发变得更加方便。
CF卡的读写方式有三种:PC Card Memory模式、PC Card I/O模式以及True IDE模式。PC Card模式与PCMCIA标准兼容,True IDE模式与ATA标准兼容。三种方式相比较而言,在True IDE模式下,CF卡与主机通信的信号最少,硬件接口最简单、软件易于实现,并且由于IDE接口协议较为普及,通常开发周期短一些,且应用更为成熟。
在外部看来,CF卡的数据按照扇区的方式进行存储,其扇区寻址有两周方式:物理寻址方式(CHS)和逻辑寻址方式(LBA),而这两者之间的关系为:
LBA地址=(柱面号×磁头数+磁头号)×扇区数+扇区号-1
由于CF卡没有机械结构,因此CF卡的扇区寻址更适宜采用没有磁头和磁道转换操作的逻辑寻址方式,尤其在访问连续扇区时,操作速度相比物理寻址方式而言要快得多。
此外,CF卡还具有体积小、可靠性高(固态存储)、功耗低、非易失性等优点,并且随着存储技术的不断发展,CF卡的容量已经越来越大,64GB的CF卡已经由三星公司在2006年实现市场商品化,CF卡越来越多地成为工业存储尤其是信号测试采集过程中的首选存储设备。本系统采用存储介质是Sandisk公司1GB大小的Extreme III CF卡,支持最大的读写速度均为20MB/s,完全可以满足一般的实时数据采集需求。
3、系统硬件设计
本系统的硬件框图如图2所示。系统外部数据源通过数据缓冲控制器,被不间断地写入作为数据缓冲的双口RAM中,当缓冲区数据到达一定数量之后,数据缓冲控制器通过与处理器的通信,发起DMA传输,由DMA控制器来独立完成数据从缓冲区到CF卡的传输。
Nios II软核处理器是Altera公司推出的第二代FPGA嵌入式处理器,它是一款32位RISC嵌入式处理器。它最突出的优点就是可以支持多达60多个外设选项,并且允许开发者自己制定外设模块,使得开发者能够在更广的范围内选择或者自己设计开发更加合适的外设,以获得最合适的处理器、外设和接口组合,而不必为根本用不到的功能而去支付硬件开销,以达到最佳的性价比。[!--empirenews.page--]
在Nios II上还有另外一个非常重要的概念,即Avalon数据总线结构。Avalon总线是为SOPC环境而设计的,是一种相对简单的总线结构,主要用于连接片内处理器与外设,以构成SOPC系统,互连逻辑由PLD内部的逻辑单元构成。总线描述了主从设备间的端口连接关系以及设备间通信的时序关系。总线拥有多种传输模式,以适应不同外设的要求,其基本的传输模式是在一个主外设和一个从外设之间进行单字节、半字或字(8、16或32位)的传输。总线设有特定的端口长度对齐功能,使得不同数据端口长度的主从端之间进行传输不存在任何问题,更加方便了开发者的使用。此外,利用DMA控制器组件,使得DMA技术可以非常方便地应用于Nios系统。在DMA模式下传输数据时,传输的数据量越大,则传输发起所耗费的运算量则相对越小,传输效率也越高。
4、特定FAT32文件系统的结构与实现
为了使用和管理上的方便,将数据信息以文件的形式存放在存储介质上,加上特有的逻辑组织关系,就构成了文件系统。在PC电脑+Windows操作系统的模式下,最为普遍的就是FAT文件系统。随着数据量的不断加大,FAT文件系统也由最初的FAT12发展到了FAT32,最大可以支持4GB的单个文件,理论上最大可以支持2TB的分区。
FAT32文件系统的逻辑结构如图3所示。由于在FAT32文件系统中,文件存放采用链式结构,链表存储在FAT表中,因此实现了文件实际数据的不连续存放(最小存储单位内是连续的)。虽然这种链式结构使得文件在管理操作上实现了动态反复灵活分配存储空间的目的,但是由于过多的寻址也同时降低了系统对于文件读写的性能。在很多实际的测试系统中,数据的实时存
储性能目标更为重要,因此完全可以将FAT32系统简化,使得具体的文件数据在用户数据区中连续存放,而系统在操作文件的时候,只需要获取文件的第一个数据地址(簇号)以及文件的大小,即可进行连续地址读写操作,省去了不断查找簇链的运算开销。并且,由于实际数据在物理地址上连续存放,更使得DMA可以发挥其特有的优势,一次性的传输数据量可以大大提高,读写操作得以更加高效的执行。
在具体的操作上,主要问题在于如何定位文件的第一个数据簇号以及如何获取文件的大小。作者在Altera公司提供的Nios II IDE编程环境中,采用C语言成功编写相关程序。程序运行流程如图4所示。
5、总结
本文给出了一种可以实际应用的基于CF卡的特定简化版FAT32文件系统,以及该文件系统所应用的硬件平台。系统存储介质不仅仅拥有长期保存、便于携带的特点,而且通过简化文件系统结构,提高了数据存储操作的速率和效率,并且该文件系统完全可以直接被Windows操作系统所识别,方便数据的后续操作处理。