時間:2008-06-12 17:20:00來源:dujing
圖1 DM9000AE內部邏輯結構[/align]
2.2工作原理
DM9000AE可與微處理器以8 bit或16 bit的總線方式連接,并可根據需要以單工或全雙工等模式運行。在系統上電時,處理器通過總線配置DM9000AE內部網絡控制寄存器 (NCR)、中斷寄存器(ISR)等,完成DM9000AE的初始化。隨后DM9000A進入數據收發(fā)等待狀態(tài)。
當處理器要向以太網發(fā)送數據幀時,先將數據打包成UDP或IP數據包,并通過8 bit或16bit總線逐字節(jié)發(fā)送到DM9000A的數據發(fā)送緩存中,然后將數據長度等信息填充到DM9000AE相應寄存器內,隨后發(fā)送使能命令,DM9000AE將緩存的數據和數據幀信息進行MAC組幀,并發(fā)送出去。
當DM9000AE接收到外部網絡送來的以太網數據時,首先檢測數據幀的合法性,如果幀頭標志有誤或存在CRC校驗錯誤,則將該幀數據丟棄,否則將數據幀緩存到內部RAM,并通過中斷標志位通知處理器,處理器收到中斷后對DM9000AE接收RAM的數據進行處理。
DM9000AE自動檢測網絡連接情況,根據網速設置內部的數據收發(fā)速率為10Mb/s或100 Mb/s。同時,DM9000AE還能根據RJ45接口連接方式改變數據收發(fā)引腳的方向,因此無論外部網線是采用對等還是交叉方式,系統均能正常通信。
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-和發(fā)送信號線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,網絡驅動接口規(guī)范),NDIS提供了兩個抽象層,用來把網絡驅動程序和協議棧相連。NDIS模型的示意圖圖4所示。
[align=center]
圖4 NDIS模型的示意圖[/align]
DM9000AE在windows CE下的驅動程序就是基于這個模型而編寫,被編譯成動態(tài)鏈接庫,以用戶態(tài)下的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()啟動了中斷,接下來就是無休止的等待、接收、發(fā)送,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的應用程序,向模塊發(fā)送連接請求,模塊返回正確的應答信息,TCP協議正常。
5.結束語
本文詳細介紹了基于三星公司ARM9芯片S3C2440嵌入式系統的網絡接口設計方案,在實際應用中該系統運行穩(wěn)定,能夠十分方便地實現嵌入式系統的網絡互連。由于采用了高性能的工業(yè)級以太網控制器DM9000AE,系統通訊快速可靠,具有很高的實時性。在以太網日益普及的今天,此方案能夠給那些傳統不具備網絡通訊能力的嵌入式設備進行智能化改造,也適用于新型智能儀器儀表和工業(yè)自動化系統設備的開發(fā),有著廣泛的應用前景。
參考文獻:
[1] SAMSUNG PRODUCT OVERVIEW 關于S3C2440X技術手冊.
[2]周立功.等ARM微微控制器基礎與實踐[M].北京:航空航天大學出版社
[3]于明,范書瑞,曾祥燁.ARM9嵌入式系統設計與開發(fā)教程.2006,218-223
[4]DM9000AE data sheet. DAVICOM.http://www.davicom.com/
作者簡介:
王曉薇(1983-)女 重慶人 四川大學電氣信息學院碩士研究生。研究方向:信號與信息處理,嵌入式系統設計。
夏健剛(1962—)男 江蘇人 四川大學電氣信息學院教授,碩士生導師,研究方向:信號與信息處理,嵌入式系統設計等。
聯系方式:四川大學電氣信息學院信號與信息處理05級研 610065 王曉薇
E-mail:vivian20089@126.com
標簽:
傳動網版權與免責聲明:凡本網注明[來源:傳動網]的所有文字、圖片、音視和視頻文件,版權均為傳動網(connectcrack.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“傳動網”,違反者本網將追究其法律責任。
本網轉載并注明其他來源的稿件,均來自互聯網或業(yè)內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。
產品新聞
更多>2025-10-09
2025-09-23
2025-09-23
2025-09-08
華為昇騰Atlas800iA2 910B服務器Deepsee...
2025-09-04
2025-09-03