摘要:本文介紹了一個(gè)基于三星ARM9芯片S3C2440嵌入式系統(tǒng)的以太網(wǎng)接口電路設(shè)計(jì)方案,采用了工業(yè)級(jí)以太網(wǎng)控制器DM9000AE成功實(shí)現(xiàn)了嵌入式系統(tǒng)網(wǎng)絡(luò)數(shù)據(jù)交換。論文在重點(diǎn)闡述了網(wǎng)絡(luò)接口電路基礎(chǔ)之上,對(duì)Windows CE系統(tǒng)控制軟件部分DM9000AE的驅(qū)動(dòng)程序和注冊(cè)表項(xiàng)進(jìn)行了具體分析。
關(guān)鍵詞: 嵌入式;S3C2440;以太網(wǎng)接口;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.引言
隨著微電子技術(shù)和計(jì)算機(jī)技術(shù)的發(fā)展,嵌入式技術(shù)得到廣闊的發(fā)展,已成為現(xiàn)代工業(yè)控制、通信類和消費(fèi)類產(chǎn)品發(fā)展的方向。以太網(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)注,并在實(shí)際應(yīng)用中展露出顯著的優(yōu)勢(shì)。本文提出了一種基于DM9000AE網(wǎng)絡(luò)接口芯片和32位三星ARM9處理器S3C2440嵌入式系統(tǒng)的以太網(wǎng)接口的設(shè)計(jì)方案,并在Windows CE操作系統(tǒng)上開發(fā)移植了網(wǎng)絡(luò)驅(qū)動(dòng)程序?qū)崿F(xiàn)網(wǎng)絡(luò)的接入。
2. DM9000AE工作原理
2.1 DM9000的主要特性和總體結(jié)構(gòu)
DM9000AE是DEVICOM(臺(tái)灣聯(lián)杰國(guó)際)研發(fā)的一款10/100M快速以太網(wǎng)控制芯片。DM9000AE實(shí)現(xiàn)以太網(wǎng)媒體介質(zhì)訪問(wèn)層(MAC)和物理層( PHY)的功能,包括MAC數(shù)據(jù)幀的組裝/拆分與收發(fā)、地址識(shí)別、CRC編碼/校驗(yàn)、MLT-3編碼器、接收噪聲抑制、輸出脈沖成形、超時(shí)重傳、鏈路完整性測(cè)試、信號(hào)極性檢測(cè)與糾正等。DM9000AE內(nèi)部邏輯結(jié)構(gòu)如圖1所示。
DM9000AE具有以下主要性能:①48管腳的LQFP封裝,管腳少體積小;②支持8/16位數(shù)據(jù)總線;③適用于10Base-T和100Base-T,10/100M自適應(yīng),適應(yīng)不同的網(wǎng)絡(luò)速度要求,④內(nèi)置16KB的SRAM,用于收發(fā)緩沖,降低對(duì)主處理器的速度要求;⑤支持IP /TCP /UDP加速,減輕了CPU負(fù)擔(dān),提高網(wǎng)絡(luò)速度;⑥支持Back pressure半雙工流量控制,與IEEE802.3u兼容,支持IEEE802.3x全雙工流量控制;⑦20ns響應(yīng)時(shí)間,2.5V/3.3V低功耗。
[align=center]

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

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

圖3 以太網(wǎng)接口電路[/align]
4.網(wǎng)絡(luò)接口模塊的軟件設(shè)計(jì)
本系統(tǒng)采用Windows CE操作系統(tǒng),具有強(qiáng)大的網(wǎng)絡(luò)支持功能,Windows CE支持包括TCP / IP在內(nèi)的Internet的所有網(wǎng)絡(luò)協(xié)議。Windows CE的網(wǎng)絡(luò)驅(qū)動(dòng)程序都遵循NDIS(Network Driver Interface Specification,網(wǎng)絡(luò)驅(qū)動(dòng)接口規(guī)范),NDIS提供了兩個(gè)抽象層,用來(lái)把網(wǎng)絡(luò)驅(qū)動(dòng)程序和協(xié)議棧相連。NDIS模型的示意圖圖4所示。
[align=center]

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

圖5 DM9000驅(qū)動(dòng)的工作流程[/align]
在完成了驅(qū)動(dòng)程序之后,我們還需要在Platform.reg文件中對(duì)DM9000的注冊(cè)表項(xiàng)進(jìn)行相應(yīng)的設(shè)置:
[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"
將設(shè)計(jì)的模塊與本地局域網(wǎng)連通,并分配MAC地址和IP地址,利用PC的ping程序,得到回應(yīng),說(shuō)明ARP、IP、ICMP協(xié)議正常。利用自己編寫的基于windows的應(yīng)用程序,向模塊發(fā)送連接請(qǐng)求,模塊返回正確的應(yīng)答信息,TCP協(xié)議正常。
5.結(jié)束語(yǔ)
本文詳細(xì)介紹了基于三星公司ARM9芯片S3C2440嵌入式系統(tǒng)的網(wǎng)絡(luò)接口設(shè)計(jì)方案,在實(shí)際應(yīng)用中該系統(tǒng)運(yùn)行穩(wěn)定,能夠十分方便地實(shí)現(xiàn)嵌入式系統(tǒng)的網(wǎng)絡(luò)互連。由于采用了高性能的工業(yè)級(jí)以太網(wǎng)控制器DM9000AE,系統(tǒng)通訊快速可靠,具有很高的實(shí)時(shí)性。在以太網(wǎng)日益普及的今天,此方案能夠給那些傳統(tǒng)不具備網(wǎng)絡(luò)通訊能力的嵌入式設(shè)備進(jìn)行智能化改造,也適用于新型智能儀器儀表和工業(yè)自動(dòng)化系統(tǒng)設(shè)備的開發(fā),有著廣泛的應(yīng)用前景。
參考文獻(xiàn):
[1] SAMSUNG PRODUCT OVERVIEW 關(guān)于S3C2440X技術(shù)手冊(cè).
[2]周立功.等ARM微微控制器基礎(chǔ)與實(shí)踐[M].北京:航空航天大學(xué)出版社
[3]于明,范書瑞,曾祥燁.ARM9嵌入式系統(tǒng)設(shè)計(jì)與開發(fā)教程.2006,218-223
[4]DM9000AE data sheet. DAVICOM.
http://www.davicom.com/
作者簡(jiǎn)介:
王曉薇(1983-)女 重慶人 四川大學(xué)電氣信息學(xué)院碩士研究生。研究方向:信號(hào)與信息處理,嵌入式系統(tǒng)設(shè)計(jì)。
夏健剛(1962—)男 江蘇人 四川大學(xué)電氣信息學(xué)院教授,碩士生導(dǎo)師,研究方向:信號(hào)與信息處理,嵌入式系統(tǒng)設(shè)計(jì)等。
聯(lián)系方式:四川大學(xué)電氣信息學(xué)院信號(hào)與信息處理05級(jí)研 610065 王曉薇
E-mail:vivian20089@126.com