首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于S3C2440嵌入式系统的以太网接口电路设计方案(2)

基于S3C2440嵌入式系统的以太网接口电路设计方案(2)


图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"=dword3000000
    "RxMode"="IO"
    "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协议正常。
    5.结束语
    本文详细介绍了基于三星公司ARM9芯片S3C2440嵌入式系统的网络接口设计方案,在实际应用中该系统运行稳定,能够十分方便地实现嵌入式系统的网络互连。由于采用了高性能的工业级以太网控制器DM9000AE,系统通讯快速可靠,具有很高的实时性。在以太网日益普及的今天,此方案能够给那些传统不具备网络通讯能力的嵌入式设备进行智能化改造,也适用于新型智能仪器仪表和工业自动化系统设备的开发,有着广泛的应用前景。
继承事业,薪火相传
返回列表