基于CF卡的特定FAT文件系統(tǒng)的設計與實現(xiàn)
1、引言
隨著測試與信息技術的不斷發(fā)展,測試采集系統(tǒng)的采集速度、處理能力以及存儲容量逐漸成為衡量其性能的重要指標。隨著數(shù)據(jù)采集精度的不斷提高,需要存儲的數(shù)據(jù)量也成倍的在增長,并且由于其實時性要求依然存在,因此,如何開發(fā)出大容量、高速的外掛移動存儲設備成為測試系統(tǒng)發(fā)展的一個重要方向。
此外,對于部分有特殊要求的室外采集裝置,其數(shù)據(jù)處理要求并不高,大部分設備只要求能夠及時將數(shù)據(jù)進行連續(xù)存儲,并能夠保證在斷電之后數(shù)據(jù)不丟失,且便于拆卸、轉移,之后將數(shù)據(jù)存儲設備取出,連接到后端的一些專用數(shù)據(jù)處理設備上進行數(shù)據(jù)的后期處理。對于這類存儲采集裝置,在具體的存儲方案上無外乎磁介質(zhì)、光介質(zhì)和固體介質(zhì)幾種,而由于光介質(zhì)的存儲方式精密程度和對環(huán)境的要求都較高,因此采用得很少。磁介質(zhì)由于其容量大的特點占得了先機,之前采用磁介質(zhì)存儲的方案較多。但是近年來,隨著固體介質(zhì)技術的不斷發(fā)展,其容量已經(jīng)與磁介質(zhì)漸漸接近,并且基本上可以滿足部分需求。本文所采用的CF卡就是其中一種工業(yè)上采用較多的固體存儲介質(zhì)方案。此外,在本系統(tǒng)中,采用的是FPGA+軟核CPU作為控制核心。在存儲的數(shù)據(jù)文件方面,則采用了可以與普通PC相兼容的經(jīng)過了特殊處理的FAT32文件系統(tǒng)。
2、CF卡的結構和工作原理
CompactFlash技術是由CF協(xié)會(CompactFlash Association)提出的一種與PC機ATA接口標準兼容的技術。CompactFlash卡(簡稱CF卡)主要由兩大部分構成:內(nèi)部控制器和閃存模塊,如圖1所示,此外還包含一個雙口RAM作為數(shù)據(jù)緩沖。CF卡的存儲模塊基本上都使用NAND型閃存,內(nèi)部控制器用來實現(xiàn)CF卡與主機的接口以及控制數(shù)據(jù)的傳輸,使外圍電路設計大大簡化。實際上,這個控制器起到了一種協(xié)議轉換的作用,即把對各種不同類型存儲媒介的讀寫轉化成了對通用控制器的訪問,這樣不同的CF卡都可以按照統(tǒng)一的接口規(guī)范來操作,而不用擔心兼容性問題。此外,由于其完全符合ATA接口規(guī)范,使得對基于CF卡的存儲系統(tǒng)的開發(fā)變得更加方便。
CF卡的讀寫方式有三種:PC Card Memory模式、PC Card I/O模式以及True IDE模式。PC Card模式與PCMCIA標準兼容,True IDE模式與ATA標準兼容。三種方式相比較而言,在True IDE模式下,CF卡與主機通信的信號最少,硬件接口最簡單、軟件易于實現(xiàn),并且由于IDE接口協(xié)議較為普及,通常開發(fā)周期短一些,且應用更為成熟。
在外部看來,CF卡的數(shù)據(jù)按照扇區(qū)的方式進行存儲,其扇區(qū)尋址有兩周方式:物理尋址方式(CHS)和邏輯尋址方式(LBA),而這兩者之間的關系為:
LBA地址=(柱面號×磁頭數(shù)+磁頭號)×扇區(qū)數(shù)+扇區(qū)號-1
由于CF卡沒有機械結構,因此CF卡的扇區(qū)尋址更適宜采用沒有磁頭和磁道轉換操作的邏輯尋址方式,尤其在訪問連續(xù)扇區(qū)時,操作速度相比物理尋址方式而言要快得多。
此外,CF卡還具有體積小、可靠性高(固態(tài)存儲)、功耗低、非易失性等優(yōu)點,并且隨著存儲技術的不斷發(fā)展,CF卡的容量已經(jīng)越來越大,64GB的CF卡已經(jīng)由三星公司在2006年實現(xiàn)市場商品化,CF卡越來越多地成為工業(yè)存儲尤其是信號測試采集過程中的首選存儲設備。本系統(tǒng)采用存儲介質(zhì)是Sandisk公司1GB大小的Extreme III CF卡,支持最大的讀寫速度均為20MB/s,完全可以滿足一般的實時數(shù)據(jù)采集需求。
3、系統(tǒng)硬件設計
本系統(tǒng)的硬件框圖如圖2所示。系統(tǒng)外部數(shù)據(jù)源通過數(shù)據(jù)緩沖控制器,被不間斷地寫入作為數(shù)據(jù)緩沖的雙口RAM中,當緩沖區(qū)數(shù)據(jù)到達一定數(shù)量之后,數(shù)據(jù)緩沖控制器通過與處理器的通信,發(fā)起DMA傳輸,由DMA控制器來獨立完成數(shù)據(jù)從緩沖區(qū)到CF卡的傳輸。
Nios II軟核處理器是Altera公司推出的第二代FPGA嵌入式處理器,它是一款32位RISC嵌入式處理器。它最突出的優(yōu)點就是可以支持多達60多個外設選項,并且允許開發(fā)者自己制定外設模塊,使得開發(fā)者能夠在更廣的范圍內(nèi)選擇或者自己設計開發(fā)更加合適的外設,以獲得最合適的處理器、外設和接口組合,而不必為根本用不到的功能而去支付硬件開銷,以達到最佳的性價比。[!--empirenews.page--]
在Nios II上還有另外一個非常重要的概念,即Avalon數(shù)據(jù)總線結構。Avalon總線是為SOPC環(huán)境而設計的,是一種相對簡單的總線結構,主要用于連接片內(nèi)處理器與外設,以構成SOPC系統(tǒng),互連邏輯由PLD內(nèi)部的邏輯單元構成??偩€描述了主從設備間的端口連接關系以及設備間通信的時序關系??偩€擁有多種傳輸模式,以適應不同外設的要求,其基本的傳輸模式是在一個主外設和一個從外設之間進行單字節(jié)、半字或字(8、16或32位)的傳輸??偩€設有特定的端口長度對齊功能,使得不同數(shù)據(jù)端口長度的主從端之間進行傳輸不存在任何問題,更加方便了開發(fā)者的使用。此外,利用DMA控制器組件,使得DMA技術可以非常方便地應用于Nios系統(tǒng)。在DMA模式下傳輸數(shù)據(jù)時,傳輸?shù)臄?shù)據(jù)量越大,則傳輸發(fā)起所耗費的運算量則相對越小,傳輸效率也越高。
4、特定FAT32文件系統(tǒng)的結構與實現(xiàn)
為了使用和管理上的方便,將數(shù)據(jù)信息以文件的形式存放在存儲介質(zhì)上,加上特有的邏輯組織關系,就構成了文件系統(tǒng)。在PC電腦+Windows操作系統(tǒng)的模式下,最為普遍的就是FAT文件系統(tǒng)。隨著數(shù)據(jù)量的不斷加大,FAT文件系統(tǒng)也由最初的FAT12發(fā)展到了FAT32,最大可以支持4GB的單個文件,理論上最大可以支持2TB的分區(qū)。
FAT32文件系統(tǒng)的邏輯結構如圖3所示。由于在FAT32文件系統(tǒng)中,文件存放采用鏈式結構,鏈表存儲在FAT表中,因此實現(xiàn)了文件實際數(shù)據(jù)的不連續(xù)存放(最小存儲單位內(nèi)是連續(xù)的)。雖然這種鏈式結構使得文件在管理操作上實現(xiàn)了動態(tài)反復靈活分配存儲空間的目的,但是由于過多的尋址也同時降低了系統(tǒng)對于文件讀寫的性能。在很多實際的測試系統(tǒng)中,數(shù)據(jù)的實時存
儲性能目標更為重要,因此完全可以將FAT32系統(tǒng)簡化,使得具體的文件數(shù)據(jù)在用戶數(shù)據(jù)區(qū)中連續(xù)存放,而系統(tǒng)在操作文件的時候,只需要獲取文件的第一個數(shù)據(jù)地址(簇號)以及文件的大小,即可進行連續(xù)地址讀寫操作,省去了不斷查找簇鏈的運算開銷。并且,由于實際數(shù)據(jù)在物理地址上連續(xù)存放,更使得DMA可以發(fā)揮其特有的優(yōu)勢,一次性的傳輸數(shù)據(jù)量可以大大提高,讀寫操作得以更加高效的執(zhí)行。
在具體的操作上,主要問題在于如何定位文件的第一個數(shù)據(jù)簇號以及如何獲取文件的大小。作者在Altera公司提供的Nios II IDE編程環(huán)境中,采用C語言成功編寫相關程序。程序運行流程如圖4所示。
5、總結
本文給出了一種可以實際應用的基于CF卡的特定簡化版FAT32文件系統(tǒng),以及該文件系統(tǒng)所應用的硬件平臺。系統(tǒng)存儲介質(zhì)不僅僅擁有長期保存、便于攜帶的特點,而且通過簡化文件系統(tǒng)結構,提高了數(shù)據(jù)存儲操作的速率和效率,并且該文件系統(tǒng)完全可以直接被Windows操作系統(tǒng)所識別,方便數(shù)據(jù)的后續(xù)操作處理。