本文主要是關于dm9000ae的相關介紹,并著重對基于dm9000ae的s3c2440嵌入式系統的以太網接口設計進行了詳盡的闡述。
dm9000ae
DM9000AE是一款電子產品,存儲轉發。
主要特性:
* 支持處理器接口類型:字節/字/雙字的I/O指令進行內部數據運算。
* 集成10/100M 收發器。
* 支持MII/RMII接口。
* 支持半雙工背壓流量控制模式。
* IEEE802.3全雙工流量控制模式。
* 支持遠端喚醒和連接狀態變化。
* 集成4K的雙字SRAM。
* 支持4個GPIO管腳。
* 可選EEPROM設置。
* 低功耗模式。
* I/O管腳 3.3V--5V兼容。
* 48-pin cmos工藝 LQFP封裝。
應用:接口轉換,機頂盒,IP phone,監控處理等
產品優勢:
與同類產品比較具有以下獨特優勢:
* LOCAL BUS芯片,DM9000AE其基本特性是 48pin,10/100MLOCAL-BUS interface;工作模式8/16bit
* 2.5/3.5V低功耗;DM9000AE是全球最小顆粒單芯片, 體積小,便于布線制版
* 通過惠普認證AUTO-Midx(支持直接互連自動翻轉)TCP/Ip加速(IPV4 check sum offioad)
減輕CPU負擔,提高整機效能,20nsl/o讀寫時間
基于dm9000ae的s3c2440嵌入式系統的以太網接口設計
隨著微電子技術和計算機技術的發展,嵌入式技術得到廣闊的發展,已成為現代工業控制、通信類和消費類產品發展的方向。以太網在實時操作、可靠傳輸、標準統一等方面的卓越性能及其便于安裝、維護簡單、不受通信距離限制等優點,已經被國內外很多監控、控制領域的研究人員廣泛關注,并在實際應用中展露出顯著的優勢。本文提出了一種基于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低功耗。
圖1 DM9000AE內部邏輯結構
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]。
本設計采用的是S3C2440這款通用的嵌入式微處理器上擴展以太網接口的方式,即第二種方式。S3C2440A處理器與DM9000AE連接的結構如圖2所示,DM9000AE通過總線與處理器相連,中斷與處理器外部中斷相接。
圖2 S3C2440A處理器與DM9000AE連接的結構
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相連。隔離變壓器的主要作用是將嵌入式系統與外部線路相隔離,防止干擾和燒壞元器件,實現帶電的插拔功能。
圖3 以太網接口電路
4.網絡接口模塊的軟件設計
本系統采用Windows CE操作系統,具有強大的網絡支持功能,Windows CE支持包括TCP / IP在內的Internet的所有網絡協議。Windows CE的網絡驅動程序都遵循NDIS(Network Driver Interface Specification,網絡驅動接口規范),NDIS提供了兩個抽象層,用來把網絡驅動程序和協議棧相連。NDIS模型的示意圖圖4所示。
圖4 NDIS模型的示意圖
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就此開始工作了。
圖5 DM9000驅動的工作流程
在完成了驅動程序之后,我們還需要在Platform.reg文件中對DM9000的注冊表項進行相應的設置:
[HKEY_LOCAL_MACHINECommDM9000]
“DisplayName”=“Crystal DM9000 ISA Ethernet Controller”
“Group”=“NDIS”
“ImagePath”=“DM9000.DLL”
[HKEY_LOCAL_MACHINECommDM9000Linkage]
“Route”=multi_sz:“DM90001”
[HKEY_LOCAL_MACHINECommDM90001Parms]
“BusNumber”=dword:0
“BusType”=dword:0
“InterruptNumber”=dword:3E
“IoBaseAddress”=dword:D3000000
“RxMode”=“PIO”
“NetworkAddress”=“00-01-33-33-33-33”
[HKEY_LOCAL_MACHINECommDM90001ParmsTcpIp]
“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_MACHINECommTcpipLinkage]
“Bind”=multi_sz: “ppp”, “DM90001”
將設計的模塊與本地局域網連通,并分配MAC地址和IP地址,利用PC的PINg程序,得到回應,說明ARP、IP、ICMP協議正常。利用自己編寫的基于windows的應用程序,向模塊發送連接請求,模塊返回正確的應答信息,TCP協議正常。
結語
關于dm9000ae的相關介紹就到這了,希望通過本文能讓你對dm9000ae有更全面的認識。
-
嵌入式系統
+關注
關注
41文章
3587瀏覽量
129440 -
dm9000ae
+關注
關注
0文章
3瀏覽量
7446
發布評論請先 登錄
相關推薦
評論