李 新,宋光磊,溫 靖,柳增運
(1.北京化工大學 信息科學與技術學院,北京100029;2.中國空間技術研究院513所北京研發中心,北京100191)
責任編輯:任健男
近年來,隨著空間探測技術的快速發展,星上空間探測載荷設備種類日益增多,使得星載設備產生和處理的數據量迅速增長,各載荷設備間差異很大,有必要采用統一標準規范載荷設備的對外接口,使新設備更快地融入到新型號任務中,因此對星載設備的數據傳輸總線提出了更高的要求。SpaceWire總線是一種更好滿足現代星上設備間高速數據傳輸需求的傳輸標準,已成為歐美等發達國家星載高速通信的首選方案。目前在國內開展該技術研究較少,而且還沒有星上應用實例。因此盡快大力研究此項技術,對于提升國防航天實力具有重要意義。
本文設計由模擬綜管設備、模擬相機設備、模擬數傳設備和SpaceWire路由器組成的基于SpaceWire總線網絡圖像傳輸演示系統,其中設備中采用FPGA和ARM處理器分別實現SpaceWire總線的底層協議和對系統的傳輸控制。經驗證該演示系統可以進行穩定且高速的圖像數據傳輸,并且具有良好的可擴展性,為下一步研制星載功能樣機奠定了基礎。
SpaceWire總線是國際上迄今為止第一個專為航天任務設計的協議標準,由歐洲航天標準合作組織(ECSS)發布,該協議以IEEE1355—1995協議和LVDS標準為基礎,提供通用接口標準,簡化和規范了不同載荷設備的連接。SpaceWire總線的特點如下[1]:
1)全雙工、串行、點對點的數據總線,速碼率為2~400 Mbit/s,采用LVDS接口技術;
2)電纜最長為10 m,連接器采用專為航天應用開發設計的微型9針D型連接器;
3)節點內部編碼方式采用數據—濾波(Data Strobe)編碼;
4)網絡通過SpaceWire路由器連接一定數量的SpaceWire結點,節點可以通過SpaceWire電纜直接相連或通過SpaceWire路由器與其他SpaceWire節點或路由器相連;
5)SpaceWire總線標準ECSS-E-50-ST-12C涉及物理層、信號層、字符層、交換層、數據包層、網絡層共6層協議,對應OSI模型中的物理層和數據鏈路層。
基于SpaceWire總線網絡圖像傳輸演示系統如圖1所示,主要包括4個星上模擬設備、1個監控平臺、1個數據顯示平臺。4個模擬設備分別是模擬綜管設備、模擬相機設備、模擬數傳設備、SpaceWire路由器;監控平臺用于向模擬綜管設備發送指令并接收模擬綜管設備的響應數據;數據顯示平臺用于接收顯示模擬數傳設備發送的數據。

圖1 系統總體組成
設備采用三星公司的ARM9內核處理器S3C2440[2],工作頻率最高達到400 MHz,具有低功耗、高速的處理計算能力,根據演示系統功能配置以下外設資源,設備的基本硬件框圖如圖2所示。

圖2 模擬設備硬件基本框圖
FPGA采用Xilinx Spartan系列的XC3S1000芯片,封裝支持SpaceWire總線的IP核,實現了SpaceWire總線的底層協議。
NAND Flash采用K9F2G08芯片,該存儲芯片存儲容量高達256 Mbyte,而且具有價格低、讀寫速度快及可靠的耐用性。主要存儲u-boot引導代碼、Linux內核以及文件系統。
SDRAM選用H57V2562GTR芯片,為內核運行提供運行空間。
以太網接口電路使用DM9000網絡控制芯片,用于NFS服務和數據UDP協議傳輸。
在相機設備中的USB接口上外接ZC0301芯片的USB接口攝像頭實現圖像采集。
系統軟件在Linux操作系統基礎上構建,系統軟件架構如圖3所示,從底向上依次為u-boot,Linux操作系統,設備驅動程序和SpaceWire網絡服務程序。系統上電后,u-boot初始化硬件設備,加載Linux內核;SpaceWire網絡服務程序可以實現采集的圖像數據在SpaceWire網絡各節點間的傳輸。

圖3 系統軟件架構
Bootloader引導程序選取u-boot-2010.09版本,該版本能夠很好地支持S3C2410處理器的架構。S3C2440和S3C2410具有的相似性簡化了移植過程,提高了移植效率,在移植過程中添加了S3C2440配置、NAND Flash的啟動支持和DM9000的支持[3]。
系統內核采用linux-2.6.33版本,支持V4L2驅動框架,集成USB和ZC0301攝像頭驅動,方便了移植工作。通過給linux-2.6.33版本內核文件打補丁使其支持Yaffs2文件格式,在內核選項圖像選單中,系統選擇ARM920T,CPU類型選擇S3C2440,驅動程序選中NAND Flash,DM9000,ZC0301P Camera。
文件系統采用Yaffs2文件系統,該系統是針對NAND Flash設計的嵌入式文件系統,適用于大容量存儲設備,內存空間占用小、讀/寫速度快,性能優越且易于移植。
MJPG-streamer是一款基于IP地址的視頻流服務器,綁定了一個輸入插件和多個輸出插件,通過插件實現從網絡攝像頭獲取JPEG格式的圖像并傳輸至客戶端[4]。系統移植MJPG-streamer視頻流服務器主要調用了input_uvc輸入組件和out_http輸出組件,程序流程如圖4所示。
Linux 中設備被當作文件進行處理,應用層只需要獲得設備的文件描述符,通過系統調用就可完成對硬件設備的操作。這些由驅動程序完成從而使應用程序不必關心過多的硬件細節。應用程序發出系統調用指令后,會從用戶態轉換到內核態,通過內核將系統調用轉換為對物理設備的操作[5]。

圖4 MJPG-streamer程序流程圖
用戶進程通過設備文件同硬件設備打交道,對設備文件的操作就是一些系統調用,對于FPGA驅動來說,需要一個非常重要的數據結構(file_operations)將系統調用與驅動程序關聯起來。數據結構中包括了對FPGA進行各種操作的函數指針,如open(),read(),write(),ioctl()等。
在SpaceWire總線網絡圖像傳輸系統的各個設備設計中,采用S3C2440作為主處理器,使用Xilinx公司的XC3S1000對其進行FPGA擴展,使系統支持SpaceWire總線傳輸功能。FPGA與ARM連接如圖5所示,S3C2440提供的主要連接有32位寬數據總線和27位寬地址總線,以及讀、寫、中斷和片選控制線等。

圖5 FPGA與ARM接口電路
1)設備驅動的初始化
初始化模塊在內核啟動時主要負責初始化FPGA,由函數module_init()和module_exit()兩部分實現。系統中XC3S1000位于nGCS3上,對應的物理地址為0x18000000-0x20000000,共128 Mbyte靜態地址空間。將FPGA主設備號定義為零,使操作系統隨機為該設備分配主設備號。
2)設備驅動地址的映射
驅動程序不能直接通過物理地址訪問FPGA的I/O內存資源,需將物理地址映射到虛擬地址空間進而實現訪問這些I/O內存資源。FPGA初始化通過ioremap()完成物理地址到內核空間的映射。本系統FPGA的片選使能控制信號為nGCS3,對應的起始地址為0x18000000。
3)驅動程序控制接口函數
ioctl()用來設置FPGA內部參數,其中部分設置命令如表1所示,不同的命令對應不同的cmd參數,在ioctl()中采用switch(cmd)實現對FPGA參數的設置及狀態的讀取。

表1 ioctl命令字
演示系統將模擬綜管設備設計為主控設備,將模擬相機設備、模擬數傳設備設計為從控設備。系統SpaceWire網絡服務程序分為主控SpaceWire網絡服務程序和從控SpaceWire網絡服務程序兩部分。
1)通過移植MJPG-streamer視頻服務器軟件完成網絡圖像的采集并傳輸JPEG格式的圖像至客戶端程序,其中模擬相機設備調用input_uvc組件,模擬數傳設備調用out_http輸出組件。
2)完成從控設備間的信息交互以及SpaceWire網路各結點間的數據傳輸。
1)通過收發線程完成主控設備與從控設備的信息交互。主控設備通過SpaceWire傳輸協議可以快速獲取新接入設備的信息,完成對新接入設備的識別。同時從控設備也可以獲取主控設備的相關設備參數。
2)接收UDP接口服務程序的轉發命令[6],完成對SpaceWire網絡中設備的數據傳輸控制。主控設備在對所有網絡設備進行信息交互的基礎上,為從控設備分配SpaceWire網絡中的參數,包括網絡地址、通信速率、發起數據傳輸等參數,從而控制從控設備的數據傳輸。程序流程如圖6所示。

圖6 主控SpaceWire網絡服務程序流程
將系統設備連接并上電(如圖7所示),監控平臺完成對插入設備的識別顯示后,設置載荷數據傳輸路徑配置指令,圖像數據從端口1通過SpaceWire路由器發送到端口5,端口5上的模擬數傳設備將接收到的模擬相機設備拍攝的圖像轉發至數傳顯示平臺。在數傳顯示平臺打開MJPG-streamer文件夾中的viewer軟件,輸入對應的IP地址和端口號,點擊connect可以看到流暢的視頻圖像(如圖8所示)。示波器在SpaceWire鏈路建立時采集的數據波形如圖9所示,最小時寬為5 ns時,數據脈沖為200 MHz,即數據傳輸速率可達200 Mbit/s,高于1553B或CAN總線的傳輸速率(一般不超過2 Mbit/s)。
目前,SpaceWire總線技術已被歐空局、美國航天局在多個航天任務中使用。文中搭建了一種基于SpaceWire總線網絡圖像傳輸系統,模擬了圖像數據在SpaceWire網絡高速可靠的傳輸,簡化了設備的連接,并具有良好的可擴展性。



[1]European Cooperation for Space Standardization.(Standard ECSS-E-50-12A)SpaceWire,Links,Nodes,Routers and Networks(Issue 1)[S].2003.
[2]S3C2440X RISC MICROPROCESSOR date sheet[EB/OL].[2012-10-20].http://www.alldatasheet.com/datasheet-pdf/pdf/93102/SAMSUNG/S3C2440X.html.
[3]YAGHMOUR K.Building embedded Linux system[M].New York:O’Reilly & Associates,2003.
[4]陳書益,黃永慧.開源視頻服務器軟件MJPG-streamer的研究和應用[J].電子設計工程,2012,20(5):172-176.
[5]李俊.嵌入式Linux設備驅動開發詳解[M].北京:人民郵電出版社,2008.
[6]劉暢,彭楚武.Linux下的UDP協議編程[J].儀表技術,2005(4):62-64.