當前,MCU(微控制器)已經在艦船上得到了廣泛應用。主要的應用方式有兩種:一種是以MCU為核心,與一些監視、伺服、顯示設備配合,實現一定功能的單獨應用,例如各種智能儀器儀表、一些數據采集與處理設備;另一種是利用CAN、RS-422/485等將多個MCU系統組成局域網絡,實現MCU之間的信息交流和共享,與前一種方式相比,這種局域網絡有很大的優勢,但是也存在著透明傳輸的可靠性低、通訊效率低和傳輸距離短等弊端[1-3]。隨著Internet技術的發展,將嵌入式系統接入網絡,利用全艦的網絡資源實現艦船信息化是一種發展趨勢。本文以某型艦船上數據采集與處理系統的開發為例來研究嵌入式Internet技術在艦船上的應用[4-6]。
系統主要由ARM7內核處理器S3C44B0X、以太網控制器CS8900A、網絡變壓器HR901170A和存儲器Flash組成。系統硬件結構如圖1所示,系統提供RJ45接口連接以太網,提供一個WM485接口與現場設備串行總線連接,實現數據的網絡傳輸和設備的遠程控制。

圖1 系統硬件結構圖
其中:S3C44B0X負責控制整個系統,實現網絡數據和串口數據的交換;CS8900A進行網絡數據的接收和發送;HR901170A起信號傳輸、阻抗匹配、波形修復、雜波抑制以及高電壓隔離等作用,以保護系統的安全;Flash擴展系統存儲空間;WM485實現RS-485串行總線和TTL電平之間的轉換。
系統軟件主要包括:操作系統的移植、TCP/IP協議棧的實現程序、以太網控制器CS8900A的驅動程序、數據采集和處理及監控程序。其中, TCP/IP協議棧的實現程序包括:ARP與IP網絡層協議的實現程序和ICMP及UDP傳輸層協議的實現程序;以太網控制器CS8900A的驅動程序包括:初始化設置和收發數據包程序;數據采集和處理程序,包括數據收發格式轉換和暫存。
對于μC/OS-Ⅱ內核向S3C44B0X中的移植,根據處理器的特點合理地修改μC/OS-Ⅱ的3個與處理器相關的文件:OS_CPU.H、OS_CPU_A.ASM、OS_CPU_C.C。主要是將文件中的匯編指令改為ARM7的匯編指令,并根據處理器的特點對文件中寄存器的初值進行適當改寫。
TCP/IP協議棧采用lwIP,lwIP是瑞士計算機科學院的AdamDunkels等開發的1套用于嵌入式系統的開放源代碼TCP/IP協議棧。lwIP的特性有:支持多網絡接口下的IP轉發;支持ICMP協議;包括實驗性擴展的UDP(用戶數據報協議);包括阻塞控制、RTT估算、快速恢復和快速轉發的TCP(傳輸控制協議);提供專門的內部回調接口(raw API)用于提高應用程序性能。
lwIP可以很容易地在μC/OS-Ⅱ的調度下,為系統增加網絡通信和網絡管理功能。lwIP協議棧在設計時就考慮到了將來的移植問題,把所有與硬件、OS、編譯器相關的部分獨立出來放在/src/arch目錄下。因此lwIP在μC/OS-Ⅱ上的實現就是修改這個目錄下的文件,其它文件一般不用修改。在驅動中主要是根據S3C44B0X內的以太網控制特殊功能寄存器編寫網絡接口的發送包、接收包的函數、初始化以及用于以太網控制器的外部中斷服務程序。
TCP/IP協議的4層模型中,鏈路層部分由CS8900A完成,網絡層和傳輸層由S3C44B0X處理,應用層則根據需要可以在S3C44B0X內完成,也可以由S3C44B0X轉給用戶或終端設備完成,本系統由用戶來完成。
S3C44B0X負責對CS8900A進行初始化配置,完成各種必要的控制并實現數據的網絡傳輸等功能。其中CS8900A的初始化主要包括:設置物理地址(MAC地址)、設置IP地址、設置工作模式、初始化工作端口(10BASE-T)、確定數據的傳輸方向為全雙工、設置數據發送和接收的格式等。本系統中CS8900A工作在I/ O模式下,I/O基地址取默認值0X300,采用中斷模式進行接收。CS8900A采用16位數據長度與S3C44B0X進行數據交換。
本系統利用CS8900A和軟件實現TCP/IP,當以太網或者串行總線有數據發送到本系統時,系統的軟件將對其進行格式轉換,數據轉換完成后可立即傳送,亦可在MCU中保存一段緩沖時間然后發送。
S3C44B0X將數據按照CS8900A發送數據幀格式進行封裝,封裝完成后通過遠程DMA通道將數據包發送到CS8900A的發送緩沖區,然后通過本地DMA將數據送到FIFO,通過設置寄存器CR啟動發送,數據經網絡變壓器濾波后,通過RJ-45送出。
CS8900A通過本地DMA從RJ-45接受數據,CS8900A對接收到的數據包通過MAC比較、CRC校驗,由FIFO存到接收緩沖區,收滿1幀后以中斷或者寄存器標志方式通知S3C44B0X,S3C44B0X通過遠程DMA將緩沖區的數據讀到自己的RAM,經過WM485送出。
為了實現對現場設備的監控,用VC++6.0在用戶終端PC上編寫一個監控程序,實時顯示現場I/O數據。采用Winsock編程,同數據采集與處理系統建立連接;當有網絡數據到達時,響應Receive消息,讀取數據并處理;當用戶發出控制信號時,調用Send函數發送控制命令或數據給數據采集與處理系統。為提高顯示界面的友好性,采用類似虛擬儀器的圖形化人機界面設計方法,通過形象地代表現場I/O的控件顯示I/O的狀態。
本系統涉及到很多任務操作和相互調用,需要進行多任務調度管理。根據μC/OS-Ⅱ各個任務的優先級來創建任務并分給相應的優先級,各個任務建立后處于等待狀態,只有一個任務在運行,通過信號調度各任務的執行。程序流程如圖2所示。

圖2 程序流程圖
在系統啟動時只有接收數據任務運行,其它的處于等待狀態;當接收到數據后,接收數據任務會發一個信號給處理數據任務,這時接收數據任務把對處理器的控制權交由處理數據任務,而處理數據任務通過對數據的分析來確認它是什么命令;當要讀取現場數據時,則啟動操作任務,而后再到發送數據任務。
目前,該數據采集與處理系統已經在艦船上得到了成功的應用,傳輸可靠性高、效率高,不受傳輸距離限制,節省了大量的信號通信電纜,也給施工帶來了一定的便利。鑒于眾多亟待改裝的船舶依然采用了大量的串口設備,嵌入式Internet技術可以成功地將各種現有的串口設備在不改變設備本身結構的情況下,將串口設備快速方便地接入網絡,通過Internet就可以將串口設備的控制和數據采集延伸到Internet上的各個終端,方便地進行數據采集和儀器控制,數據傳輸可以跨越網關,從而實現儀器的遠程控制、遠程數據采集等功能,不論在軍船上還是民船上都有很好的實用價值。
[1] STEVENS W R.TCP/IP詳解,卷1:協議[M].范建華,等譯.北京:機械工業出版社,2000.
[2] WRIGHT G R,STEVENS W R.TCP/IP詳解,卷2:實現[M].北京:機械工業出版社,2000.
[3] FOUZAN B A,FEGAN S C著.TCP/IP協議族[M].謝希仁譯.北京:清華大學出版社,2001.
[4] 曹燕.基于CSoC芯片的嵌入式以太網接口設計[J].電子技術,2003,4.
[5] 王春明.嵌入式系統與以太網互連接口設計[J].南京理工大學學報,2002:145-148.
[6] 陳學泉,關字東.嵌入式TCP/IP協議單片機技術在網絡通信中的應用[J].電子技術應用,2002(8):48-49.