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