<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > 基于DM9000AE的S3C2440嵌入式系統的以太網(wǎng)接口設計

基于DM9000AE的S3C2440嵌入式系統的以太網(wǎng)接口設計

作者: 時(shí)間:2012-12-10 來(lái)源:網(wǎng)絡(luò ) 收藏


本文引用地址:http://dyxdggzs.com/article/153688.htm

4.jpg
圖4 NDIS模型的示意圖


在windows CE下的驅動(dòng)程序就是這個(gè)模型而編寫(xiě),被編譯成動(dòng)態(tài)鏈接庫,以用戶(hù)態(tài)下的DLL文件形式存在。入口函數為DriverEntry()。DM9000驅動(dòng)的工作流程如圖5所示。

NdisMInitializeWrapper()函數的作用是通知NDIS 一個(gè)小端口網(wǎng)卡正在被初始化,此函數在ndis.dll中提供。然后對NDIS40_MINIPORT_CHARACTERISTICS結構體變量初始化,主要是設置一些回調函數(MiniportInitialize(),MiniportReset(),MiniportInterruptHandler(),MiniportISRHandler(),MiniportQueryInformation(),MiniportSetInformation(),MiniportSend()。接著(zhù)就是通過(guò)NdisMRegisterMiniport()函數利用NDIS40_MINIPORT_CHARACTERISTICS這個(gè)結構體向NDIS進(jìn)行注冊。再接下來(lái)就是MiniportInitialize(),在其中有NIC_DRIVER_OBJECT類(lèi)的初始化,以及該類(lèi)的EDriverInitialize()函數調用,在此函數中全面展開(kāi)了dm9000的所有初始化操作。

對DM9000的所有初始化操作的實(shí)現在dm9000.cpp文件中,主要也是通過(guò)DeviceEntry()這個(gè)函數來(lái)實(shí)現。在DeviceEntry()這個(gè)函數中只做了一件事:new了一個(gè)C_DM9000類(lèi)的實(shí)例并return。緊接著(zhù)就是C_DM9000的實(shí)例通過(guò)DeviceSetDefaultSettings();DeviceSetEepromFormat();DeviceRetriveConfigurations(hconfig);EDeviceValidateConfigurations()等等對進(jìn)行的一系列初始化操作。然后NIC_DRIVER_OBJECT指向DriverStart(),在DriverStart()中C_DM9000只進(jìn)行了一個(gè)非常簡(jiǎn)單但最重要的操作就是它在此DeviceEnableInterrupt()啟動(dòng)了中斷,接下來(lái)就是無(wú)休止的等待、接收、發(fā)送,DM9000就此開(kāi)始工作了。

5.jpg
圖5 DM9000驅動(dòng)的工作流程


在完成了驅動(dòng)程序之后,我們還需要在Platform.reg文件中對DM9000的注冊表項進(jìn)行相應的設置:

[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

的模塊與本地局域網(wǎng)連通,并分配MAC地址和IP地址,利用PC的ping程序,得到回應,說(shuō)明ARP、IP、ICMP協(xié)議正常。利用自己編寫(xiě)的windows的應用程序,向模塊發(fā)送連接請求,模塊返回正確的應答信息,TCP協(xié)議正常。

5.結束語(yǔ)

本文詳細介紹了三星公司ARM9芯片的網(wǎng)絡(luò )方案,在實(shí)際應用中該運行穩定,能夠十分方便地實(shí)現系統的網(wǎng)絡(luò )互連。由于采用了高性能的工業(yè)級控制器,系統通訊快速可靠,具有很高的實(shí)時(shí)性。在日益普及的今天,此方案能夠給那些傳統不具備網(wǎng)絡(luò )通訊能力的設備進(jìn)行智能化改造,也適用于新型智能儀器儀表和工業(yè)自動(dòng)化系統設備的開(kāi)發(fā),有著(zhù)廣泛的應用前景。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>