首页 dm9000

dm9000

举报
开通vip

dm9000dm9000 [日期:2008-7-1] 来源:微计算机信息 作者:李剑雄 张 策 杨 军 [字体:大 中 小] 豆丁DocIn.com– 全球最大文档库! 摘要:针对ARM CPU S3C2410的特点,设计开发了外围网卡接口平台,通过驱动程序对 以太网控制芯片DM9000的控制,实现了网络数据传输功能。硬件方面主要涉及以太网网 络接口的设计,软件方面主要是设计以太网控制芯片驱动程序。该嵌入式系统网络接入方案 具有硬件接口简单、外围器件少、价格低廉、开发周期短等特点。 关键词:ARM; DM9000; 网卡...

dm9000
dm9000 [日期:2008-7-1] 来源:微计算机信息 作者:李剑雄 张 策 杨 军 [字体:大 中 小] 豆丁DocIn.com– 全球最大文档库! 摘要:针对ARM CPU S3C2410的特点,设计开发了外围网卡接口平台,通过驱动程序对 以太网控制芯片DM9000的控制,实现了网络数据传输功能。硬件方面主要涉及以太网网 络接口的设计,软件方面主要是设计以太网控制芯片驱动程序。该嵌入式系统网络接入方案 具有硬件接口简单、外围器件少、价格低廉、开发周期短等特点。 关键词:ARM; DM9000; 网卡 要实现小型嵌入式设备的Internet接入,TCP/IP首先要解决的是底层硬件问题,即协议的 物理层。Ethernet具有成熟的技术、低廉的网络产品、丰富的开发工具和技术支持,当现场 总线的发展遇到阻碍时,以太网控制网络技术以其明显的优势得到了迅猛的发展,并逐渐形 成了现场总线的新 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 ——Ethernet。考虑到国内局域网大部分是以太网,随着交换式网络、 宽带网络的发展,基于以太网的嵌入式设备Internet接入应用有着现实意义。 在现有嵌入式系统中,大多数选用的是10Mb/s的以太网卡,其传输速率慢,已不能再适应 现在人们的 要求 对教师党员的评价套管和固井爆破片与爆破装置仓库管理基本要求三甲医院都需要复审吗 。而其它10/100Mb/s网卡芯片或工艺复杂或成本较高,不适应工业制造。 而DM9000是完全综合的、成本较低的单一快速以太网控制器芯片,具有通用的处理器接 口。它被设计为低功耗、高处理性能,而其设计又非常简单,所以可以容易的完成不同系统 的软件驱动开发。 DM9000——DAVICOM公司的10/100Mb/s自适应以太网芯片。其特点是:支持8位、16位、32位数据总线宽度;寄存器操作简单有效,有成熟的Linux驱动程序支持;3.3V接口电平;成本相当低廉;还可以使用MII接口和PHY芯片连接。 1 DM9000S3C2410 1.1 硬件整体电路设计 硬件上要完成DM9000与ARM芯片S3C2410三大总线连接,以及DM9000与以太网水晶接头RJ45的连接。基于ARM 嵌入式系统和以太网的接口如图1。 图1 ARM 嵌入式系统与以太网的接口电路示意图 1.2 DM9000与S3C2410连接 实现DM9000与S3C2410连接,必须对两者间的数据、地址、控制三大总线进行连接和转 换。S3C2410是32位微处理器,有32根地址线,支持4GB存储空间。其中0—40000000的1G空间被分为8块128M 空间,分别由NGCS0—NGCS7片选。DM9000为16位以太网控制芯片。图2给出了S3C2410与DM9000的连接方法。 图2 S3C2410与DM9000的逻辑连接 对DM9000读写操作,首先对DM9000正确寻址。AEN (地址允许)是输入引脚片选信号。SA4~SA9是地址总线4~9位,当AEN低且SA9和SA8高,而SA7、SA6、SA5、SA4为低时,则DM9000被选中。 图3 S3C2410与DM9000的连接电路 DM9000 默认I/0 基地址为300H。CMD 引脚用于设置COMMAND 模式,CMD为高时,选择数据端口。CMD为低时,选地址端口。数据端口和地址端口的地址码由下式决定: DM9000地址端口=高位片选地址+300H+0H DM9000数据端口=高位片选地址+300H+4H 其中,高位片选地址由S3C2410的NGCS3提供,即为:0X100000000H。 实际设计电路如图3所示,其中nWAIT为读写等待信号。由于在S3C2410中以太网卡的中断为9号中断,所以 EINT9_ETHERNET为中断信号。RESET为网卡芯片重启信号。2 5MHz OSCILLATOR为芯片提供25MHz的工作频率。(在本图中省去了S3C2410芯片) SD0~SD15数据总线与S3C2410的数据总线连接。 2 DM9000 2.1 驱动程序整体设计 Linux网络驱动程序的体系结构可划分为从上到下依次为网络协议接口、网络设备接口层、 提供实际功能的设备驱动功能层以及网络设备媒介层。Linux内核中提供了网络设备接口级别以上层次的代码,所以移植(或编写)特定网络硬件的驱动程序最主要的工作就是完成设 备驱动功能层,主要包括数据的接收、发送等控制。在Linux中所有网络都抽象为一个接口,由结构体 net_device来 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示网络设备在内核中的运行情况,即网络设备接口。它既包括了 网络设备接口,如回环(loopback)设备,也包括了硬件网络设备接口,如以太网卡。 驱动程序运行时,操作系统先调用检测例程以发现安装的网卡,如网卡支持即插即用,检测 例程自动发现网卡参数。否则,驱动程序运行前,设置好网卡参数供驱动程序使用。核心发 送数据时,调用驱动程序的发送例程。将数据写入空间,再激活物理发送过程。面向物理层 接口程序中断处理例程。当网卡接收数据、发送过程结束或出错时,网卡产生中断,核心调 用中断处理例程,再判断中断发生原因,并进行处理。 驱动程序流程如图4,分为主程序和中断服务程序,主程序进行DM9000的初始化和网卡检测、网卡参数获取。中断服务程序以程序查询方式识别中断源,完成相应处理。具体分别 如图4(a)和(b)。 图4 DM9000驱动程序流程 在整个过程中,首先要通过检测物理设备的硬件特征判断网络物理设备是否存在,然后决定 是否启动这个驱动程序。接着会对设备进行资源配置,比如,即插即用的硬件就可在这个时 候进行配置;而在本嵌入式平台上,以太网的MAC地址也在这里指定。配置好硬件占用的 资源后,就可向系统申请这些资源,如中断、I/O空间等。最后,对结构体net_device相应的成员变量初始化,使得一个网络设备可被系统使用。 数据包的发送和接收是实现Linux网络驱动程序中关键的过程,对这两个过程处理的好坏将 直接影响到网络的整体运行质量。驱动程序中并不存在一个接收方法。应由底层驱动程序来 通知系统有数据收到。一般情况下,设备收到数据后都会产生一个中断,在中断处理程序中 驱动程序申请一块sk_buff(如定义为skb),从硬件读出数据放到申请好的缓冲区中。 3 DM9000 3.1 测试环境 在调试过程中,可以先建立可下载的镜像文件。在目标板上先烧入vivi。通过vivi将内核映像下载到目标板运行。而网络驱动是属于BSP的一部分所以会在下载地过程中一同写入目 标板。 (1)主机环境 主机环境是在Fedora上运行的Linux的集成交叉开发环境及相关的测试用软 件。 (2)目标机环境 目标机的硬件环境是要作为海信商机使用的SBC2410A(ARM920T内核)开发板。 由主机和目标机共同组成了网络驱动程序的测试环境,两者通过串口及网线相连,在调试网 络驱动之前要通过串口加载程序。加载了程序之后就可以针对以太网接口来进行相关的测试 工作。 3.2 硬件测试 当成功的将DM9000网络芯片的驱动程序加载到Linux内核中后,就要对其进行测试。首 先,要进行的就是硬件的测试。因为DM9000有4个GPIO端口,这里我们只要对这4个端口进行测试,如果它们能够正常读写,则可说明DM9000网卡应工作在正常状态下。 在测试程序进行编译运后,运行过程中,用万用表分别测量4个所对应引脚的电压,经测 试为3.3V,说明该引脚硬件正常,则芯片工作在正常状态下。 3.3 驱动程序测试 测试过程中在目标机上编写基于TCP协议的tcpServer()任务作为测试用程序,其功能是实 现最简单TCP服务器端程序。上位机运行相应的Client客户端程序,由两端组成TCP的Client-Sever系统进行网络接口的速度测试和可靠性的测试。 表4-1 测试项目及结果 测试项目 测试方法 测试结果 Ping的响连接好测试机与目标机,进行测试结果: 应 ping命令包测试。 能够成功地响应ping 包。 在Client-Sever系统中,进行数速度测试 测试结果: 据流量测试。在Client-Sever系 可靠性测速度为10.8Mbps; 统中,进行不间断测试。 试 无丢包现象;误码率0 测试结论:通过对网络驱动程序的测试,证明所开发的网络驱动程序实现了所有先期设计功 能,并在速度上得到了验证,能够满足大批量数据的传输工作。 传送3个包到202.108.9.39,从202.108.9.39接收3个包,无丢失。 本文创新点:S3C2410A内部没有内嵌的专用网卡控制器,因此在以S3C2410A为硬件平台的嵌入式设备中增设网卡模块,必须自行设计接口电路并进行相应的驱动开发,本文使用 SBC2410(ARM920T内核)开发板,作为软硬件运行的硬件平台,设计DM9000快速以太网网卡硬件电路并进行驱动程序的开发与实现。 采用此方案设计的网卡接口电路可应用到多种嵌入式设备中,在税控收款机应用中直接经济 效益可达20余万元。 参考文献 [1]葛立明,范多旺,陈光武.基于ARM嵌入式以太网接口设计与实现[J].微计算机信息,2007,5-2:22 [2]于明,范 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 瑞,曾祥烨ARM9嵌入式系统设计与开发教程[M]. 北京:电子工业出版社,2006 [3]王学龙. ARM微控制器基础与实战[M]. 北京:北京航空航天大学出版社,2003 [4]周立功等..嵌入式设计及Linux驱动开发指南—基于ARM9处理器[M]. 北京:电子工业出版社,2005.2 DM9000AES3C2440 :本文介绍了一个基于三星ARM9芯片S3C2440嵌入式系统的以太网接口电路设计方案,采用了 工业级以太网控制器DM9000AE成功实现了嵌入式系统网络数据交换。论文在重点阐述了网络接口电 路基础之上,对Windows CE系统控制软件部分DM9000AE的驱动程序和注册表项进行了具体分析。 嵌入式;S3C2440;以太网接口;DM9000;Windows CE A Design of Network Interface of S3C2440 Embedded System Based on DM9000 Wang xiao-wei ,Xia jian-gang 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. 随着微电子技术和计算机技术的发展,嵌入式技术得到广阔的发展,已成为现代工业控制、通信类和 消费类产品发展的方向。以太网在实时操作、可靠传输、标准统一等方面的卓越性能及其便于安装、维 护简单、不受通信距离限制等优点,已经被国内外很多监控、控制领域的研究人员广泛关注,并在实际 应用中展露出显著的优势。本文提出了一种基于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. 在嵌入式系统中增加以太网接口,通常由如下两种方法实现。第一种方法采用带有以太网接口的嵌入 式处理器。这种方法要求嵌入式处理器有通用的网络接口,通常这种处理器是面向网络应用而设计的,通过内部总线的方法实现处理器和网络数据的交换。另一种方法采用嵌入式处理器+网卡芯片结构。这 种方法对嵌入式处理器没有特殊要求,只要把以太网芯片连接到嵌入式处理器的总线上即可。此方法通 用性强,不受处理器的限制,但是,处理器和网络数据交换通过外部总线交换数据[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_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的应用程序,向模块发送连接请求,模块返回正确的应答信息,TCP协议正常。 5. 本文详细介绍了基于三星公司ARM9芯片S3C2440嵌入式系统的网络接口设计方案,在实际应用中该系统运行稳定,能够十分方便地实现嵌入式系统的网络互连。由于采用了高性能的工业级以太网控制器DM9000AE,系统通讯快速可靠,具有很高的实时性。在以太网日益普及的今天,此方案能够给 那些传统不具备网络通讯能力的嵌入式设备进行智能化改造,也适用于新型智能仪器仪表和工业自动化 系统设备的开发,有着广泛的应用前景。
本文档为【dm9000】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_014457
暂无简介~
格式:doc
大小:182KB
软件:Word
页数:0
分类:生活休闲
上传时间:2017-10-11
浏览量:36