初偉先,張赟,漆隨平,王東明
(齊魯工業大學(山東省科學院),山東省科學院海洋儀器儀表研究所,山東省海洋監測儀器裝備技術重點實驗室,國家海洋監測設備工程技術研究中心,山東 青島 266001)
船舶氣象儀是船載的重要設備之一,通過對各類傳感器的采樣,能夠實時測量相對風速、相對風向、溫度、濕度、氣壓、能見度等氣象參數,并通過與其他船載設備通信,獲取航速、航向信息,用以解算真風速、真風向[1],同時又將各類氣象參數信息發送給其他船載設備,為船舶的安全航行提供重要保障。近年來,隨著信息技術的快速發展,以太網通信技術得到廣泛的應用。以太網在實時操作、可靠傳輸、標準統一等方面的卓越性能及其便于安裝、維護簡單、不受通信距離限制等優點,已經受到國內外很多監控、通信領域研究人員的廣泛關注[2]。目前以太網通信技術在船載設備之間開始推廣應用,根據實際應用的需求,本文提出了基于以太網技術的船舶氣象儀通信功能的設計方案和實現方法。
船舶氣象儀內部的電路板采用模塊化設計,為了實現船舶氣象儀與其他船載設備之間的以太網通信,本文專門設計了一款基于以太網技術的通信板。船舶氣象儀通信板的系統結構設計分為硬件和軟件兩部分。硬件結構設計主要包括核心處理器和以太網控制器的選擇以及相關電路的搭建。軟件結構設計主要包括操作系統的配置、底層驅動程序的移植和應用程序的開發。底層驅動程序實現硬件電路的以太網通信功能,應用程序在底層驅動的基礎上實現航向、航速信息的接收以及氣象參數信息的發送。整個系統方案的框圖如圖1所示。

圖1 系統總體框圖Fig.1 Block diagram of the system
在選擇電子元器件時,一般需要遵循以下原則:(1)穩定可靠;(2)實用性;(3)低功耗;(4)可維護性與可擴展性。
船舶氣象儀通信板需要實時采集風速風向傳感器、溫濕度傳感器、氣壓傳感器、能見度傳感器的數據,這就要求選用一款外圍接口豐富的核心處理器,再結合以上電子元器件選擇時需要遵循的原則,我們最終選用S3C2440A芯片作為通信板的核心處理器。S3C2440A 是三星公司推出的16/32位精簡指令集(RISC)微型處理器,采用ARM920T內核,主頻為400 MHz,主要由內核、高速緩存和內存管理單元組成,具有外圍接口豐富、體積小、低功耗、高性能等特點[3]。不過S3C2440A自身沒有集成以太網接口,要想實現以太網通信,需要選擇一款以太網控制器與其連接。這里我們選擇了DM9000AE芯片作為以太網控制器。DM9000AE是一款高速以太網接口芯片,集成10/100 M物理層接口;內部帶有16 kB SRAM用作接收發送的FIFO緩存;支持8/16 bit兩種主機工作模式;具有通過HP認證的AUTO-Mdix(支持直接互連自動翻轉)功能;支持TCP/IP加速(IPV4 check sum offload)減輕CPU負擔,提高整機效能;10 ns I/O讀寫時間[4]。
通信板的以太網接口電路連接圖如圖2所示。將S3C2440A的片選DM_CS和地址線BADDR分別與DM9000AE的CS引腳和CMD引腳相連接,將數據線BDATA[15:0]與DM9000AE的數據線SD[15:0]相連接,用來實現二者之間的數據傳輸;S3C2440A的DM_IOR引腳和DM_IOW引腳分別與DM9000AE的讀引腳IOR#和寫引腳IOW#相連接;同時,將S3C2440A的中斷引腳EINT7與DM9000AE的INT引腳相連接,以響應DM9000AE的中斷。DM9000AE的接收信號線RX+、RX-和發送信號線TX+、TX-通過隔離變壓器E-2023與網口RJ-45相連,以實現與外部以太網的連接。E-2023的主要作用是將船舶氣象儀通信板與外部以太網相隔離,防止干擾和燒壞通信板的電子元器件,以實現以太網電路的帶電插拔[5]。

圖2 以太網接口電路連接圖Fig.2 Connection diagram of the Ethernet interface circuit
S3C2440A是一款以ARM920T為內核的嵌入式處理器,需要使用嵌入式系統進行配置。在嵌入式系統中,Linux系統是一款目前最為流行的開源的操作系統,提供豐富強大的網絡功能,完善的內置網絡是Linux的一大特點[6]。而且Linux系統還免費提供了大量支持以太網的軟件,以進行文件傳輸和遠程訪問。本文以裝有虛擬Linux操作系統的PC機作為主機,以船舶氣象儀通信板作為目標板,在主機端進行系統配置、網卡驅動的移植、制作文件系統以及應用程序的開發,然后下載到氣象儀通信板上進行調試和運行。
系統配置的簡要過程如下:
(1)準備工作目錄,解壓內核源碼。執行如下命令:
#mkdir s3c2440/
#cds3c2440/
#tar-jxvf linux- 2.6.32.2.tar.bz
(2)Linux2.6內核會根據本地系統配置進行初始設置,可以導入默認S3C2410 的配置文件s3c2410_defconfig,然后在此基礎上交叉編譯內核。執行如下命令:
#cp arch/arm/configs/ s3c2410_defconfig .configs
#make menuconfig
#make ARCH= arm CROSS COMPILE=arm-linux- zImage
根據硬件電路中S3C2440A與DM9000AE的連接方式,關于DM9000AE網卡驅動程序的移植,首先需要在mach-S3C2440.c中添加如下代碼[7-8]:
#include
#define MACH_S3C2440_DM9000_BASE (S3C2410_CS4 +0x300)
static struct resource S3C2440_dm9000_resource [ ]= {
[0]= { //設置地址端口
. start =MACH_S3C2440_DM9000_BASE ,
. end =MACH_S3C2440_DM9000_BASE + 3 ,
. flags = IORESOURCE_MEM } ,
[1]= { //設置數據端口
. start =MACH_S3C2440_DM9000_BASE + 4 ,
. end =MACH_S3C2440_DM9000_BASE + 7 ,
. flags = IORESOURCE_MEM } ,
[2]= { //設置中斷號
. start = IRQ_EINT7,
. end = IRQ_EINT7,
.flags=IORESOURCE_IRQ|IORESOURCE_IRQ_HIGHEDGE,}//設置為高電平觸發
};
static struct dm9000_plat_data S3C2440_dm9000_pdata = {
//設置數據線的位數是為16 bit,不使用EEPROM
. flags =(DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),
.dev_addr = {0x08,0x90,0x90,0x90,0x90,0x90},//設置MAC 地 址
};
staticstruct platform_device S3C2440_device_eth = {
. name = " dm9000 ",//設置設備名
. id = - 1,
.num_resources = ARRAY_SIZE ( S3C2440_dm9000_resource ) ,
. resource =S3C2440_dm9000_resource ,//設置資源
. dev = {. platform_data = &S3C2440_dm9000_pdata ,} ,//設置私有數據
};
最后需要在S3C2440的BSP文件mach -S3C2440.c中添加如下代碼:
staticstruct platform_device*S3C2440_devices [ ]__initdata = {
……
& S3C2440_device_eth,//添加網絡設備
};
Linux系統通過套接字Socket來實現網絡編程[9],網絡程序通過Socket 和其他幾個系統調用返回一個通信的文件描述符,可以通過讀寫描述符實現網絡之間的數據交流。船舶氣象儀通信板應用程序的流程圖[10]如圖3所示, 首先調用系統函數socket()完成套接字的創建,有了套接口后,需要把套接口的IP地址綁定到本地計算機的某個端口上,通過調用系統函數bind()來實現該功能。完成以上初始化后,開始循環判斷,進行接收和發送數據處理,當接收到船載設備以太網的數據時,進行接收處理,提取航速、航向信息,然后編輯相對風速、相對風向、真風速、真風向、溫度、濕度、氣壓、能見度等氣象參數,向船載設備以太網發送這些氣象參數。最后當需要關閉網絡連接時,通過調用系統函數close()來關閉連接的文件描述符。
根據3.1節的方法,在PC機端進行系統配置、網卡驅動的移植、制作文件系統以及應用程序的開發,然后下載到氣象儀通信板上進行調試和運行,連接圖如圖4所示。網卡驅動是實現以太網通信的關鍵,這里采用掛載NFS文件系統的方法,來判斷網卡驅動程序是否編寫成功。測試驗證平臺搭建完成后,如圖5所示,在PC機的超級終端窗口輸入以下命令:
#mount -t nfs 192.168.1.180:/home/s3c2440 /mnt -o nolock 按回車鍵后,出現空白行,說明掛載成功,進而說明網卡驅動編寫成功。之后,編寫出應用程序,完成了船舶氣象儀通信板功能、性能的測試驗證。測試結果表明,該通信板實現了船舶氣象儀的以太網通信需求[11]。

圖3 應用程序流程圖Fig.3 Application flow chart

圖4 氣象儀通信板與PC機連接圖Fig.4 Connection diagram of meteorological communication board and PC

圖5 網卡驅動測試驗證圖Fig.5 Verification diagram of network card driver test
本文提出了基于以太網技術的船舶氣象儀通信功能的設計方案,實現了船舶氣象儀和其他船載設備之間的以太網通信。測試結果表明,設計的通信板功能、性能完全滿足船舶氣象儀對以太網通信的要求。本文將S3C2440A與DM9000AE兩種芯片結合使用的方法,可以為其他需要解決以太網通信的相關設計提供參考。