當(dāng)前,MCU(微控制器)已經(jīng)在艦船上得到了廣泛應(yīng)用。主要的應(yīng)用方式有兩種:一種是以MCU為核心,與一些監(jiān)視、伺服、顯示設(shè)備配合,實(shí)現(xiàn)一定功能的單獨(dú)應(yīng)用,例如各種智能儀器儀表、一些數(shù)據(jù)采集與處理設(shè)備;另一種是利用CAN、RS-422/485等將多個(gè)MCU系統(tǒng)組成局域網(wǎng)絡(luò),實(shí)現(xiàn)MCU之間的信息交流和共享,與前一種方式相比,這種局域網(wǎng)絡(luò)有很大的優(yōu)勢,但是也存在著透明傳輸?shù)目煽啃缘?、通訊效率低和傳輸距離短等弊端[1-3]。隨著Internet技術(shù)的發(fā)展,將嵌入式系統(tǒng)接入網(wǎng)絡(luò),利用全艦的網(wǎng)絡(luò)資源實(shí)現(xiàn)艦船信息化是一種發(fā)展趨勢。本文以某型艦船上數(shù)據(jù)采集與處理系統(tǒng)的開發(fā)為例來研究嵌入式Internet技術(shù)在艦船上的應(yīng)用[4-6]。
系統(tǒng)主要由ARM7內(nèi)核處理器S3C44B0X、以太網(wǎng)控制器CS8900A、網(wǎng)絡(luò)變壓器HR901170A和存儲(chǔ)器Flash組成。系統(tǒng)硬件結(jié)構(gòu)如圖1所示,系統(tǒng)提供RJ45接口連接以太網(wǎng),提供一個(gè)WM485接口與現(xiàn)場設(shè)備串行總線連接,實(shí)現(xiàn)數(shù)據(jù)的網(wǎng)絡(luò)傳輸和設(shè)備的遠(yuǎn)程控制。
圖1 系統(tǒng)硬件結(jié)構(gòu)圖
其中:S3C44B0X負(fù)責(zé)控制整個(gè)系統(tǒng),實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)和串口數(shù)據(jù)的交換;CS8900A進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)的接收和發(fā)送;HR901170A起信號(hào)傳輸、阻抗匹配、波形修復(fù)、雜波抑制以及高電壓隔離等作用,以保護(hù)系統(tǒng)的安全;Flash擴(kuò)展系統(tǒng)存儲(chǔ)空間;WM485實(shí)現(xiàn)RS-485串行總線和TTL電平之間的轉(zhuǎn)換。
系統(tǒng)軟件主要包括:操作系統(tǒng)的移植、TCP/IP協(xié)議棧的實(shí)現(xiàn)程序、以太網(wǎng)控制器CS8900A的驅(qū)動(dòng)程序、數(shù)據(jù)采集和處理及監(jiān)控程序。其中, TCP/IP協(xié)議棧的實(shí)現(xiàn)程序包括:ARP與IP網(wǎng)絡(luò)層協(xié)議的實(shí)現(xiàn)程序和ICMP及UDP傳輸層協(xié)議的實(shí)現(xiàn)程序;以太網(wǎng)控制器CS8900A的驅(qū)動(dòng)程序包括:初始化設(shè)置和收發(fā)數(shù)據(jù)包程序;數(shù)據(jù)采集和處理程序,包括數(shù)據(jù)收發(fā)格式轉(zhuǎn)換和暫存。
對于μC/OS-Ⅱ內(nèi)核向S3C44B0X中的移植,根據(jù)處理器的特點(diǎn)合理地修改μC/OS-Ⅱ的3個(gè)與處理器相關(guān)的文件:OS_CPU.H、OS_CPU_A.ASM、OS_CPU_C.C。主要是將文件中的匯編指令改為ARM7的匯編指令,并根據(jù)處理器的特點(diǎn)對文件中寄存器的初值進(jìn)行適當(dāng)改寫。
TCP/IP協(xié)議棧采用lwIP,lwIP是瑞士計(jì)算機(jī)科學(xué)院的AdamDunkels等開發(fā)的1套用于嵌入式系統(tǒng)的開放源代碼TCP/IP協(xié)議棧。lwIP的特性有:支持多網(wǎng)絡(luò)接口下的IP轉(zhuǎn)發(fā);支持ICMP協(xié)議;包括實(shí)驗(yàn)性擴(kuò)展的UDP(用戶數(shù)據(jù)報(bào)協(xié)議);包括阻塞控制、RTT估算、快速恢復(fù)和快速轉(zhuǎn)發(fā)的TCP(傳輸控制協(xié)議);提供專門的內(nèi)部回調(diào)接口(raw API)用于提高應(yīng)用程序性能。
lwIP可以很容易地在μC/OS-Ⅱ的調(diào)度下,為系統(tǒng)增加網(wǎng)絡(luò)通信和網(wǎng)絡(luò)管理功能。lwIP協(xié)議棧在設(shè)計(jì)時(shí)就考慮到了將來的移植問題,把所有與硬件、OS、編譯器相關(guān)的部分獨(dú)立出來放在/src/arch目錄下。因此lwIP在μC/OS-Ⅱ上的實(shí)現(xiàn)就是修改這個(gè)目錄下的文件,其它文件一般不用修改。在驅(qū)動(dòng)中主要是根據(jù)S3C44B0X內(nèi)的以太網(wǎng)控制特殊功能寄存器編寫網(wǎng)絡(luò)接口的發(fā)送包、接收包的函數(shù)、初始化以及用于以太網(wǎng)控制器的外部中斷服務(wù)程序。
TCP/IP協(xié)議的4層模型中,鏈路層部分由CS8900A完成,網(wǎng)絡(luò)層和傳輸層由S3C44B0X處理,應(yīng)用層則根據(jù)需要可以在S3C44B0X內(nèi)完成,也可以由S3C44B0X轉(zhuǎn)給用戶或終端設(shè)備完成,本系統(tǒng)由用戶來完成。
S3C44B0X負(fù)責(zé)對CS8900A進(jìn)行初始化配置,完成各種必要的控制并實(shí)現(xiàn)數(shù)據(jù)的網(wǎng)絡(luò)傳輸?shù)裙δ?。其中CS8900A的初始化主要包括:設(shè)置物理地址(MAC地址)、設(shè)置IP地址、設(shè)置工作模式、初始化工作端口(10BASE-T)、確定數(shù)據(jù)的傳輸方向?yàn)槿p工、設(shè)置數(shù)據(jù)發(fā)送和接收的格式等。本系統(tǒng)中CS8900A工作在I/ O模式下,I/O基地址取默認(rèn)值0X300,采用中斷模式進(jìn)行接收。CS8900A采用16位數(shù)據(jù)長度與S3C44B0X進(jìn)行數(shù)據(jù)交換。
本系統(tǒng)利用CS8900A和軟件實(shí)現(xiàn)TCP/IP,當(dāng)以太網(wǎng)或者串行總線有數(shù)據(jù)發(fā)送到本系統(tǒng)時(shí),系統(tǒng)的軟件將對其進(jìn)行格式轉(zhuǎn)換,數(shù)據(jù)轉(zhuǎn)換完成后可立即傳送,亦可在MCU中保存一段緩沖時(shí)間然后發(fā)送。
S3C44B0X將數(shù)據(jù)按照CS8900A發(fā)送數(shù)據(jù)幀格式進(jìn)行封裝,封裝完成后通過遠(yuǎn)程DMA通道將數(shù)據(jù)包發(fā)送到CS8900A的發(fā)送緩沖區(qū),然后通過本地DMA將數(shù)據(jù)送到FIFO,通過設(shè)置寄存器CR啟動(dòng)發(fā)送,數(shù)據(jù)經(jīng)網(wǎng)絡(luò)變壓器濾波后,通過RJ-45送出。
CS8900A通過本地DMA從RJ-45接受數(shù)據(jù),CS8900A對接收到的數(shù)據(jù)包通過MAC比較、CRC校驗(yàn),由FIFO存到接收緩沖區(qū),收滿1幀后以中斷或者寄存器標(biāo)志方式通知S3C44B0X,S3C44B0X通過遠(yuǎn)程DMA將緩沖區(qū)的數(shù)據(jù)讀到自己的RAM,經(jīng)過WM485送出。
為了實(shí)現(xiàn)對現(xiàn)場設(shè)備的監(jiān)控,用VC++6.0在用戶終端PC上編寫一個(gè)監(jiān)控程序,實(shí)時(shí)顯示現(xiàn)場I/O數(shù)據(jù)。采用Winsock編程,同數(shù)據(jù)采集與處理系統(tǒng)建立連接;當(dāng)有網(wǎng)絡(luò)數(shù)據(jù)到達(dá)時(shí),響應(yīng)Receive消息,讀取數(shù)據(jù)并處理;當(dāng)用戶發(fā)出控制信號(hào)時(shí),調(diào)用Send函數(shù)發(fā)送控制命令或數(shù)據(jù)給數(shù)據(jù)采集與處理系統(tǒng)。為提高顯示界面的友好性,采用類似虛擬儀器的圖形化人機(jī)界面設(shè)計(jì)方法,通過形象地代表現(xiàn)場I/O的控件顯示I/O的狀態(tài)。
本系統(tǒng)涉及到很多任務(wù)操作和相互調(diào)用,需要進(jìn)行多任務(wù)調(diào)度管理。根據(jù)μC/OS-Ⅱ各個(gè)任務(wù)的優(yōu)先級來創(chuàng)建任務(wù)并分給相應(yīng)的優(yōu)先級,各個(gè)任務(wù)建立后處于等待狀態(tài),只有一個(gè)任務(wù)在運(yùn)行,通過信號(hào)調(diào)度各任務(wù)的執(zhí)行。程序流程如圖2所示。
圖2 程序流程圖
在系統(tǒng)啟動(dòng)時(shí)只有接收數(shù)據(jù)任務(wù)運(yùn)行,其它的處于等待狀態(tài);當(dāng)接收到數(shù)據(jù)后,接收數(shù)據(jù)任務(wù)會(huì)發(fā)一個(gè)信號(hào)給處理數(shù)據(jù)任務(wù),這時(shí)接收數(shù)據(jù)任務(wù)把對處理器的控制權(quán)交由處理數(shù)據(jù)任務(wù),而處理數(shù)據(jù)任務(wù)通過對數(shù)據(jù)的分析來確認(rèn)它是什么命令;當(dāng)要讀取現(xiàn)場數(shù)據(jù)時(shí),則啟動(dòng)操作任務(wù),而后再到發(fā)送數(shù)據(jù)任務(wù)。
目前,該數(shù)據(jù)采集與處理系統(tǒng)已經(jīng)在艦船上得到了成功的應(yīng)用,傳輸可靠性高、效率高,不受傳輸距離限制,節(jié)省了大量的信號(hào)通信電纜,也給施工帶來了一定的便利。鑒于眾多亟待改裝的船舶依然采用了大量的串口設(shè)備,嵌入式Internet技術(shù)可以成功地將各種現(xiàn)有的串口設(shè)備在不改變設(shè)備本身結(jié)構(gòu)的情況下,將串口設(shè)備快速方便地接入網(wǎng)絡(luò),通過Internet就可以將串口設(shè)備的控制和數(shù)據(jù)采集延伸到Internet上的各個(gè)終端,方便地進(jìn)行數(shù)據(jù)采集和儀器控制,數(shù)據(jù)傳輸可以跨越網(wǎng)關(guān),從而實(shí)現(xiàn)儀器的遠(yuǎn)程控制、遠(yuǎn)程數(shù)據(jù)采集等功能,不論在軍船上還是民船上都有很好的實(shí)用價(jià)值。
[1] STEVENS W R.TCP/IP詳解,卷1:協(xié)議[M].范建華,等譯.北京:機(jī)械工業(yè)出版社,2000.
[2] WRIGHT G R,STEVENS W R.TCP/IP詳解,卷2:實(shí)現(xiàn)[M].北京:機(jī)械工業(yè)出版社,2000.
[3] FOUZAN B A,F(xiàn)EGAN S C著.TCP/IP協(xié)議族[M].謝希仁譯.北京:清華大學(xué)出版社,2001.
[4] 曹燕.基于CSoC芯片的嵌入式以太網(wǎng)接口設(shè)計(jì)[J].電子技術(shù),2003,4.
[5] 王春明.嵌入式系統(tǒng)與以太網(wǎng)互連接口設(shè)計(jì)[J].南京理工大學(xué)學(xué)報(bào),2002:145-148.
[6] 陳學(xué)泉,關(guān)字東.嵌入式TCP/IP協(xié)議單片機(jī)技術(shù)在網(wǎng)絡(luò)通信中的應(yīng)用[J].電子技術(shù)應(yīng)用,2002(8):48-49.