




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、51单片机RTL8019AS网卡驱动程序时间:2006-09-05来源:作者:点击:3863字体大小:【大中小】我的SNMP网管板使用了RTL8019AS10MISA网卡芯片接入以太网。选它的好处是: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校验由硬件自动添加/删除,与上层软件无关。值得注意的是,收到的数据包格式并不是802.3帧的真子集,而是如图2所示。明显地,8019自动添加了接收状态、下一页指针、以太网帧长度(以字节为单位)三个数据成员(共4字节)。这些数据成员的引入方便了驱动程序的设计,体现了软硬件互相配合协同工作的设计思路。当然,发送数据包的格式是802.3帧的真子集,如图3所示。前导位F
5、E蟆起始位非目的MM地址附渊1M地址融类型HFE/长度EEH数据域D&TA埴充FAD校勘邙E21nt2biti&hit<=15皿字节D虹儿小于能字节补口32htRPE说明:0300IF包;0806ABPfi;的能SHMP包:8137!IPX/SPI小于gOOH值用于ICT能。2帧,表示数据包长度。DATA说明:岫+"+HFE二14字节+DftTAK514字节即最大传输包长度仁15MFM)说明:最小包长度不小于6口字节.最小口打A长度贿节,不修的?种.图1鳏一3帧结构接收幅|下一页指叫以大网帧长度|目通机地址皿源眦地址驰|类型TYFEJ长度间数据刷叫婚克网校髻睚断
6、t8bit16bitOit蜡hit16b】t05W字节可选Ehit图工KTL8Q19AS接收包槌构目的MM地址岫源MAC地址驰类型TYPE/长度LEN数据威口疝卡埴克FAT16bit<=150。字节可选图3RIL8Q”焙发送包帧转构有了收发包的格式,如何发送和接收数据包呢?如图4所示,先将待发送的数据包存入芯片RAM,给出发送缓冲区首地址和数据包长度(写入TPSR、TBCR0,1),启动发送命令(CR=0x3E)即可实现8019发送功能。8019会自动按以太网协议完成发送并将结果写入状态寄存器。如图5所示,接收缓冲区构成一个循环FIFO队列,PSTART、PSTOP两个寄存器限定了循环队
7、列的开始和结束贡,CURR为写入指针,受芯片控制,BNRY为读出指针,由主机程序控制。根据CURR=BNRY+1?可以判断是否收到新的数据包,新收到的数据包按图2格式存于以CURR指出的地址为首址的RAM中。当CURR=BNRY时芯片停止接收数据包。如果做过FPGA设计,用过VHDL,可以想象到硬件芯片的工作原理。此处,设计2个8bit寄存器和一个2输入比较器,当收到数据包时,接收状态机根据当前状态和比较器结果决定下一个状态,如果CURR=BNRY,进入停收状态;反之,CURR按模增1。8019数据手册没有给出硬件状态机实现方法,说明也很简略,往往要通过作实验的方法推理出工作过程。比如,ISR
8、寄存器不只和中断有关,当接收缓冲溢出时,如果不清ISR(写入FFH),芯片将一直停止接收。在流量较大时溢出经常发生,此时不满ISR,就会导致网卡芯片死机。目图4发送獴冲区TFSR发首址PSTARTFIFO开始页CURE写页指针BHRY读页指针PSTOPF工阳停止页不关心图5接收F1F口獴冲队列双口KSKKD,1应端DMA音地址RECRO.1远端DM微据字节数1图6远端加嘴作明白了发送和接收数据包的原理,那么数据包又是怎样被主机写入芯片RAM和从芯片RAM读出的呢?如图6所示,主机设置好远端DMA开始地址(RSAR0,1)和远端DMA数据字节数(RBCR0,1),并在CR中设置读/写,就可以从远
9、端DMA口寄存器里读出芯片RAM里的数据/把数据写入芯片RAM。何谓本地/远端DMA呢?如图7所示,远端”指CPU接口侧;本地”指8019的硬件收发电路侧。没有更深的意思,与远近无关,仅仅为了区分主机和芯片硬件两个接口端。这里的DMA与平时所说的DMA有点不同。RTL8019AS的localDMA操作是由控制器本身完成的,而其remoteDMA并不是在无主处理器的参与下,数据能自动移到主处理器的内存中。remoteDMA指主机CPU给出起址和长度就可以读写芯片RAM,每操作一次RAM地址自动加1。而普通RAM操作每次要先发地址再处理数据,速度较慢。在一些高档通信控制器上自带有MAC控制器,工作
10、原理与8019的差不多,比如:Motorola68360/MPC860T内部的CPM带有以太网处理器,通过设置BD表,使软件和硬件协同工作,它的缓冲区更大且可灵活配置。这些通信控制器的设计,体现了软硬件互相融合协同工作的趋势:软件硬化(VHDL),硬件软化(DSP),希望大家关注!陷皿1RBCRfl,1CRDMJ指示当前送端地址如图7所示,8019以太网控制器以存储器(16K双口RAM)为核心,本地和远端控制器并发操作。这种体系结构满足了数据带宽的需要。8019拥有控制、状态、数据寄存器,通过它们,51单片机可以与8019通信。由于51资源紧张,在实现TCPIP协议栈时不要进行内存块拷贝,建议
11、(1)使用全局结构体变量,在内存中只保存一个数据包拷贝,其他没有来得及处理的包保存在8019的16KRAM里;(2)使用查询方式而不用中断;(3)客户服务器模型中服务器工作于用行方式,并发模式不适合51单片机。芯片内部地址空间的分配如图8所示,其中0x00-0x0B(工作于8位DMA模式)用于存放本节点MAC地址,奇偶地址内容是重复放置的。如:MAC地址000012345678存放在0X00-0X0B中为000000001212343456567878,单地址和双地址的内容是重复的.一般使用偶数地址的内容,这主要是为了同时适应8位和16位的dma。Prom内容是网卡在上电复位的时候从93C46
12、里读出来的。如果你没有使用93C46,就不要使用Prom,那么使用了93C46后如何获得网卡的地址呢?有两种方法,一是直接读93C46,二是读Promo网卡MAC地址既不由93C46也不由Prom决定,而是由PAR0-PAR5寄存器决定。Prom只保存上电时从9346中读出的MAC地址(如果有93C46的话),仅此而矣。D】5DOPROM不使用ooaHOCFFH010DH3FFFH4000HTFFFH800DHC0Q0H同MOOH-TFFFH不便用FFFFH圉8处司口。兼容网卡空间给构4T,333231.2423.0制造厂商标识俎播标志制造厂商标识系列号图9网表地址蛆成结构网卡MAC地址不是随
13、便定义的,它的组成结构如图9所示。以太网的地址为48位,由ieee统一分配给网卡制造商,每个网卡的地址都必须是全球唯一的。共6个字节的长度。FF:FF:FF:FF:FF:FF为广播地址,只能用在目的地址段,不能作为源地址段。目的地址为广播地址的数据包,可以被一个局域网内的所有网卡接收到。合法的以太网地址第32位组播标志必须为0。例如:X0:XX:XX:XX: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:X
14、X:XX为合法以太网地址。上面的X代表0F中的任一个。地址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为组播地址,只能作为目的地址,不能作为源地址。组播地址可以被支持该组播地址的一组网卡接收到。组播地址主要用在视频广播,远程唤醒(通过发一个特殊的数据包使网卡产生一个中断信号,启动电脑),游戏(多个人在局域网里联机打游戏)里等。以下是一些具体的组播地址:地址范围01:00
15、:5E:00:00:00-01:00:5E:7F:FF:FF用于ip地址的组播,其他组播地址跟tcp/ip无关,不做介绍。网卡可以接收以下3种地址的数据包:第一种目的地址跟自己的网卡地址是一样的数据包;第二种目的地址为FF:FF:FF:FF:FF:FF广播地址的数据包;第三种目的地址为跟自己的组播地址范围相同的数据包。在以太网的应用当中,如果你希望你的数据包只发给一个网卡,目的地址用对方的网卡地址;如果你想把数据包发给所有的网卡,目的地址用广播地址;如果你想把数据包发给一组网卡,目的地址用组播地址。其他用到的寄存器:ISR-中断状态寄存器TCR-发送配置寄存器NCR-包发送期间碰撞次(如:BN
16、RY05X0x03),打CR-命令寄存器TSR-发送状态寄存器RSR-接收状态寄存器RCR-接收配置寄存器DCR-数据配置寄存器IMR-中断屏蔽寄存器数FIFO-环回检测后,查看FIFO内容CNTR0-帧同步错总计数器CNTR1-CRC专昔总计数器CNTR2-丢包总计数器PAR0-5-本节点MAC地址MAR0-7-多播地址匹配建议:将图形中寄存器名称标注上页号和地址偏移印出此图,看图编程,直观且不容易出错。备注:收缓冲区、发缓冲区、数据存储区在16K双口RAM里的安排由用户自行决定,只要不引起冲突即可,以下源程序代码实现的只是其中的一种分配方案。部分源程序清单:structethernetun
17、signedcharstatus;接收状态unsignedcharnextpage;下一个页unsignedintlength;/以太网长度,以字节为单位unsignedintdestnodeid3;目的网卡地址unsignedintsourcenodeid3;/源网卡地址unsignedintprotocal;/T一层协议unsignedcharpacket1500;/包的内容;voidne2000init()/ne2000网卡初始化rtl8019as_rst();reg00=0x21;/选择页0的寄存器,网卡停止运行,因为还没有初始化delay_ms(10);/延时10毫秒确保芯片进入停止
18、模式/使芯片处于mon和loopback模式,跟外部网络断开reg0a=0x00;reg0b=0x00;reg0c=0xE0;/monitormode(nopacketreceive)reg0d=0xE2;/loopbackmode/使用0x40-0x4B为网卡的发送缓冲区,共12页,刚好可以存储2个最大的以太网包。/使用0x4c0x7f为网卡的接收缓冲区,共52页。reg01=0x4C;/Pstart接收缓冲区范围reg02=0x80;/Pstopreg03=0x4C;/BNRYreg04=0x40;/TPSR发送缓冲区范围reg07=0xFF;/*清除所有中断标志位*/reg0f=0x00
19、;/IMRdisableallinterruptreg0e=0xC8;/DCRbytedma8位dma方式page(1);/选择页1的寄存器reg07=0x4D;/CURRreg08=0x00;/MAR0reg09=0x41;/MAR1reg0a=0x00;/MAR2reg0b=0x80;/MAR3reg0c=0x00;/MAR4reg0d=0x00;/MAR5reg0e=0x00;/MAR6reg0f=0x00;/MAR7initNIC();/初始化MAC地址和网络相关参数/将网卡设置成正常的模式,跟外部网络连接page(0);reg0c=0xCC;/RCRreg0d=0xE0;/TCRre
20、g00=0x22;/这时让芯片开始工作?reg07=0xFF;/清除所有中断标志位voidsend_packet(unionnetcard*txdnet,unsignedintlength)/ne2000发包子程序/发送一个数据包的命令,长度最小为60字节,最大1514字节需要发送的数据包要先存放在txdnet缓冲区unsignedchari;unsignedintii;page(0);if(length<60)length="60"for(i=0;i<3;i+)txdnet->etherframe.sourcenodeidi=my_ethernet_ad
21、dress.wordsi;txd_buffer_select=!txd_buffer_select;if(txd_buffer_select)reg09=0x40;/txdwritehighaddresselsereg09=0x46;reg08=0x00;/readreg0b=length>>8;reg0a=length&0xFF;reg00=0x12;/write/txdwritehighaddresspageaddresslow/readcounthigh/readcountlow;dma,page0for(ii=4;ii<length+4;ii+)reg10=t
22、xdnet->bytes.bytebufii;for(i=0;i<6;i+)最多重发6次for(ii=0;ii<1000;ii+)/检查txp为是否为低if(reg00&0x04)=0)break;if(reg04&0x01)!=0)break;/表示发送成功reg00=0x3E;if(txd_buffer_select)reg04=0x40;/txdpacketstart;elsereg04=0x46;/txdpacketstart;reg06=length>>8;/highbytecounterreg05=length&0xFF;/lo
23、wbytecounterreg00=0x3E;/tosendpacket;bitrecv_packet(unionnetcard*rxdnet)/ne2000收包子程序unsignedchari;unsignedintii;unsignedcharbnry,curr;reg07=0xFF;bnry="reg03"page(1);/bnrypagehaveread读页指针curr="reg07"/currwritepoint8019写页指针page(0);if(curr=0)return0;/读的过程出错bnry="bnry"+;if(
24、bnry>0x7F)bnry="0x4C"if(bnry!=curr)/此时表示有新的数据包在缓冲区里/读取一包的前18个字节:4字节的8019头部,6字节目的地址,6字节原地址,2字节协议/在任何操作都最好返回page0page(0);reg09=bnry;reg08=0x00;reg0b=0x00;reg0a=18;reg00=0x0A;/readpageaddresshigh/readpageaddresslow/readcounthigh/readcountlow;/readdmafor(i=0;i<18;i+)rxdnet->bytes.bytebufi=reg10;i="rxdnet-">bytes.bytebuf3;/将长度字段的高低字节掉转rxdnet->bytes.bytebuf3=rxdnet->bytes.bytebuf2;rxdnet->bytes.bytebuf2=i;rxdnet->etherframe.length=rxdnet->etherframe.length-4;/去掉4个字节的CRC/表示读入的数据包有效if(rxdnet->bytes.bytebuf0&0x01)=0)|(rxdnet-&g
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高考生物总复习高中生物学200个判断题及解析
- DB36-T1672-2022-莲鳖鱼综合种养技术规程-江西省
- 免疫荧光原位杂交技术FISH
- 医学英语中医教学课件
- 2025年小学三年级童话阅读理解能力测试卷(附答案解析)
- 2025年小学教师资格《综合素质》教育案例分析与反思技巧试题(含答案)
- 2025年托福TOEFL阅读专项突破模拟试卷:长难句解析与题型深度训练
- A-Level进阶数学(FurtherMath)2024-2025年秋季期末考试试卷:矩阵与复数应用题库
- 高考物理冲刺备考:2025年模拟试题详解
- 四年级数学(上)计算题专项练习及答案
- 2025-2030新型钢材产业市场深度调研及前景趋势与投资研究报告
- 2025年5G网络在无人机领域的应用可行性研究报告
- 央企华润集团杭州片区年度品牌传播策略案
- 2025四川爱众集团第一批次招聘10人笔试参考题库附带答案详解
- 2025闽教版英语三年级下册单词表
- 江苏省建筑与装饰工程计价定额(2014)电子表格版
- 皇家宠物食品有限公司的营销策略分
- 机电控制与可编程序控制器课程设计.doc
- 发电机检修规程
- 市政雨污水管道疏通总体方案范本
- 国家职业技能标准 (2020年版) 餐厅服务员
评论
0/150
提交评论