初偉先,張赟,漆隨平,王東明
(齊魯工業(yè)大學(xué)(山東省科學(xué)院),山東省科學(xué)院海洋儀器儀表研究所,山東省海洋監(jiān)測(cè)儀器裝備技術(shù)重點(diǎn)實(shí)驗(yàn)室,國(guó)家海洋監(jiān)測(cè)設(shè)備工程技術(shù)研究中心,山東 青島 266001)
船舶氣象儀是船載的重要設(shè)備之一,通過(guò)對(duì)各類(lèi)傳感器的采樣,能夠?qū)崟r(shí)測(cè)量相對(duì)風(fēng)速、相對(duì)風(fēng)向、溫度、濕度、氣壓、能見(jiàn)度等氣象參數(shù),并通過(guò)與其他船載設(shè)備通信,獲取航速、航向信息,用以解算真風(fēng)速、真風(fēng)向[1],同時(shí)又將各類(lèi)氣象參數(shù)信息發(fā)送給其他船載設(shè)備,為船舶的安全航行提供重要保障。近年來(lái),隨著信息技術(shù)的快速發(fā)展,以太網(wǎng)通信技術(shù)得到廣泛的應(yīng)用。以太網(wǎng)在實(shí)時(shí)操作、可靠傳輸、標(biāo)準(zhǔn)統(tǒng)一等方面的卓越性能及其便于安裝、維護(hù)簡(jiǎn)單、不受通信距離限制等優(yōu)點(diǎn),已經(jīng)受到國(guó)內(nèi)外很多監(jiān)控、通信領(lǐng)域研究人員的廣泛關(guān)注[2]。目前以太網(wǎng)通信技術(shù)在船載設(shè)備之間開(kāi)始推廣應(yīng)用,根據(jù)實(shí)際應(yīng)用的需求,本文提出了基于以太網(wǎng)技術(shù)的船舶氣象儀通信功能的設(shè)計(jì)方案和實(shí)現(xiàn)方法。
船舶氣象儀內(nèi)部的電路板采用模塊化設(shè)計(jì),為了實(shí)現(xiàn)船舶氣象儀與其他船載設(shè)備之間的以太網(wǎng)通信,本文專(zhuān)門(mén)設(shè)計(jì)了一款基于以太網(wǎng)技術(shù)的通信板。船舶氣象儀通信板的系統(tǒng)結(jié)構(gòu)設(shè)計(jì)分為硬件和軟件兩部分。硬件結(jié)構(gòu)設(shè)計(jì)主要包括核心處理器和以太網(wǎng)控制器的選擇以及相關(guān)電路的搭建。軟件結(jié)構(gòu)設(shè)計(jì)主要包括操作系統(tǒng)的配置、底層驅(qū)動(dòng)程序的移植和應(yīng)用程序的開(kāi)發(fā)。底層驅(qū)動(dòng)程序?qū)崿F(xiàn)硬件電路的以太網(wǎng)通信功能,應(yīng)用程序在底層驅(qū)動(dòng)的基礎(chǔ)上實(shí)現(xiàn)航向、航速信息的接收以及氣象參數(shù)信息的發(fā)送。整個(gè)系統(tǒng)方案的框圖如圖1所示。
圖1 系統(tǒng)總體框圖Fig.1 Block diagram of the system
在選擇電子元器件時(shí),一般需要遵循以下原則:(1)穩(wěn)定可靠;(2)實(shí)用性;(3)低功耗;(4)可維護(hù)性與可擴(kuò)展性。
船舶氣象儀通信板需要實(shí)時(shí)采集風(fēng)速風(fēng)向傳感器、溫濕度傳感器、氣壓傳感器、能見(jiàn)度傳感器的數(shù)據(jù),這就要求選用一款外圍接口豐富的核心處理器,再結(jié)合以上電子元器件選擇時(shí)需要遵循的原則,我們最終選用S3C2440A芯片作為通信板的核心處理器。S3C2440A 是三星公司推出的16/32位精簡(jiǎn)指令集(RISC)微型處理器,采用ARM920T內(nèi)核,主頻為400 MHz,主要由內(nèi)核、高速緩存和內(nèi)存管理單元組成,具有外圍接口豐富、體積小、低功耗、高性能等特點(diǎn)[3]。不過(guò)S3C2440A自身沒(méi)有集成以太網(wǎng)接口,要想實(shí)現(xiàn)以太網(wǎng)通信,需要選擇一款以太網(wǎng)控制器與其連接。這里我們選擇了DM9000AE芯片作為以太網(wǎng)控制器。DM9000AE是一款高速以太網(wǎng)接口芯片,集成10/100 M物理層接口;內(nèi)部帶有16 kB SRAM用作接收發(fā)送的FIFO緩存;支持8/16 bit兩種主機(jī)工作模式;具有通過(guò)HP認(rèn)證的AUTO-Mdix(支持直接互連自動(dòng)翻轉(zhuǎn))功能;支持TCP/IP加速(IPV4 check sum offload)減輕CPU負(fù)擔(dān),提高整機(jī)效能;10 ns I/O讀寫(xiě)時(shí)間[4]。
通信板的以太網(wǎng)接口電路連接圖如圖2所示。將S3C2440A的片選DM_CS和地址線BADDR分別與DM9000AE的CS引腳和CMD引腳相連接,將數(shù)據(jù)線BDATA[15:0]與DM9000AE的數(shù)據(jù)線SD[15:0]相連接,用來(lái)實(shí)現(xiàn)二者之間的數(shù)據(jù)傳輸;S3C2440A的DM_IOR引腳和DM_IOW引腳分別與DM9000AE的讀引腳IOR#和寫(xiě)引腳IOW#相連接;同時(shí),將S3C2440A的中斷引腳EINT7與DM9000AE的INT引腳相連接,以響應(yīng)DM9000AE的中斷。DM9000AE的接收信號(hào)線RX+、RX-和發(fā)送信號(hào)線TX+、TX-通過(guò)隔離變壓器E-2023與網(wǎng)口RJ-45相連,以實(shí)現(xiàn)與外部以太網(wǎng)的連接。E-2023的主要作用是將船舶氣象儀通信板與外部以太網(wǎng)相隔離,防止干擾和燒壞通信板的電子元器件,以實(shí)現(xiàn)以太網(wǎng)電路的帶電插拔[5]。
圖2 以太網(wǎng)接口電路連接圖Fig.2 Connection diagram of the Ethernet interface circuit
S3C2440A是一款以ARM920T為內(nèi)核的嵌入式處理器,需要使用嵌入式系統(tǒng)進(jìn)行配置。在嵌入式系統(tǒng)中,Linux系統(tǒng)是一款目前最為流行的開(kāi)源的操作系統(tǒng),提供豐富強(qiáng)大的網(wǎng)絡(luò)功能,完善的內(nèi)置網(wǎng)絡(luò)是Linux的一大特點(diǎn)[6]。而且Linux系統(tǒng)還免費(fèi)提供了大量支持以太網(wǎng)的軟件,以進(jìn)行文件傳輸和遠(yuǎn)程訪問(wèn)。本文以裝有虛擬Linux操作系統(tǒng)的PC機(jī)作為主機(jī),以船舶氣象儀通信板作為目標(biāo)板,在主機(jī)端進(jìn)行系統(tǒng)配置、網(wǎng)卡驅(qū)動(dòng)的移植、制作文件系統(tǒng)以及應(yīng)用程序的開(kāi)發(fā),然后下載到氣象儀通信板上進(jìn)行調(diào)試和運(yùn)行。
系統(tǒng)配置的簡(jiǎn)要過(guò)程如下:
(1)準(zhǔn)備工作目錄,解壓內(nèi)核源碼。執(zhí)行如下命令:
#mkdir s3c2440/
#cds3c2440/
#tar-jxvf linux- 2.6.32.2.tar.bz
(2)Linux2.6內(nèi)核會(huì)根據(jù)本地系統(tǒng)配置進(jìn)行初始設(shè)置,可以導(dǎo)入默認(rèn)S3C2410 的配置文件s3c2410_defconfig,然后在此基礎(chǔ)上交叉編譯內(nèi)核。執(zhí)行如下命令:
#cp arch/arm/configs/ s3c2410_defconfig .configs
#make menuconfig
#make ARCH= arm CROSS COMPILE=arm-linux- zImage
根據(jù)硬件電路中S3C2440A與DM9000AE的連接方式,關(guān)于DM9000AE網(wǎng)卡驅(qū)動(dòng)程序的移植,首先需要在mach-S3C2440.c中添加如下代碼[7-8]:
#include
#define MACH_S3C2440_DM9000_BASE (S3C2410_CS4 +0x300)
static struct resource S3C2440_dm9000_resource [ ]= {
[0]= { //設(shè)置地址端口
. start =MACH_S3C2440_DM9000_BASE ,
. end =MACH_S3C2440_DM9000_BASE + 3 ,
. flags = IORESOURCE_MEM } ,
[1]= { //設(shè)置數(shù)據(jù)端口
. start =MACH_S3C2440_DM9000_BASE + 4 ,
. end =MACH_S3C2440_DM9000_BASE + 7 ,
. flags = IORESOURCE_MEM } ,
[2]= { //設(shè)置中斷號(hào)
. start = IRQ_EINT7,
. end = IRQ_EINT7,
.flags=IORESOURCE_IRQ|IORESOURCE_IRQ_HIGHEDGE,}//設(shè)置為高電平觸發(fā)
};
static struct dm9000_plat_data S3C2440_dm9000_pdata = {
//設(shè)置數(shù)據(jù)線的位數(shù)是為16 bit,不使用EEPROM
. flags =(DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),
.dev_addr = {0x08,0x90,0x90,0x90,0x90,0x90},//設(shè)置MAC 地 址
};
staticstruct platform_device S3C2440_device_eth = {
. name = " dm9000 ",//設(shè)置設(shè)備名
. id = - 1,
.num_resources = ARRAY_SIZE ( S3C2440_dm9000_resource ) ,
. resource =S3C2440_dm9000_resource ,//設(shè)置資源
. dev = {. platform_data = &S3C2440_dm9000_pdata ,} ,//設(shè)置私有數(shù)據(jù)
};
最后需要在S3C2440的BSP文件mach -S3C2440.c中添加如下代碼:
staticstruct platform_device*S3C2440_devices [ ]__initdata = {
……
& S3C2440_device_eth,//添加網(wǎng)絡(luò)設(shè)備
};
Linux系統(tǒng)通過(guò)套接字Socket來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)編程[9],網(wǎng)絡(luò)程序通過(guò)Socket 和其他幾個(gè)系統(tǒng)調(diào)用返回一個(gè)通信的文件描述符,可以通過(guò)讀寫(xiě)描述符實(shí)現(xiàn)網(wǎng)絡(luò)之間的數(shù)據(jù)交流。船舶氣象儀通信板應(yīng)用程序的流程圖[10]如圖3所示, 首先調(diào)用系統(tǒng)函數(shù)socket()完成套接字的創(chuàng)建,有了套接口后,需要把套接口的IP地址綁定到本地計(jì)算機(jī)的某個(gè)端口上,通過(guò)調(diào)用系統(tǒng)函數(shù)bind()來(lái)實(shí)現(xiàn)該功能。完成以上初始化后,開(kāi)始循環(huán)判斷,進(jìn)行接收和發(fā)送數(shù)據(jù)處理,當(dāng)接收到船載設(shè)備以太網(wǎng)的數(shù)據(jù)時(shí),進(jìn)行接收處理,提取航速、航向信息,然后編輯相對(duì)風(fēng)速、相對(duì)風(fēng)向、真風(fēng)速、真風(fēng)向、溫度、濕度、氣壓、能見(jiàn)度等氣象參數(shù),向船載設(shè)備以太網(wǎng)發(fā)送這些氣象參數(shù)。最后當(dāng)需要關(guān)閉網(wǎng)絡(luò)連接時(shí),通過(guò)調(diào)用系統(tǒng)函數(shù)close()來(lái)關(guān)閉連接的文件描述符。
根據(jù)3.1節(jié)的方法,在PC機(jī)端進(jìn)行系統(tǒng)配置、網(wǎng)卡驅(qū)動(dòng)的移植、制作文件系統(tǒng)以及應(yīng)用程序的開(kāi)發(fā),然后下載到氣象儀通信板上進(jìn)行調(diào)試和運(yùn)行,連接圖如圖4所示。網(wǎng)卡驅(qū)動(dòng)是實(shí)現(xiàn)以太網(wǎng)通信的關(guān)鍵,這里采用掛載NFS文件系統(tǒng)的方法,來(lái)判斷網(wǎng)卡驅(qū)動(dòng)程序是否編寫(xiě)成功。測(cè)試驗(yàn)證平臺(tái)搭建完成后,如圖5所示,在PC機(jī)的超級(jí)終端窗口輸入以下命令:
#mount -t nfs 192.168.1.180:/home/s3c2440 /mnt -o nolock 按回車(chē)鍵后,出現(xiàn)空白行,說(shuō)明掛載成功,進(jìn)而說(shuō)明網(wǎng)卡驅(qū)動(dòng)編寫(xiě)成功。之后,編寫(xiě)出應(yīng)用程序,完成了船舶氣象儀通信板功能、性能的測(cè)試驗(yàn)證。測(cè)試結(jié)果表明,該通信板實(shí)現(xiàn)了船舶氣象儀的以太網(wǎng)通信需求[11]。
圖3 應(yīng)用程序流程圖Fig.3 Application flow chart
圖4 氣象儀通信板與PC機(jī)連接圖Fig.4 Connection diagram of meteorological communication board and PC
圖5 網(wǎng)卡驅(qū)動(dòng)測(cè)試驗(yàn)證圖Fig.5 Verification diagram of network card driver test
本文提出了基于以太網(wǎng)技術(shù)的船舶氣象儀通信功能的設(shè)計(jì)方案,實(shí)現(xiàn)了船舶氣象儀和其他船載設(shè)備之間的以太網(wǎng)通信。測(cè)試結(jié)果表明,設(shè)計(jì)的通信板功能、性能完全滿(mǎn)足船舶氣象儀對(duì)以太網(wǎng)通信的要求。本文將S3C2440A與DM9000AE兩種芯片結(jié)合使用的方法,可以為其他需要解決以太網(wǎng)通信的相關(guān)設(shè)計(jì)提供參考。