网站首页 | 技术文章 | 解决方案 | 电子书籍 | 下载中心 | 电子商城 | 技术论坛 | 电子博客 | 商务信息  
联系站长
加入收藏
会员登陆
交易首页 最新信息 - 推荐信息 - 热门信息 - 免费发布 - 行业新闻 - 行业资讯 - 行业知识 - 积分说明 - 信息分类 - 企业展示 - 帮助
 您的位置: 中国电子设计 >> 技术文章 >> 消费电子 >> 正文 商务信息栏目开通公告  [2008-05-19 11:47:00]
   □  基于TCP/IP的以太网硬件电路和驱动程序设计   
基于TCP/IP的以太网硬件电路和驱动程序设计
[作者:段俊洁 金光 李润知 王宗敏    转贴自:微计算机信息    点击数:    更新时间:2008-6-26
【字体:

Research and design of the NIC circuit and the driver based on TCP/IP 
摘要:在嵌入式系统中,可以利用TCP/IP协议,成功的实现双机网络互连,既提高了数据传输的速度,又保证了数据传输的正确性,同时也扩展了数据传输的有效半径。该文介绍TCP/IP通信模块的硬件构成、功能和以太网接口芯片的驱动方式,完成了以太网硬件电路和驱动的设计。
关键词:TCP/IP协议;电路;驱动
Abstract: The connection of double computer and networks is successfully accomplished based on TCP/IP protocols in the embedded system, which can not only raise the speed and reliability of data transmission, but also expand the effective radius of the data transmission. The paper presents the hardware framework and function of TCP/IP communication module and the driving mode of the chip for Ethernet interface, and the designs of the Ethernet hardware circuit and driver program are also completed.
Key words: TCP/IP protocol;circuit;driver

1  前言
随着Internet 网络软、硬件的快速发展,互联网用户正以指数级增长。而各种家电设备、PDA、仪器仪表、工业生产中数据的采集与控制等设备也正在逐渐走向网络化,以便共享互联网络中庞大的资源。TCP/IP协议已经成为计算机网络互连事实上的标准,每时每刻保证了数据的准确传输。在嵌入式系统中,可以利用TCP/IP协议中的ARP、IP、ICMP、UDP和TCP,成功的实现双机的网络互连[3]。因此,如何在价格低廉、资源有限的嵌入式系统中实现网络通信功能,已经成为嵌入式系统开发人员面临的重要课题。
2  网卡硬件电路设计
本文所选用的LPC2292嵌入式微处理器是以ARM7TDMI为核心的。ARM7系列微处理器为低功耗的32位RISC处理器,最适合用于对价位和功耗要求较高的消费类应用。
系统的ARM微处理器完成主要的控制工作,而网络接口控制器(NIC)则是网络协议实现的物理媒介及系统与外部通信媒介之间的接口。系统要实现数据传输,这两部分是关键,其他部分则协同这两部分共同完成数据传输。在本文中,ARM微控制器我们选用LPC2292,网络接口控制器我们选用台RTL8019AS。网卡电路的硬件组成如图1所示。


                           图 1 网卡电路的硬件组成
在本课题中,LPC2292和RTL8019AS之间的数据传输采用16位模式,使用了D15~D0共16根数据线,读写以字(两个字节)为单位,这样可使系统有更高的数据传输速率,从而提高了系统效率。CPU使用I/O方式来与RTL8019AS交换数据,如上图所示,LPC2292的A5~A1分别与RTL8019AS的SA4~SA0相连,主处理器通过I/O地址对应的寄存器来完成对RTL8019AS的操作。考虑到目前市面上广泛使用的RJ45连接器HR901170A,已经包括了隔离变压器,而且价格也很低,直接利用RJ45连接器,可以避免这部分接口电路的硬件电路错误,保证系统正常工作,而且可降低成本。
在本电路中,由于网络控制器RTL8019AS没有片选输入端,所以我们使用四总线缓冲器74HC125来控制RTL8019AS上的IORB(读)、IOWB(写),SA5和SA6四个管脚,LPC2292的NIC片选信号与74HC125的门控端G相连。
3  驱动程序软件设计
系统只有硬件还不能工作,必须在硬件和软件协同配合下才能工作[1]。所以,软件设计也是系统开发过程中的重要组成部分。软件设计将从其要实现的功能出发来实现。下面我们先了解一下RTL8019AS内部的物理细节,然后分析如何实现功能。
3.1  RTL8019AS存储器及I/O映射
RTL8019AS的地址范围为0x0000~0x7fff。其中,0x0000~0x00ff是RTL8019AS上EEPROM 9346的映像存储。另外,在RTL8019AS中,内部与NE2000兼容的寄存器也有I/O映射地址,其范围为0x0000~0x001f,具体每个寄存器的地址可参考RTL8019AS内部寄存器表。LPC2292对这些寄存器的操作是将它们作为微处理器的I/O端口设备。
3.2  RTL8019AS内部存储缓冲区管理
RTL8019AS内部有一个容量为8K×2Byte的内部数据缓冲RAM,用来缓冲存储发送和接收的数据分组。RTL8019AS内部的RAM是以256字节为一页,按页存储的结构,RAM地址的高8位又叫页码[2]。把前面的12页用来存放发送的数据包,后面的52页用来存放接收的数据包。为了有效利用缓冲区,RTL8019AS将接收缓冲RAM构成环形缓冲结构。52个这样的缓冲区通过指针控制链接成一条逻辑上的缓冲环。为便于缓冲环读/写操作。还需要两个指针,它们是当前页指针CURR,确定下一包放在何处,起着缓冲环写页指针的作用;边界指针BNRY,指向未经微处理器取走处理的最早到达数据包的起始页,起着缓冲环读页指针的作用。
3.3  网卡内部的寄存器
RTL8019AS内部的与NE2000兼容的寄存器均为8位寄存器,被映射到4页上,每页有16个寄存器。当前映射页由命令寄存器CR的PS0和PS1位决定,页内寄存器选择由地址线决定。第0页寄存器用于收发过程,第1页寄存器则主要用于RTL8019AS的初始化,第2页寄存器用于环路诊断,第3页寄存器用于某些软件参数设置。
3.4  网卡驱动的软件实现
数据的收发其实就是对RTL8019AS内部的寄存器进行操作的过程,所以首先得对RTL8019AS进行初始化,主要是设置所需的寄存器状态,建立网络接口收发的条件,并对RTL8019AS缓冲区RAM进行划分,建立接收缓冲环。数据的收发就是对前面所介绍的寄存器的读写过程,当然其中还涉及到对RTL8019AS数据缓冲环的操作。网络接口通过两个DMA操作来完成数据的接收和发送。本地DMA完成RTL8019AS和它内部的FIFO之间的数据传送。远程DMA完成RTL8019AS和CPU之间的数据传送。所有这些功能由驱动程序实现,下面将以太网驱动程序进行介绍:
3.4.1  RTL8019AS初始化
RTL8019AS的初始化,其实就是对RTL8019AS内部与NE2000兼容的寄存器的初始化。程序首先设置了ARM芯片LPC2292的I/O口属性。然后对RTL8019AS网络芯片进行复位,包括硬件复位和软件复位。再进入芯片停止状态,对内部寄存器进行设置,包括MAC地址的写入和内部SRAM的分配。最后,使芯片进入运行状态结束初始化。
3.4.2  数据接收过程
RTL8019AS完成初始化后,就处于接收状态,一旦有数据分组到达,就自动执行本地DMA,将RTL8019AS FIFO中的数据送入接收缓冲环,然后向LPC2292申请“数据分组到达”中断请求。同时RTL8019AS内部的寄存器会发生相应变化,如ISR、CURR。CPU响应中断请求(读ISR,以判断中断类型)后,从接收缓冲环中取出数据分组至LPC2292的存储器中,然后对接收缓冲环CURR、BNRY指针内容进行修改,以便RTL8019AS能从网络上正确接收后续分组。启动远程DMA后,LPC2292不断读写RTL8019AS的数据端口(BASE_ADDR+10H),就能成功执行远程DMA操作,完成CPU与RTL8019AS缓冲RAM之间数据的交换。
接收函数总是把所有数据报都读出来后才退出,而接收缓冲区没有指示哪些报未被处理。因此,如果接收到的数据报(指放在网络接口芯片内部缓存的)来不及处理,那么可能会发生丢包现象,所以对处理速度慢的机器需要设置更多的接收缓冲区。几乎接收函数的所有代码都属于临界区代码。函数一开始就进入临界区。如果网络接口芯片是处于复位状态,则对网络芯片进行初始化然后退出。
3.4.3数据发送过程
在说明数据发送过程之前,先讨论一下RTL8019AS网络芯片的发送缓冲区问题。在初始化RTL8019AS芯片时把内部的16KB SRAM分为两个部分,3KB空间用于发送数据,13KB空间用来接收数据。而3KB的发送缓冲区可以保存2个完整的以太网帧,可以看作2个发送缓冲区,这样就可以轮流对这两个发送缓冲区进行操作。
首先,数据发送函数通过传递的参数计算出需要发送的数据总长度。然后选择一个RTL8019AS网络芯片内部的发送缓冲区,把数据都发送到RTL8019AS的发送缓冲区,设置芯片发送的起始地址(即发送缓冲区的起始地址)。最后发送数据。如果发送失败则重发。重发次数最多为6次,6次以后就退出。程序流程图如图2所示。


       图2 驱动程序发送函数流程图
4  结论
本文详细介绍了TCP/IP通信模块的硬件构成、功能和以太网接口芯片的驱动方式,完成了以太网硬件电路和驱动程序的 。
本文作者创新点:经过实际测试,该系统克服了传统通信方式自动化程度低、处理能力有限、通信方式落后的缺点,在信息处理、网络通信等性能上有了显著提高。
参考文献:
[1]马忠梅等. ARM嵌入式处理器结构与应用基础. 北京:北京航空航天大学出版社,2002,1-90
[2]宁立革,孙鹤旭,林涛,张妍.基于嵌入式操作系统的USB驱动程序开发[J].微计算机信息,2005,5:105-107
[3]全成斌. 嵌入式系统以太网驱动程序的设计方法. 小型微型计算机系统,2002,23(9):1029-1032
作者简介:
段俊洁(1981.3)女(汉族),河南开封人,硕士,主要研究方向为计算机网络
金 光(1980-)男(汉族),河南开封人,硕士,助教,研究方向:自动控制。
李润知(1978-),女(汉族),河南洛阳人,博士,主要研究方向为网络测量;
王宗敏(1964-),男(汉族),河南郑州人,博士,郑州大学教授、博士生导师,主要研究方向为计算机网络。

  • 上一篇文章:基于STR711FR2T6的非接触IC卡无线数据采集系统设计
  • 下一篇文章:基HMS标准的HFC网管软件的设计与实现
  • Google
     
    Web www.cediy.com
    发表评论 □告诉好友 □打印此文 □关闭窗口
     最新热点文章
     基于单片机和串行总线技术的热量表...
     数字温度传感器详解
     用AD8302实现RF/IF幅度和相位测量系...
     一种简单的10MHz频率源兼分配放大器...
     维氏电桥振荡器
     检验液晶显示器的简易测试仪
     
     最新推荐文章
     基于TMS320C6713与PC机的PCI总线高...
     基于TMS320VC5409和Cygnal单片机构...
     基于ARM控制器S3C44B0x的给煤机控制...
     基于USB 2.0的高速数据采集卡在虚拟...
     大功率谐振过渡软开关技术变频器研...
     大功率谐振过渡软开关技术变频器研...
     
     相 关 文 章
      ◇  网友评论:(只显示最新5条。评论内容只代表网友观点,与本站立场无关!)
     设为首页  加入收藏  关于本站  版权申明   联系站长   宣传赚点   友情链接
    如果我在线,不用加为好友,立刻与我交谈。 业务咨询QQ:342488946
    Copyright© 2004-2010 CEDIY.COM .All Rights Reserved
    粤ICP备05119258号