基于dm9000ae的s3c2440嵌入式系统的以太网接口设计

本文主要是关于dm9000ae的相关介绍,并着重对基于dm9000ae的s3c2440嵌入式系统的以太网接口设计进行了详尽的阐述。
dm9000ae dm9000ae是一款电子产品,存储转发。
主要特性:
* 支持处理器接口类型:字节/字/双字的i/o指令进行内部数据运算。
* 集成10/100m 收发器。
* 支持mii/rmii接口。
* 支持半双工背压流量控制模式。
* ieee802.3全双工流量控制模式。
* 支持远端唤醒和连接状态变化。
* 集成4k的双字sram。
* 支持存储转发和eeprom的芯片id。
* 支持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.网络接口硬件电路设计
在嵌入式系统中增加以太网接口,通常由如下两种方法实现。第一种方法采用带有以太网接口的嵌入式处理器。这种方法要求嵌入式处理器有通用的网络接口,通常这种处理器是面向网络应用而设计的,通过内部总线的方法实现处理器和网络数据的交换。另一种方法采用嵌入式处理器+网卡芯片结构。这种方法对嵌入式处理器没有特殊要求,只要把以太网芯片连接到嵌入式处理器的总线上即可。此方法通用性强,不受处理器的限制,但是,处理器和网络数据交换通过外部总线交换数据[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有更全面的认识。
相关阅读推荐:dm9000a与基带信号处理平台的结合应用
相关阅读推荐:dm9000ae工作原理 以太网接口电路设计

生物识别推动了芯片产业的发展
科技新闻精选:锤子法人变更 ,罗永浩由董事长变更为执行董事
大联大世平集团推出基于NXP产品的车身控制模块(BCM)方案
同步SAR模数转换器的片内校准优势详解
华为提前完成5G技术大规模业务验证,5G离商用还有多远?
基于dm9000ae的s3c2440嵌入式系统的以太网接口设计
爱立信发布了2019财年第三季度财报实现了营业收入58.41亿美元
使用MPI来跨多个GPU缩放应用
人工智能芯片“双PCT”的投资逻辑
博通支付1.605亿美元了结股权会计相关诉讼
英创信息技术WinCE下自动启动多个应用程序介绍
FPGA系统调试与测试及结论
西门子S71200 1500的模拟量线性转换及数据处理
华硕发布一款全新ROGThor电源产品
直流电机控制的基本方法
NVIDIA宣布推出99美元的Jetson Nano 外观小巧却功能强大
NI推出基于平台化方法的新一代汽车测试技术
上海加强民用无人机等“低慢小”航空器安全管理
小米6最新消息:不可按压/轻触返回 小米6Home键厉害了
在这个全民脱发的悲惨时刻,未来人工智能也许能解决这个问题