基于USB-Host的大容量數據采集系統的設計
引言
隨著(zhù)移動(dòng)數據存儲領(lǐng)域的日益擴大,在嵌入式系統中實(shí)現usb主機功能,以實(shí)現利用usb存儲設備進(jìn)行數據存儲的需求變得日益迫切。u盤(pán)作為新型移動(dòng)存儲設備,以體積小、速度高、抗震動(dòng)、通用性強的特點(diǎn)倍受青睞,因此,在數據采集系統中開(kāi)發(fā)出嵌入式usb主機控制u盤(pán)作為數據存儲器,將具有良好的實(shí)用價(jià)值和應用前景。
1 usb大容量存儲設備協(xié)議分析
基于usb的大容量數據采集系統的設計,主要是要實(shí)現嵌入式usb-host。要想設計出能直接讀寫(xiě)u盤(pán)的嵌入式usb-host,就必須理解usb大容量存儲設備協(xié)議。目前usb大容量存儲設備軟件結構如圖1所示。

圖1 usb大容量存儲設備軟件結構示意圖 圖1中,虛線(xiàn)左邊部分是主機的驅動(dòng)程序結構,也是嵌入式usb-host所要實(shí)現的。左邊最頂層是fat文件系統層api,用于提供給用戶(hù)訪(fǎng)問(wèn)存儲設備的方法。
u盤(pán)中的數據都是以文件格式存儲的,fat16因具有高度兼容性而被廣泛應用于移動(dòng)存儲設備中。這里簡(jiǎn)要分析一下fat16文件系統結構和存儲空間的組織原則。
(1)fat16文件系統結構
fat格式的磁盤(pán)大致可以分5個(gè)部分:mbr區、dbr區、fat區、fdt區和data區。
mbr區:又稱(chēng)主引導記錄,其后為64字節的dpt(disk partition table,磁盤(pán)分區表)。由于不需要從u盤(pán)啟動(dòng),且u盤(pán)就一個(gè)分區,所以u盤(pán)上沒(méi)有這個(gè)數據區。
dbr區:即操作系統引導記錄區,通常占用分區的第o扇區,共512字節,由跳轉指令、bpb、結束標志幾部分組成。
fat區:存放文件分配表。文件分配表是一一對應于數據區簇號的列表,反映了所有簇的使用情況。每個(gè)表項單元的大小決定了fat的類(lèi)型,比如fat16的表項單元為16位。fat表一般都有一個(gè)備份。
fdt區:存放著(zhù)文件目錄表,位于備份fat表之后。fdt由32位的目錄項線(xiàn)性構成,記錄著(zhù)根目錄下每個(gè)文件(子目錄)的起始單元、屬性等。fdt大小為32個(gè)扇區,最多可以保存512個(gè)目錄項。
data區:是真正意義上的數據存儲的地方,位于fdt之后,占據硬盤(pán)上的大部分數據空間。
(2)fat16的存儲空間組織原則
當磁盤(pán)空間格式化為fat分區時(shí),fat文件系統就將這個(gè)分區當成整塊可分配的區域進(jìn)行規劃,以便數據的存儲。fat將磁盤(pán)空間以一定數目的扇區為單位進(jìn)行劃分,這樣的單位稱(chēng)為簇。通常情況下,每扇區512字節的原則是不變的。簇的大小一般是2n(n為整數)個(gè)扇區的大小(每個(gè)簇的最大存儲空間為32
kb)。一般采用邏輯塊lba(logical block addressing)尋址方式。
圖1虛線(xiàn)左邊中間的ufi/ata驅動(dòng)層將應用程序的訪(fǎng)問(wèn)轉換成ufi或ata命令/數據格式,與外部存儲設備之間按照子規范ufi或ata的定義進(jìn)行命令/狀態(tài)/數據的交換;最底層則是usb傳輸驅動(dòng),負責將上層的ufi/ata數據發(fā)送到usb總線(xiàn)上以及接收從存儲設備返回的狀態(tài)/數據。cbi/bulk-only/ata/ufi是usb
mass storage類(lèi)規范中4個(gè)獨立的子類(lèi)規范的簡(jiǎn)稱(chēng)。前兩個(gè)子規范定義了數據/命令/狀態(tài)在usb上的傳輸方法。bulk-only傳輸規范僅使用bulk端點(diǎn)傳送數據/命令/狀態(tài),cbi傳輸規范則使用control/bulk/interrupt三種類(lèi)型的端點(diǎn)進(jìn)行數據/命令/狀態(tài)傳送。后兩個(gè)子規范則定義了存儲介質(zhì)的操作命令。ata命令規范用于硬盤(pán),ufi命令規范是針對usb移動(dòng)存儲而制定的。
2 嵌入式usb-host設計
2.1 硬件設計
系統采用增強型8051內核的單片機stc89c516rd+作為中央處理芯片,選用南京沁恒電子公司的ch375s作為usb主機控制芯片。
stc89c516rd+具有64 kb的flash程序存儲器,1280字節的ram(256字節的內部ram和1kb的外部ram),支持在系統/在應用可編程(isp,iap);ch375s是一款符合usb1.1協(xié)議規范的usb總線(xiàn)的通用接口芯片,支持usb-host主機方式和usb-device/slave設備方式。ch375s具有8位數據總線(xiàn)和讀、寫(xiě)、片選控制線(xiàn)以及中斷輸出,因此ch375s作全速u(mài)sb-host主機接口時(shí),外圍元器件只需要晶振和電容,就可以方便地掛接到單片機/dsp/mcu/mpu等控制器的系統總線(xiàn)上??紤]到讀/寫(xiě)u盤(pán)或移動(dòng)硬盤(pán)時(shí)一般都是以扇區模式進(jìn)行的,所以要加磁盤(pán)數據緩沖區和文件數據緩沖區(都是512字節的整數倍),并且緩沖區越大,執行的效率越高,所以外擴了32
kb的ram。
usb-host電路如圖2所示。

①創(chuàng )建文件。在fdt中申請新目錄項。
②寫(xiě)文件。當寫(xiě)一新文件時(shí),需在fat表中查找未使用的簇,并將該簇號寫(xiě)入文件對應目錄數據結構中的起始簇號位置。當此文件長(cháng)度大于一簇時(shí),還需在fat表中對應的起始簇號位置填入下一可用簇的簇號,直到文件的最后一簇(fat表中的相應位置填ffff)。若磁盤(pán)有備份fat,則須在備份fat表的相應位置填入正確的內容。
③刪除文件。除了將fdt中對應的目錄項置相應標志外,還要修改fat表及備份fat表。將此文件使用的簇號位置清0,表示此簇當前未被使用。
由于在fat16中子目錄被視為特殊的文件,對其操作類(lèi)似于文件操作,所以不再贅述。
構建的fat16文件系統對用戶(hù)提供文件級api函數,如ch375_creat_file()、ch375_write_file()、ch375_delete_file()等,當執行文件級api函數時(shí),將調用seck_empty_cluster()尋找一個(gè)空簇、link_cluster_list()建立簇鏈、seck_sector()定位文件指針等中間函數。這些中間函數在調用ch375s專(zhuān)用于海量存儲設備類(lèi)對應的命令,如set_usb_mode、disk_read、disk_write等。下面以創(chuàng )建adc.txt,并向其中寫(xiě)入a/d采樣數據為例,其工作流程如圖3所示。
用fat16文件系統存儲文件時(shí)最小單元為簇。即使一個(gè)很小的文件也會(huì )占用一簇,所以,為了節約存儲空間,在圖3中將創(chuàng )建同名文件并向其中寫(xiě)入數據轉換為向原文件追加數據。

利用已設計好的嵌入式usb-host搭建起大容量數據采集系統,系統的框圖如圖4所示。

溫度傳感器采用ds18b20。它是單總線(xiàn)數字溫度傳感器,測量范圍為-55~+125℃,可編程9~12位a/d轉換精度,測溫分辨率可達o.0625℃。液晶采用tm320240eccw,它是320×240點(diǎn)陣液晶,顯示控制芯片是sed1335,既可以以文本模式顯示所測溫度數據,也可以自建平面坐標以曲線(xiàn)模式顯示溫度數據。外擴了4×5鍵盤(pán),用于設定采集的時(shí)間間隔、時(shí)間長(cháng)度;系統所允許的高、低溫容限;設定采集時(shí)的時(shí)間以及輸入自己想查看數據的存儲區域。鍵盤(pán)用8279管理,目的是減輕單片機的負擔。因為單片機處理溫度采集及溫度數據在液晶上顯示時(shí)已經(jīng)耗去一些時(shí)間,再加上定時(shí)和不定時(shí)的讀/寫(xiě)u盤(pán),負荷已經(jīng)很重了,所以鍵盤(pán)掃描與處理交給8279來(lái)做。單片機采用查詢(xún)方式查詢(xún)8279的中斷。
驅動(dòng)程序包括液晶驅動(dòng)、ds18820驅動(dòng)和8279驅動(dòng)。其中主要的工作是液晶驅動(dòng)程序的編寫(xiě)。液晶驅動(dòng)包括初始化液晶、讀寫(xiě)參數子程序、寫(xiě)命令子程序、建坐標子程序、繪點(diǎn)子程序、漢字寫(xiě)入子程序等。液晶在系統初始化和對u盤(pán)初始化與枚舉時(shí)顯示提示信息,在采集過(guò)程中,以曲線(xiàn)模式顯示溫度數據。
結語(yǔ)
基于ch375s實(shí)現的usb-host接口,其硬件結構便于在其他開(kāi)發(fā)平臺上擴充,其核心的文件層協(xié)議棧采用標準的c語(yǔ)言編寫(xiě),具有良好的移植性。類(lèi)似的基于usb的大容量數據采集方案已用于輕軌鐵路、無(wú)紙記錄儀的數據存儲系統中。隨著(zhù)usb
otg時(shí)代的到來(lái),基于usb的大容量數據采集將會(huì )有非常廣闊的應用前景。
評論