51单片机RTL8019AS网卡驱动程序(重要有程序)

上传人:ni****g 文档编号:479574165 上传时间:2022-07-18 格式:DOC 页数:12 大小:210KB
返回 下载 相关 举报
51单片机RTL8019AS网卡驱动程序(重要有程序)_第1页
第1页 / 共12页
51单片机RTL8019AS网卡驱动程序(重要有程序)_第2页
第2页 / 共12页
51单片机RTL8019AS网卡驱动程序(重要有程序)_第3页
第3页 / 共12页
51单片机RTL8019AS网卡驱动程序(重要有程序)_第4页
第4页 / 共12页
51单片机RTL8019AS网卡驱动程序(重要有程序)_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《51单片机RTL8019AS网卡驱动程序(重要有程序)》由会员分享,可在线阅读,更多相关《51单片机RTL8019AS网卡驱动程序(重要有程序)(12页珍藏版)》请在金锄头文库上搜索。

1、51单片机RTL8019AS网卡驱动程序时间:2006-09-05 来源:作者:点击:3863 字体大小:【大 中小我的SNMP网管板使用了 RTL8019AS 10M ISA网卡芯片接入以太网。选 它的好处是:NE2000兼容,软件移植性好;接口简单不用转换芯片如PCI-ISA桥;价格便宜2.1$/片(我的购入价为22元RMB/片);带宽充裕(针对51);较长 一段时间内不会停产。8019有3种配置模式:跳线方式、即插即用 P&P方式、 串行Flash配置方式。为了节省成本,我去掉了 9346而使用X5045作为闪盘存 储MAC地址和其他可配置信息。P&P模式用在PC机中,这里用不上。只剩下

2、 跳线配置模式可用,它的电路设计参考 REALTEK提供的DEMO板图纸。一天 时间就可以完成,相对来说硬件设计比较简单。与这部分硬件相对应的软件是网卡驱动。所谓驱动程序是指一组子程序,它 们屏蔽了底层硬件处理细节,同时向上层软件提供硬件无关接口。 驱动程序可以 写成子程序嵌入到应用程序里(如DOS下的I/O端口操作和ISR),也可以放在动 态链接库里,用到的时候再动态调入以便节省内存。在WIN98中,为了使V86、WIN16、WIN32三种模式的应用程序共存,提出了虚拟机的概念,在CPU的配 合下,系统工作在保护模式,OS接管了 I/O、中断、内存访问,应用程序不能 直接访问硬件。这样提高了

3、系统可靠性和兼容性,也带来了软件编程复杂的问题。 任何网卡驱动都要按VXD或WDM模式编写,对于硬件一侧要处理虚拟机操作、 总线协议(如 ISA、PCI)、即插即用、电源管理;上层软件一侧要实现NDIS规范。 因此在WIN98下实现网卡驱动是一件相当复杂的事情。我这里说的驱动程序特指实模式下的一组硬件芯片驱动子程序。从程序员的 角度看,8019工作流程非常简单,驱动程序将要发送的数据包按指定格式写入 芯片并启动发送命令,8019会自动把数据包转换成物理帧格式在物理信道上传 输。反之,8019收到物理信号后将其还原成数据,按指定格式存放在芯片RAM中以便主机程序取用。简言之就是8019完成数据包

4、和电信号之间的相互转换: 数据包 电信号。以太网协议由芯片硬件自动完成,对程序员透明。驱动程序有3种功能:芯片初始化、收包、发包。以太网协议不止一种,我用的是 802.3。它的帧结构如图1所示。物理信道 上的收发操作均使用这个帧格式。其中,前导序列、帧起始位、CRC校验由硬件自动添加/删除,与上层软件无关。值得注意的是,收到的数据包格式并不是8 02.3帧的真子集,而是如图2所示。明显地,8019自动添加了接收状态、下一 页指针、以太网帧长度(以字节为单位)三个数据成员(共4字节)。这些数据成员 的引入方便了驱动程序的设计,体现了软硬件互相配合协同工作的设计思路。当然,发送数据包的格式是802

5、.3帧的真子集,如图3所示。前戟啓帧起始位SD吕的MAC地址DA曲皿地址甜类 1TIM/KSEEN触FAD62bit 2bit 4Sbit48bit16bit-L5flC?节 肚Th*于帕字节补D 32bitTOT说明:0800 IF包;0006 ABT包:014C SHMPfl: 8137 : IPK/SPX亦于060QK用于IEEE802帧,表示数据赳桧度。汕血说明:DA+SWTrFE=14?节+DATE514字节即援犬體输电长-1514FM)说明;最小包快度不小于词字节,层小肚TA民度時节不够的HO 團1 802 3帧结构接收畑下页指针以太网帧长屢目前地址DA源顾帼址SA类型TYFE/度

6、1耶数据的ATA埴充FAD校 fcFCS帥讥 8bit16bitOitMbit16bitU15W字节 可选 Ehit图2 BTL3019AS接收包帧结构目的皿地址肚谢AC地出A类型 TFE/gLEN数曙域DAU,埴充FATOil48bit16bit=1500节可选斟RTL8D19AS攬还包帧结构有了收发包的格式,如何发送和接收数据包呢?如图4所示,先将待发送的数据包存入芯片RAM,给出发送缓冲区首地址和数据包长度(写入TPSR、TBC R0,1),启动发送命令(CR=0x3E)即可实现8019发送功能。8019会自动按以太 网协议完成发送并将结果写入状态寄存器。 如图5所示,接收缓冲区构成一个

7、循 环FIFO队列,PSTART、PSTOP两个寄存器限定了循环队列的开始和结束页, CURR为写入指针,受芯片控制,BNRY为读出指针,由主机程序控制。根据C URR=BNRY+1?可以判断是否收到新的数据包,新收到的数据包按图2格式存 于以CURR指出的地址为首址的 RAM中。当CURR=BNRY时芯片停止接收 数据包。如果做过FPGA设计,用过VHDL,可以想象到硬件芯片的工作原理。 此处,设计2个8bit寄存器和一个2输入比较器,当收到数据包时,接收状态 机根据当前状态和比较器结果决定下一个状态,如果CURR=BNRY,进入停收状态;反之,CURR按模增1。8019数据手册没有给出硬件

8、状态机实现方法, 说明也很简略,往往要通过作实验的方法推理出工作过程。比如,ISR寄存器不只和中断有关,当接收缓冲溢出时,如果不清ISR(写入FFH),芯片将一直停止接收。在流量较大时溢出经常发生,此时不清ISR,就会导致网卡芯片死机。TFSR iT发首址TBCEO, 1 发嗟数目垸送缓冲IX蠢牆L址PSTARTFFFO开始页CURE i写贡捋针左BHRY _读贡指针PSTOP 不工池班珂停止贡VLZ-LU5接收町典缓沖趴列 旳匚REL1远端開越痼字节数Hi图远踹跚曝作明白了发送和接收数据包的原理, 那么数据包又是怎样被主机写入芯片 RAM 和从芯片RAM读出的呢?如图6所示,主机设置好远端

9、DMA开始地址(RSAR 0,1)和远端DMA数据字节数(RBCR0,1),并在CR中设置读/写,就可以从远端 DMA 口寄存器里读出芯片RAM里的数据/把数据写入芯片RAM。何谓本地/远端DMA呢?如图7所示,远端”指CPU接口侧;本地”指8019 的硬件收发电路侧。没有更深的意思,与远近无关,仅仅为了区分主机和芯片硬 件两个接口端。这里的 DMA与平时所说的DMA有点不同。RTL8019AS的loc al DMA操作是由控制器本身完成的,而其remote DMA并不是在无主处理器的 参与下,数据能自动移到主处理器的内存中。remote DMA指主机CPU给出起 址和长度就可以读写芯片 RA

10、M,每操作一次RAM地址自动加1。而普通RAM 操作每次要先发地址再处理数据,速度较慢。在一些高档通信控制器上自带有 MAC控制器,工作原理与8019的差不多, 比如:Motorola 68360/MPC860T 内部的CPM带有以太网处理器,通过设置B D表,使软件和硬件协同工作,它的缓冲区更大且可灵活配置。 这些通信控制器 的设计,体现了软硬件互相融合协同工作的趋势: 软件硬化(VHDL),硬件软化(D SP),希望大家关注!指示当前本地DMA地址硬件收叢电路侧主机cpirni国T与DFU有关的寄存器如图7所示,8019以太网控制器以存储器(16K双口 RAM)为核心,本地和远 端控制器并

11、发操作。这种体系结构满足了数据带宽的需要。8019拥有控制、状态、数据寄存器,通过它们,51单片机可以与8019通信。由于51资源紧张, 在实现TCPIP协议栈时不要进行内存块拷贝,建议(1)使用全局结构体变量,在 内存中只保存一个数据包拷贝,其他没有来得及处理的包保存在8019的16KRAM里;(2)使用查询方式而不用中断;(3)客户服务器模型中服务器工作于串行 方式,并发模式不适合51单片机。芯片内部地址空间的分配如图 8所示,其中0x00-0x0B(工作于8位DMA模 式)用于存放本节点MAC地址,奇偶地址内容是重复放置的。如:MAC地址0OOOOHOCFFH010DH3FFFH4QOO

12、HTFFFH800DH000 1234 5678 存放在 0x00-0x0B 中为 000000001212343456567878 ,单地 址和双地址的内容是重复的.一般使用偶数地址的内容,这主要是为了同时适应8 位和16位的dma。 Prom内容是网卡在上电复位的时候从 93C46里读出来的。 如果你没有使用93C46,就不要使用Prom,那么使用了 93C46后如何获得网卡 的地址呢?有两种方法,一是直接读93C46,二是读Prom。网卡MAC地址既不 由93C46也不由Prom决定,而是由PAR0-PAR5寄存器决定。Prom只保存上 电时从9346中读出的MAC地址(如果有93C46

13、的话),仅此而矣。PROM3K*16 冲(Z 孜口 KAM不使用COQOHFFFFH團8归羽DD兼容网卡测空间结构4T.J 333231. .2423. 0制造厂商标识爼播标志制造厂商标识系列号图9网耒地址爼成第构网卡MAC地址不是随便定义的,它的组成结构如图9所示。以太网的地址为48位,由ieee统一分配给网卡制造商,每个网卡的地址都必须是全球唯一的。 共6个字节的长度。FF:FF:FF:FF:FF:FF为广播地址,只能用在目的地址段,不 能作为源地址段。目的地址为广播地址的数据包,可以被一个局域网内的所有网 卡接收到。合法的以太网地址第 32位组播标志必须为0。例如:xo:xx:xx:xx

14、:xx:xxX2:XX:XX:XX:XX:XXX4:XX:XX:XX:XX:XXX6:XX:XX:XX:XX:XXX8:XX:XX:XX:XX:XXXA:XX:XX:XX:XX:XXXC:XX:XX:XX:XX:XXXE:XX:XX:XX:XX:XX为合法以太网地址。上面的 X代表0 F中的任一个。地址X1:XX:XX:XX:XX:XXX3:XX:XX:XX:XX:XXX5:XX:XX:XX:XX:XXX7:XX:XX:XX:XX:XXX9:XX:XX:XX:XX:XXXB:XX:XX:XX:XX:XXXD:XX:XX:XX:XX:XXXF:XX:XX:XX:XX:XX为组播地址,只能作为目的

15、地址,不能作为源地址。组播地址可以被支持该组播 地址的一组网卡接收到。组播地址主要用在视频广播,远程唤醒(通过发一个特 殊的数据包使网卡产生一个中断信号, 启动电脑),游戏(多个人在局域网里联 机打游戏)里等。以下是一些具体的组播地址:地址范围01:00:5E:00:00:00 -01:00:5E:7F:FF:FF 用于ip地址的组播,其他组播地址跟 tcp/ip无关,不做介绍。网卡可以接收以下3种地址的数据包:第一种 目的地址跟自己的网卡地址是一样的数据包;第二种目的地址为FF:FF:FF:FF:FF:FF广播地址的数据包;第三种 目的地址为跟自己的组播地址范围相同的数据包。在以太网的应用当中,如果你希望你的数据包只发给一个网卡,目的地址用对方的网卡地址;如果你想把数据包发给所有的网卡,目的地址用广播地址; 如果你想把数据包发给一组网卡,目的地址用组播地址。其他用到的寄存器:ISR-中断状态寄存器TCR-发送配置寄存器NCR-包发送期间碰撞次CR-命令寄存器

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号