在一些特別的科學(xué)研究和工程應(yīng)用領(lǐng)域,需要采用高幀頻、大面陣的CCD相機(jī)以獲取高質(zhì)量的圖像數(shù)據(jù),用于對(duì)變化較快的觀測(cè)對(duì)象的運(yùn)動(dòng)軌跡及其變化特性分析或?qū)崟r(shí)計(jì)算。由此可產(chǎn)生高達(dá)50MB/s以上的實(shí)時(shí)數(shù)據(jù)流,需要持續(xù)地實(shí)時(shí)記錄,以便于事后分析。
本文介紹中科院光電技術(shù)研究所針對(duì)高速實(shí)時(shí)圖像記錄任務(wù)的要求,專(zhuān)門(mén)設(shè)計(jì)開(kāi)發(fā)的VxWorks嵌入式操作系統(tǒng)下的高速嵌入式SCSI硬盤(pán)陣列記錄系統(tǒng)。
在本系統(tǒng)中采用的高幀頻CCD數(shù)字相機(jī)其工作幀頻為:200幀/秒,分辨率為:532×516像素,8bit灰度級(jí),有效數(shù)據(jù)率約為55MB/s。要求能對(duì)其長(zhǎng)時(shí)間地持續(xù)記錄,且不允許中間有丟幀現(xiàn)象。
實(shí)際工程項(xiàng)目中,在技術(shù)上采用了嵌入式計(jì)算機(jī)和Vxworks嵌入式操作系統(tǒng)以及SCSI硬盤(pán)陣列系統(tǒng),成功地完成了上述任務(wù)。
1 系統(tǒng)硬件結(jié)構(gòu)
1.1 硬件框圖
硬件框圖如圖1所示。
整個(gè)系統(tǒng)在硬件上由嵌入式計(jì)算機(jī)、CCD相機(jī)、PCI采集卡、SCSI控制卡及SCSI硬盤(pán)陣列組成。系統(tǒng)基于PCI總線架構(gòu)。目前使用32位33MHz的PCI總線,可實(shí)現(xiàn)約132MB/s的數(shù)據(jù)傳輸率。以后將使用64位66MHz的PCI總線,以達(dá)到更高的數(shù)據(jù)傳輸率。來(lái)自CCD相機(jī)的高速數(shù)據(jù)流經(jīng)PCI采集卡交叉緩沖存儲(chǔ)后送往PCI總線,SCSI控制卡與PCI采集卡在PCI總線上通過(guò)DMA方式直接交換數(shù)據(jù)。記錄存儲(chǔ)介質(zhì)的接口采用SCSI總線接口。
1.2 SCSI總線接口
SCSI(Small Computer System Interface)小型計(jì)算機(jī)系統(tǒng)接口是一種連接主機(jī)與外圍設(shè)備的接口,支持包括磁盤(pán)驅(qū)動(dòng)器、磁帶機(jī)、光驅(qū)、掃描儀在內(nèi)的多種設(shè)備。它由SCSI控制器進(jìn)行數(shù)據(jù)操作。SCSI控制器相當(dāng)于一塊小型CPU,有自己的命令集和緩存。SCSI 接口是智能化的,可以彼此通信而不增加CPU 的負(fù)擔(dān)。當(dāng)向SCSI硬盤(pán)讀寫(xiě)數(shù)據(jù)時(shí),主機(jī)CPU只需向SCSI控制卡發(fā)出讀寫(xiě)命令,SCSI控制卡會(huì)自動(dòng)處理并以DMA方式執(zhí)行相應(yīng)的讀寫(xiě)操作,完全不需要主機(jī)的干預(yù),使主機(jī)和SCSI卡可以并行地工作。與IDE接口相比,速度、性能和穩(wěn)定性都要比IDE好得多,具體區(qū)別如表1。
SCSI接口幾經(jīng)變革,傳輸率、支持設(shè)備等功能都有大幅度的改進(jìn)。在速度上,SCSI接口規(guī)范隨時(shí)間有表2所示的規(guī)范版本。
從Ultra2之后,SCSI采用全新的LVD(Low Voltage Differential)串接模塊。LVD的特性為低電壓、信號(hào)干擾少、兼容傳統(tǒng)排線,可以有較長(zhǎng)的串接距離,也可以兼顧傳輸速度與設(shè)備數(shù)。這次任務(wù)使用Ultra160,接口速度可達(dá)160MB/s。實(shí)際應(yīng)用中只需要55MB/s的傳輸速度。實(shí)際測(cè)出的速度達(dá)80MB/s以上。
2 系統(tǒng)軟件結(jié)構(gòu)
2.1 VxWorks操作系統(tǒng)簡(jiǎn)介
系統(tǒng)軟件基于VxWorks操作系統(tǒng)平臺(tái)。VxWorks操作系統(tǒng)是目前世界上最先進(jìn)的高性能實(shí)時(shí)操作系統(tǒng),主要應(yīng)用于航空、航天、導(dǎo)彈武器系統(tǒng)(包括火星探陸車(chē)、愛(ài)國(guó)者導(dǎo)彈系統(tǒng)、F-16戰(zhàn)機(jī)等)。它包括一個(gè)微內(nèi)核、強(qiáng)大的網(wǎng)絡(luò)支持,以及文件系統(tǒng)和I/O管理、C++支持的各種模塊。它的多任務(wù)、搶占調(diào)度、快速上下文切換、低中斷延遲和快速靈活的通信機(jī)制更是VxWorks的突出優(yōu)點(diǎn)。
VxWorks特點(diǎn):
(1) 支持多種CPU
包括x86、PowerPC、68K、i960、SPARC、Mips等。還支持RISC和DSP技術(shù)。
(2) 實(shí)時(shí)性
VxWorks系統(tǒng)本身的開(kāi)銷(xiāo)很小,進(jìn)程調(diào)度、進(jìn)程間通信、中斷處理等系統(tǒng)公用程序精練而有效,造成的延遲很短。VxWorks提供多任務(wù)機(jī)制,對(duì)任務(wù)的控制采用了優(yōu)先級(jí)搶占(Preemptive Priority Scheduling)和輪轉(zhuǎn)調(diào)度(Round-Robin Scheduling)機(jī)制,也充分保證了可靠的實(shí)時(shí)性,使同樣的硬件配置能滿(mǎn)足更強(qiáng)的實(shí)時(shí)性要求,為應(yīng)用的開(kāi)發(fā)留下更大的余地。
(3) 可裁減性
用戶(hù)在使用操作系統(tǒng)時(shí),并不是操作系統(tǒng)中的每一個(gè)部件都用到。例如圖形顯示、文件系統(tǒng)以及一些設(shè)備驅(qū)動(dòng)在某些嵌入式系統(tǒng)中并不使用。VxWorks 由一個(gè)體積很小的內(nèi)核及一些可以根據(jù)需要進(jìn)行定制的系統(tǒng)模塊組成,可裁剪的組件超過(guò)80個(gè)。VxWorks內(nèi)核最小為 8KB,即便加上其它必要模塊,所占用的空間也很小,且不失其實(shí)時(shí)、多任務(wù)的系統(tǒng)特征。由于其高度靈活,用戶(hù)可以很容易地對(duì)這一操作系統(tǒng)進(jìn)行定制或適當(dāng)開(kāi)發(fā),滿(mǎn)足自己的實(shí)際應(yīng)用需要。
(4) 可靠性
操作系統(tǒng)的可靠性是用戶(hù)首要考慮的問(wèn)題。而穩(wěn)定、可靠一直是VxWorks的一個(gè)突出優(yōu)點(diǎn)。VxWorks以其良好的可靠性在一些實(shí)時(shí)關(guān)鍵任務(wù)領(lǐng)域贏得了廣泛的用戶(hù)。
2.2 系統(tǒng)軟件功能
系統(tǒng)軟件結(jié)構(gòu)如圖2所示。記錄系統(tǒng)完全通過(guò)接收來(lái)自RS-232串口或TCP網(wǎng)絡(luò)的命令字進(jìn)行工作。記錄結(jié)束后通過(guò)TCP網(wǎng)絡(luò)下載記錄數(shù)據(jù)。
首先進(jìn)行系統(tǒng)初始化,對(duì)各硬件進(jìn)行必要的初始設(shè)置,確定其工作狀態(tài)。包括:網(wǎng)絡(luò)部件的初始化、SCSI卡的初始化、SCSI硬盤(pán)的初始化、PCI采集卡的初始化以及處理來(lái)自PCI采集卡硬件中斷的信號(hào)量的初始化。
然后進(jìn)行系統(tǒng)自檢,包括對(duì)SCSI硬盤(pán)記錄速度測(cè)試自檢以判定是否能達(dá)到要求的記錄速度、硬盤(pán)的讀寫(xiě)自檢,以及對(duì)自己定義在硬盤(pán)前一段當(dāng)作數(shù)據(jù)檢索用的信息頭的自檢。
系統(tǒng)自檢成功后將會(huì)調(diào)用taskSpawn()系統(tǒng)調(diào)用使處理串口和網(wǎng)絡(luò)命令的模塊運(yùn)行起來(lái)。根據(jù)主控計(jì)算機(jī)發(fā)來(lái)的命令字調(diào)用相應(yīng)的功能模塊并給主控計(jì)算機(jī)相應(yīng)的回答響應(yīng)。具體命令包括:A查詢(xún)系統(tǒng)版本、B自檢、C開(kāi)始記錄、D停止記錄、E查詢(xún)硬盤(pán)剩余容量、F開(kāi)始圖像數(shù)據(jù)下載、G查詢(xún)系統(tǒng)狀態(tài)、H硬盤(pán)清空、I查詢(xún)單次任務(wù)信息。系統(tǒng)最重要的工作是記錄任務(wù)。PCI采集卡每75ms發(fā)出一個(gè)中斷,在這段時(shí)間里采集卡已經(jīng)完成了一個(gè)緩沖區(qū)共4MB數(shù)據(jù)的采集,此時(shí)來(lái)的圖像數(shù)據(jù)流存儲(chǔ)在另外一個(gè)4MB緩沖區(qū)中,即所謂的交叉存儲(chǔ)技術(shù),以保證數(shù)據(jù)不會(huì)丟失。在這75ms時(shí)間內(nèi)必須完成記錄4MB的任務(wù),記錄速度約為54MB/s。在實(shí)際測(cè)試中,記錄4MB的數(shù)據(jù)一般50ms即可完成,記錄速度約為80MB/s,因此較好地完成了記錄任務(wù)。實(shí)際編程,在硬件中斷服務(wù)程序中只是用semGive()系統(tǒng)函數(shù)放出一個(gè)信號(hào)量,由發(fā)起任務(wù)具體處理記錄操作。中斷服務(wù)程序不象一般的任務(wù)那樣運(yùn)行在普通的任務(wù)上下文中,它沒(méi)有任務(wù)控制塊,所有的中斷服務(wù)程序共享一個(gè)堆棧。所以對(duì)中斷服務(wù)程序的基本要求就是不能引起阻塞。例如在中斷服務(wù)程序不能調(diào)用printf()函數(shù)用于輸出信息。此外,在中斷服務(wù)程序中也不能通過(guò)VxWorks驅(qū)動(dòng)執(zhí)行I/O操作。此項(xiàng)目中陣列了三個(gè)SCSI硬盤(pán),每個(gè)硬盤(pán)容量為36GB,共計(jì)108GB。由于一個(gè)硬盤(pán)物理的持續(xù)讀寫(xiě)速度在30MB/s左右,因此必須陣列地讀寫(xiě)多個(gè)SCSI硬盤(pán),在處理中斷服務(wù)程序的任務(wù)中利用每個(gè)硬盤(pán)物理的讀寫(xiě)間隙,按一定時(shí)隙分別寫(xiě)入每個(gè)硬盤(pán)一定的數(shù)據(jù)量,實(shí)現(xiàn)了硬盤(pán)的并行工作,達(dá)到了高速存儲(chǔ)記錄的目的。
本系統(tǒng)成功地應(yīng)用于實(shí)際工程項(xiàng)目中,其可靠性和實(shí)時(shí)性已在嚴(yán)格的實(shí)際應(yīng)用環(huán)境中得到檢驗(yàn)。下一步,將進(jìn)一步提高記錄系統(tǒng)的性能指標(biāo),采用基于64位66MHz的PCI總線、SCSI Ultra 320接口、千兆網(wǎng)絡(luò)接口以及陣列更多的SCSI硬盤(pán),使系統(tǒng)的記錄速度、記錄容量、下載傳輸速度和可靠性都有更大的提高。本系統(tǒng)雖然是專(zhuān)門(mén)為我所實(shí)時(shí)測(cè)控系統(tǒng)中高速記錄任務(wù)而設(shè)計(jì),但實(shí)際上也廣泛地應(yīng)用于圖像處理、雷達(dá)、聲納等對(duì)實(shí)時(shí)圖像記錄有要求的領(lǐng)域。
評(píng)論
查看更多