摘要:本文介紹了一個基于三星ARM9芯片S3C2440嵌入式系統的以太網接口電路設計方案,采用了工業級以太網控制器DM9000AE成功實現了嵌入式系統網絡數據交換。論文在重點闡述了網絡接口電路基礎之上,對Windows CE系統控制軟件部分DM9000AE的驅動程序和注冊表項進行了具體分析。
關鍵詞: 嵌入式;S3C2440;以太網接口;DM9000;Windows CE
[align=center]A Design of Network Interface of S3C2440 Embedded System Based on DM9000
Wang xiao-wei ,Xia jian-gang[/align]
Abstract:A design of network interface based on S3C2440 embedded system is illustrated in this paper. It is successful to realize the embedded system network connection using industrial Ethernet controller DM9000AE.It particularly indicates network interface circuit and analysis system control software including the Ethernet chip DM9000AE driver and register of Window CE.
Key words: Embedded System;S3C2440; Network Interface;DM9000; Windows CE
1.引言
隨著微電子技術和計算機技術的發展,嵌入式技術得到廣闊的發展,已成為現代工業控制、通信類和消費類產品發展的方向。以太網在實時操作、可靠傳輸、標準統一等方面的卓越性能及其便于安裝、維護簡單、不受通信距離限制等優點,已經被國內外很多監控、控制領域的研究人員廣泛關注,并在實際應用中展露出顯著的優勢。本文提出了一種基于DM9000AE網絡接口芯片和32位三星ARM9處理器S3C2440嵌入式系統的以太網接口的設計方案,并在Windows CE操作系統上開發移植了網絡驅動程序實現網絡的接入。
2. DM9000AE工作原理
2.1 DM9000的主要特性和總體結構
DM9000AE是DEVICOM(臺灣聯杰國際)研發的一款10/100M快速以太網控制芯片。DM9000AE實現以太網媒體介質訪問層(MAC)和物理層( PHY)的功能,包括MAC數據幀的組裝/拆分與收發、地址識別、CRC編碼/校驗、MLT-3編碼器、接收噪聲抑制、輸出脈沖成形、超時重傳、鏈路完整性測試、信號極性檢測與糾正等。DM9000AE內部邏輯結構如圖1所示。
DM9000AE具有以下主要性能:①48管腳的LQFP封裝,管腳少體積小;②支持8/16位數據總線;③適用于10Base-T和100Base-T,10/100M自適應,適應不同的網絡速度要求,④內置16KB的SRAM,用于收發緩沖,降低對主處理器的速度要求;⑤支持IP /TCP /UDP加速,減輕了CPU負擔,提高網絡速度;⑥支持Back pressure半雙工流量控制,與IEEE802.3u兼容,支持IEEE802.3x全雙工流量控制;⑦20ns響應時間,2.5V/3.3V低功耗。
[align=center]

圖1 DM9000AE內部邏輯結構[/align]
2.2工作原理
DM9000AE可與微處理器以8 bit或16 bit的總線方式連接,并可根據需要以單工或全雙工等模式運行。在系統上電時,處理器通過總線配置DM9000AE內部網絡控制寄存器 (NCR)、中斷寄存器(ISR)等,完成DM9000AE的初始化。隨后DM9000A進入數據收發等待狀態。
當處理器要向以太網發送數據幀時,先將數據打包成UDP或IP數據包,并通過8 bit或16bit總線逐字節發送到DM9000A的數據發送緩存中,然后將數據長度等信息填充到DM9000AE相應寄存器內,隨后發送使能命令,DM9000AE將緩存的數據和數據幀信息進行MAC組幀,并發送出去。
當DM9000AE接收到外部網絡送來的以太網數據時,首先檢測數據幀的合法性,如果幀頭標志有誤或存在CRC校驗錯誤,則將該幀數據丟棄,否則將數據幀緩存到內部RAM,并通過中斷標志位通知處理器,處理器收到中斷后對DM9000AE接收RAM的數據進行處理。
DM9000AE自動檢測網絡連接情況,根據網速設置內部的數據收發速率為10Mb/s或100 Mb/s。同時,DM9000AE還能根據RJ45接口連接方式改變數據收發引腳的方向,因此無論外部網線是采用對等還是交叉方式,系統均能正常通信。
3.網絡接口硬件電路設計
在嵌入式系統中增加以太網接口,通常由如下兩種方法實現。第一種方法采用帶有以太網接口的嵌入式處理器。這種方法要求嵌入式處理器有通用的網絡接口,通常這種處理器是面向網絡應用而設計的,通過內部總線的方法實現處理器和網絡數據的交換。另一種方法采用嵌入式處理器+網卡芯片結構。這種方法對嵌入式處理器沒有特殊要求,只要把以太網芯片連接到嵌入式處理器的總線上即可。此方法通用性強,不受處理器的限制,但是,處理器和網絡數據交換通過外部總線交換數據[3]。
本設計采用的是S3C2440這款通用的嵌入式微處理器上擴展以太網接口的方式,即第二種方式。S3C2440A處理器與DM9000AE連接的結構如圖2所示,DM9000AE通過總線與處理器相連,中斷與處理器外部中斷相接。
[align=center]

圖2 S3C2440A處理器與DM9000AE連接的結構[/align]
S3C2440A微處理器是一款由Samsung半導體公司為手持設備和各種多用途應用設計,基于ARM920T內核的16/32位RISC的低功耗、高集成度的微處理器,,采用五級流水線和哈佛結構,289腳FBGA封裝,。S3C2440在包含ARM920T核的同時,增加了豐富的外圍資源,主要包括1個LCD控制器;3個通道的UART;4個通道的DMA;4個具有PWM功能的16位定時/計數器和1個16位內部定時器,支持外部時鐘源;8通道的10位ADC;觸摸屏、IIC總線、IIS總線、SD卡和MMC卡、攝像頭接口;130位通用I/O口和24位外部中斷源。
DM9000AE以太網接口電路如圖的連接如圖3所示。處理器利用片選DM_CS和地址線BADDR分別連接DM9000AE芯片的CS引腳和CMD引腳,S3C2440的數據線BDATA[15:0]與DM9000AE的數據線SD[15:0]連接,用來實現DM9000與S3C2440之間的數據傳輸;S3C2440的DM_IOR引腳連接DM9000AE的讀引腳IOR#,DM_IOW引腳連接DM9000AE的寫引腳IOW#;同時,DM9000AE占用S3C2440的中斷引腳EINT7,使得S3C2440能夠響應DM9000AE的中斷。DM9000AE與網絡的連接由接收信號線RX+、RX-和發送信號線TX+、TX-通過隔離變壓器E-2023與以太網水晶接頭RJ_45相連。隔離變壓器的主要作用是將嵌入式系統與外部線路相隔離,防止干擾和燒壞元器件,實現帶電的插拔功能。
[align=center]

圖3 以太網接口電路[/align]
4.網絡接口模塊的軟件設計
本系統采用Windows CE操作系統,具有強大的網絡支持功能,Windows CE支持包括TCP / IP在內的Internet的所有網絡協議。Windows CE的網絡驅動程序都遵循NDIS(Network Driver Interface Specification,網絡驅動接口規范),NDIS提供了兩個抽象層,用來把網絡驅動程序和協議棧相連。NDIS模型的示意圖圖4所示。
[align=center]

圖4 NDIS模型的示意圖[/align]
DM9000AE在windows CE下的驅動程序就是基于這個模型而編寫,被編譯成動態鏈接庫,以用戶態下的DLL文件形式存在。入口函數為DriverEntry()。DM9000驅動的工作流程如圖5所示。
NdisMInitializeWrapper()函數的作用是通知NDIS 一個小端口網卡正在被初始化,此函數在ndis.dll中提供。然后對NDIS40_MINIPORT_CHARACTERISTICS結構體變量初始化,主要是設置一些回調函數(MiniportInitialize(),MiniportReset(),MiniportInterruptHandler(),MiniportISRHandler(),MiniportQueryInformation(),MiniportSetInformation(),MiniportSend()。接著就是通過NdisMRegisterMiniport()函數利用NDIS40_MINIPORT_CHARACTERISTICS這個結構體向NDIS系統進行注冊。再接下來就是MiniportInitialize(),在其中有NIC_DRIVER_OBJECT類的初始化,以及該類的EDriverInitialize()函數調用,在此函數中全面展開了dm9000的所有初始化操作。
對DM9000的所有初始化操作的實現在dm9000.cpp文件中,主要也是通過DeviceEntry()這個函數來實現。在DeviceEntry()這個函數中只做了一件事:new了一個C_DM9000類的實例并return。緊接著就是C_DM9000的實例通過DeviceSetDefaultSettings();DeviceSetEepromFormat();DeviceRetriveConfigurations(hconfig);EDeviceValidateConfigurations()等等對DM9000AE進行的一系列初始化操作。然后NIC_DRIVER_OBJECT指向DriverStart(),在DriverStart()中C_DM9000只進行了一個非常簡單但最重要的操作就是它在此DeviceEnableInterrupt()啟動了中斷,接下來就是無休止的等待、接收、發送,DM9000就此開始工作了。
[align=center]

圖5 DM9000驅動的工作流程[/align]
在完成了驅動程序之后,我們還需要在Platform.reg文件中對DM9000的注冊表項進行相應的設置:
[HKEY_LOCAL_MACHINE\Comm\DM9000]
"DisplayName"="Crystal DM9000 ISA Ethernet Controller"
"Group"="NDIS"
"ImagePath"="DM9000.DLL"
[HKEY_LOCAL_MACHINE\Comm\DM9000\Linkage]
"Route"=multi_sz:"DM90001"
[HKEY_LOCAL_MACHINE\Comm\DM90001\Parms]
"BusNumber"=dword:0
"BusType"=dword:0
"InterruptNumber"=dword:3E
"IoBaseAddress"=dword:D3000000
"RxMode"="PIO"
"NetworkAddress"="00-01-33-33-33-33"
[HKEY_LOCAL_MACHINE\Comm\DM90001\Parms\TcpIp]
"EnableDHCP"=dword:0
"DefaultGateway"="192.168.126.1"
"UseZeroBroadcast"=dword:0
"IpAddress"="192.168.126.100"
"Subnetmask"="255.255.255.0"
"DNS"="192.168.126.1"
[HKEY_LOCAL_MACHINE\Comm\Tcpip\Linkage]
"Bind"=multi_sz: "ppp", "DM90001"
將設計的模塊與本地局域網連通,并分配MAC地址和IP地址,利用PC的ping程序,得到回應,說明ARP、IP、ICMP協議正常。利用自己編寫的基于windows的應用程序,向模塊發送連接請求,模塊返回正確的應答信息,TCP協議正常。
5.結束語
本文詳細介紹了基于三星公司ARM9芯片S3C2440嵌入式系統的網絡接口設計方案,在實際應用中該系統運行穩定,能夠十分方便地實現嵌入式系統的網絡互連。由于采用了高性能的工業級以太網控制器DM9000AE,系統通訊快速可靠,具有很高的實時性。在以太網日益普及的今天,此方案能夠給那些傳統不具備網絡通訊能力的嵌入式設備進行智能化改造,也適用于新型智能儀器儀表和工業自動化系統設備的開發,有著廣泛的應用前景。
參考文獻:
[1] SAMSUNG PRODUCT OVERVIEW 關于S3C2440X技術手冊.
[2]周立功.等ARM微微控制器基礎與實踐[M].北京:航空航天大學出版社
[3]于明,范書瑞,曾祥燁.ARM9嵌入式系統設計與開發教程.2006,218-223
[4]DM9000AE data sheet. DAVICOM.
http://www.davicom.com/
作者簡介:
王曉薇(1983-)女 重慶人 四川大學電氣信息學院碩士研究生。研究方向:信號與信息處理,嵌入式系統設計。
夏健剛(1962—)男 江蘇人 四川大學電氣信息學院教授,碩士生導師,研究方向:信號與信息處理,嵌入式系統設計等。
聯系方式:四川大學電氣信息學院信號與信息處理05級研 610065 王曉薇
E-mail:vivian20089@126.com