2022年网络芯片的驱动实用 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年网络芯片的驱动实用 .pdf》由会员分享,可在线阅读,更多相关《2022年网络芯片的驱动实用 .pdf(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1第三章网络芯片的驱动从最底层驱动来看,单片机是怎么从物理线路上接收到数据?接收的又是什么样的数据?通过对本章以太网帧管理和网络芯片驱动的介绍,可以了解数据是怎样上送和下发的,从而了解物理层和数据链路层的工作原理。31 以太网的帧结构现在是网络时代, 大家都喜欢在网上冲冲浪。 但电脑能上网的前提条件是电脑硬件中必须有网卡,如板载网卡、独立网卡、或无线网卡等。网卡是电脑与网络相互连接的必需设备。单片机要上网, 无疑也需要一个网卡。 网卡的功能主要有: 一是将需要发送的数据封装成物理传输帧,并通过网线(或电磁波 )发送到网络上去;二是识别和接收网络上其它设备传过来的物理传输帧,并组合成数据提供给本
2、机CPU。网线中传输的是电信号, 因此网卡具备将数据转化为电信号发出去,并将网线上的电信号解析成数据的功能。 同时,要想电信号都能被其它网卡解析和接收,网卡必须满足网络传输规定的机械和电气规范。从 TCP/IP 的协议分层的结构上看,网卡至少完成物理层的功能。但为了方便控制器的使用, 现在的网卡还将数据链路层的功能集成到芯片中。网卡能起到过滤作用,只接受广播帧/组播帧或专门发往本机物理地址的数据帧,对本网络上的其余帧不予理会。 网卡接收到一帧完整的数据后, 就可以将数据交给网络层处理。对于使用网卡的开发者来说, 对网卡的物理结构, 硬件检测机制和冲突退避算法不需深究, 主要要了解下相应的物理传
3、输帧结构。根据组建的网络类型不同(如以太网,令牌环网等)和使用的底层网络协议不同,帧结构也不相同。就常用的以太网来说, 也有 Ethernet_II, IEEE 802.3, IEEE 802.2 等协议。我们以 IEEE 802.3 数据帧来分析数据链路层和网卡的工作内容。IEEE 802.3 是电气和电子工程师协会 (IEEE) 制定的一种描述物理层和数据链路层的实现方法的网络协议,主题是在多种物理媒体上以多种速率采用CSMA/CD 访问方式。其规定的帧结构如下:表 31 以太网( 802.3)帧结构PRSDDASALENGTH/TYPEDATAPADFCS56 位 8 位 48 位 48
4、 位 16 位 n 1500(字节)可选 32 位 表一以太网( 802.3)帧结构FR(前导码):包括了 7 个字节的二进制 “1”、“0”间隔的代码,即 101010共 56 位。当帧在链路上传输时,接收方就能建立起同步,因为这种“1”、“0”间隔的传输波形为一个周期性方波。同时也指明了传输的速率 (10M 和 100M 的方波频率不一样,所以100M 网卡可以兼容 10M 网卡) 。SD(帧数据定界符):它是长度为 1 个字节的 10101011二进制序列,此码表示表示下面跟着的是真正的数据。DA(目的地址):目的以太网的物理地址,由48 位二进制组成 (6 个字节 ),说明该帧传输给哪
5、个网卡。如果地址为FFFFFFFFFFFF(广播地址),则该网络名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 19 页 - - - - - - - - - 2上的所有网卡都能接收到本帧数据。这个地址和下面的SA 就是我们常说的网卡的 MAC 地址。具体信息我们待会介绍。SA(源地址):48位,说明该帧的数据是哪个网卡发的,即发送端的网卡物理地址( MAC ) 。LENGTH/TYPE(长度 /数据类型): 指示后面的数据属于什么类型。 如 0800H 表示数据为 IP
6、包,0806H 表示数据为 ARP 包。这样,交给网络层后就可以由相应的协议对后面的数据解析。如果这个字段小于0600H 的值,则表示数据包的长度,在单片机的网络编程中不考虑这种用法。DATA(数据段):由网络层负责发送和解析的数据,因为以太网帧传输的数据包最小不能小于64 字节,最大不能超过 1518字节。除去 14 字节为 DA、SA、TYPE 以及 4 字节的 FCS,DATA 不能超过 1500 字节。如果不够 46(6418)字节,余下的由 PAD 填充。PAD(填充位):当 DATA 的数据不足 46 字节时,缺少的字节需要补上(可补任意值)。FCS(帧校验序列):由 32 位(4
7、 字节)循环冗余校检码( CRC)组成,其校验范围不包括前导码FR 及帧数据定界符 SD。此序列由发送端网卡自动生成,自动填充到帧的最后。一般情况下,接收端网卡对收到的数据校验后也不会将FCS放到数据中上报。由于网卡的自动管理,并且前导码FR 和帧数据定界符 SD 的值是固定的,也由网卡自动生成和插入。 所以,网络层向网卡发送的数据或者网络层接收到的数据一般是由 DA、SA、TYPE 和 DATA 组成( DATA 不足 46 字节需要用 PAD补齐) 。如表二。假如网络层的一个IP 包要发送出去,首先要填充接收网卡的地址和本网卡的地址 (MAC 地址) ,同时将 TYPE 填充成 0800H
8、,紧跟着就是发送的数据。网卡获取到这些数据后会组成物理传输帧发送出去。表 32 网络层管理的帧结构DASATYPEDATAPAD48 位 48 位 16 位 n 1500(字节) 可选 由以太网的帧结构知道,在数据链路层就需要使用MAC 地址(即物理地址)进行通讯, MAC 地址是数据的第一道关卡,由硬件自动识别来接收。因此,MAC 地址就像是是网络设备的“身份证”一样,需要具有全球唯一性。我们在实验室里做测试,可以修改MAC 地址,但也应该保证本地网络里MAC 的唯一性。以太网的 MAC 地址由 48bit (6 字节)组成,如 08:02:10:3A:85:23 就是一个MAC 地址。前
9、24 位(08:02:10)是由生产网卡的厂商向IEEE 申请的厂商地址,后 24 位(3A:85:23)是由厂家自己分配。每个厂商必须确保它所制造的每个以太网设备都具有相同的前三个字节以及不同的后三个字节,这样就可保证世界上每个以太网设备都具有唯一的MAC 地址。网卡的 MAC 地址通常是由生产厂家烧入网卡的 EPROM 中(NE2000系列网卡常用 93C46,在网卡上可以找到)。MAC 地址又可以分成 3 类:(1)广播地址:只能用作目的地址。如果一个以太网帧的目的地址是广播名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - -
10、名师精心整理 - - - - - - - 第 2 页,共 19 页 - - - - - - - - - 3地址,则网络中的所有设备都能接收和处理该帧。广播地址的每一位都是1,即:FF:FF:FF:FF:FF:FF。(2)组播地址: 也只能用作目的地址。 如果一个帧的目的地址是组播地址,那么网络中预先定义的一组设备都能接收并处理该设备。以太网网 MAC 的最高有效字节的最低位为1 表示以太网帧是组播帧。如01:03:52:3A:85:23 就是组播地址。 101 的最低位为 1。(3)单机地址:除了广播和组播的地址就是单机地址,非广播和组播数据包就要与这个地址匹配了才能被接收和处理。32 以太网
11、的芯片RTL8019 介绍及编程网卡主要由网络芯片、数据汞、总线插槽接口、EEPROM、晶振、 RJ45 接口、 指示灯、固定片等器件等组成, 其核心是网络芯片。这节我们重点介绍Realtek公司生产 RTL8019AS 芯片,看看它是怎样实现上节提到的以太网的帧结构的。图 31 RTL8019 硬件电路图3.2.1RTL8019 的工作方式及与单片机的接口RTL8019 是 NE2000 系列中一种, 因此其它 NE2000 系列网卡编程思路也相符合的。 (NE2000 是一个由 Novell 公司所创立并且被业界广泛采用的网络卡的标准,大多数ISA 网卡都与 NE2000 兼容,如 Nat
12、 Semi 的 DP83902,Davicom的 DM9008 ,NSI 的 DP8390 ,MXIC 的 MX98905 等) 。RTL8019 是 10M 网卡芯片。RTL8019 有 3 种工作方式:(1)跳线方式,网卡的i/o 和中断由跳线决定。(2)免跳线方式,网卡的 i/o 和中断由外接的 93c46里的内容决定。(3)即插即名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 19 页 - - - - - - - - - 4用方式,由软件进行自动配置plug an
13、d play(PnP) 。电脑上常使用即插即用方式方式,单片机不予考虑。 对免跳线方式, 需要在芯片外部接EEPROM 93c46 (很多电脑用的网卡上能找到这芯片,大家有兴趣可以看下),用来保存网卡的MAC地址等参数,同时,需要单片机操作RTL8019 来控制 93c46 的读写,不仅费钱还费力,一般也不采用。参数保存可放在单片机自身的EEPROM 里,上电后写入网卡芯片就可以了。因此,单片机比较适合使用跳线方式。怎么才能让 RTL8019 工作在跳线方式下呢?这个由JP管脚(第 65 脚)决定。当 JP管脚为低电平时, RTL8019 工作在即插即用方式或免跳线方式,高电平时处于跳线方式。
14、因此,我们将JP管脚接高电平( VCC) ,使用跳线方式,网卡的 I/O 和中断就不是由 93C46的内容决定而是由跳线决定。 主要使用的跳线如下:IOS3,IOS2,IOS1,IOS0 管脚(第 85,84,82,81 脚)决定了芯片的I/O地址。如下图,我们将IS03-IO0 都悬空(内部下拉,即都为0) ,则芯片 I/O 的起始地址是 300H。芯片的中断线由 IRQS2,IRQS1,IRQS0 管脚(第 80,79,78 脚)决定。我们可以使用默认配置, 并将网卡的中断 9,接到单片机的中断INT0(P3.2)上。名师资料总结 - - -精品资料欢迎下载 - - - - - - - -
15、 - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 19 页 - - - - - - - - - 5芯片的 BTRM 地址由 BS4,BS3,BS2,BS1管脚(第 72,71,69,68,67)决定, BTRM 在电脑里用来做无盘工作站的时候用到,这样可以从网卡进行引导,而需要从硬盘的 c 盘等引导系统。由于单片机里不需要使用,可以不管。AUI 管脚(第 64 脚) ,该管脚决定使用 AUI 还是 BNC 接口。高电平时使用AUI 接口,悬空(为内部下拉的低电平)时使用BNC 接口。网卡的接口一般是BNC 的可以支持 8 线双绞或同轴电缆。因此
16、将该引脚悬空即可。网络媒体类型由 PL0,PL1(第 74,77脚)决定。PL1 PL0 网络媒体类型0 0 TP/CX 自动检测( 10BaseT 链环测试时激活的)0 1 10BASET 链 环 测 试 是 不 可 用的。1 0 10BASE5 1 1 10BASE2 其它重要管脚的连线:所有 GND 管脚接地, VCC 管脚接 5V 的电源。RSTDRV(第 33 脚):用来复位网卡,我们一般将它连到单片机的管脚上,用来快速复位 RTL8019,这个管脚拉高复位持续时间至少2ms,建议拉高 100ms左右再拉低来达到复位效果。IOCS16B 管脚(第 96 脚)是 16 位/8 位数据位
17、的选择脚。如果这个管脚下拉,则选择 8 位模式,如果这个管脚接高电平,将选择16 位的模式。由于单片机是 8 位的数据总线,因此这个管脚需要下拉。IOWB(第 30 脚) , IORB (第 29 脚)接到单片机的 P3.6,P3.7 (/WR , /RD) ,用来控制读写时序。X1 和 X2(第 50,51 脚)用来接 20M 的晶振。 TPIN+,TPIN-管脚( 59,58)和 HD,LD 管脚( 45,46)都接隔离变压器上,通过RJ45接口与网络相连。由于使用 8 位数据位, SD0 SD7 管脚接到单片机的P0.0p0.7管脚,SD8SD15不需要使用。SA0 SA19 为网卡的地
18、址线,共 20根, 这个需要怎么接呢?前面说过, IOS3,IOS2,IOS1,IOS0 管脚决定了芯片的I/O 地址。假如将 IS03-IO0 都悬空(内部下拉,即都为 0) ,则芯片 I/O 的起始地址是 300H。从 RTL8019 的芯片手册中知道,I/O 访问的寄存器只有32个,在后面会介绍这些寄存器。 即需要直接访问的网卡寄存器是 300H31FH。将它转化为二进制的地址线的电平就很直观了。如下表。地址线A19 A18 A17 A16 A15 A14A13 A12A11 A10 A9 A8A7 A6 A5 A4 A3 A2 A1 A0300H 0 0 0 0 0 0 0 0 0 0
19、 1 1 0 0 0 0 0 0 0 0 . 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 X X XXX31FH 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1 从表中知道, SA19SA10,SA7SA6 固定接低电平(地),SA9-SA8 固定接高电平(VCC) 。 只要控制 SA4SA0 就可以访问到 300H 到 31FH 的 32 个寄存器。于是,我们将这 5 根地址线接到单片机的P0.4P0.1上。为了采用外部地址访问,将 P2口的 p2.7 接到 RTL8019 的片选 CS 上。这样,如果单片机访问8000H名师资料总结 - -
20、-精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 19 页 - - - - - - - - - 6地址就相当于访问 RTL8019 的 300H了, 访问 801FH 地址就相当于访问 RTL8019的 31FH。地址映射关系为:单片机地址端口P2,P0 网卡(I/O) 10000000 00000000(8000H) 300H 10000000 000XXXXX 3XXH 10000000 00011111(801FH) 31FH 程序里对寄存器使用如下定义来访问:#include /* 定义
21、了 XBYTE :#define XBYTE (unsigned char volatile xdata *) 0) */ #define reg00 XBYTE0 x8000 /* 300H*/ #define reg01 XBYTE0 x8001 /* 301H*/ #define reg02 XBYTE0 x8002 #define reg03 XBYTE0 x8003 #define reg04 XBYTE0 x8004 #define reg05 XBYTE0 x8005 #define reg06 XBYTE0 x8006 #define reg07 XBYTE0 x8007 #d
22、efine reg08 XBYTE0 x8008 #define reg09 XBYTE0 x8009 #define reg0a XBYTE0 x800a #define reg0b XBYTE0 x800b #define reg0c XBYTE0 x800c #define reg0d XBYTE0 x800d #define reg0e XBYTE0 x800e #define reg0f XBYTE0 x800f #define reg10 XBYTE0 x8010 #define reg18 XBYTE0 x8018 #define reg1c XBYTE0 x801c /* 31
23、cH*/ #define reg1f XBYTE0 x801f /* 31fH*/ 单片机通过地址线访问的RTL8019 寄存器也就是以上32 个寄存器。但RTL8019 内部的空间不仅仅是这32 个寄存器,它还有 256 字节的 PROM 和 16K字节的 RAM BUFFER 。如下图。 PROM 内容是网卡复位时从93c46里读出来的部分参数和配置。由于单片机使用跳线方式,不接93C46,所以这段空间不用关注。 RAM BUFFER 用来存放需要网口发送出去的数据和网卡自动接收到的数据。相当于以太网帧的缓存。 单片机对这段缓存的操作并不需要按地址去访问,而是通过前面的 32 个寄存器间接
24、读取。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 19 页 - - - - - - - - - 7图 32 RTL8019 RAM BUFFER 结构RAM BUFFER 空间以页为存储单位, 每 256 字节为一页。如 4000H 到 40FFH为一页,我们称之为第 40 页。从 40 页到 7F 页共有 64页。以页为单位要怎么使用呢?打个比方,我们把4600H7FFFH 的地址作为接收缓存,当网卡收到64字节的一帧数据时,存放在4600H 开始的页上,再收到28
25、0字节的一帧数据时,并不接着 4664 地址放,而是放在4700 开始的页,占用两页空间。具体对RAM BUFFER 的操作在网卡数据收发时描述。3.2.2RTL8019 的寄存器介绍从上节知道,能通过地址线访问RTL8019的寄存器共有 32 个,每个寄存器是 8bit (1 字节)结构。其中reg00reg0f共 16 个寄存器为通用寄存器,reg10reg17 共 8 个寄存器为远程DMA 数据读写寄存器, 对 8 位数据位的单片机来说,只需用到 reg10,用来对 RAM BUFFER里数据的获取和写入。reg18reg1f共 8 个寄存器为复位寄存器, 只要对其中偶数地址的寄存器读或
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年网络芯片的驱动实用 2022 网络 芯片 驱动 实用
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内