




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、TCPIP协议栈设计TCPIP协议栈设计43/48TCPIP协议栈设计TCP/IP协议栈设计作者姓名: 专业名称: 指导老师: 摘要随着信息时代的信息大爆炸的到来,以及互联网络硬件、软件的迅猛发展、网络用户呈指数增长,简单的传递内部少量信息的方案已经不能够很好地满足现实的市场需求,越来越多的嵌入式产品有了与Internet互连、进入互连网这个浩瀚的信息库的要求。嵌入式Internet技术是一种将嵌入式设备接入Internet的技术。本论文简略的介绍了以太网控制芯片RTL8019AS的结构特性和以太网的帧协议;用PHILIPS的51单片机P87C52X2控制RTL8019AS实现以太网通讯的硬件
2、设计方案;并采用C51语言实现嵌入式以太网协议,将TCP/IP协议嵌入到单片机中,并进行了系统的调试与验证,取得了满意的效果。本设计中的硬件设计简单易行,通俗易懂,能在很短的时间内完成,且价格廉价。关键词:RTL8019AS TCP/IP协议 51单片机 以太网帧协议AbstractAlong with the information time information big detonation arrival, as well as the internet hardware, the software swift and violent development, the network
3、user assume the exponential growth, The simple transmission interior few information plan already could not satisfy the realistic market well the demand, more and more inserts the type product had has interlocked with Internet, enters interlocks the net this vast database request. Inserts the type I
4、nternet technology is one kind inserts the type equipment to turn on Internet the technology. This paper brief introduction ethernet control chip RTL8019AS structure characteristic and ethernet frame agreement; Controls the RTL8019AS realization Ethernet communication with PHILIPS 51monolithic integ
5、rated circuits P87C52X2 the hardware design proposal; And realizes inserts the type Ethernet agreement with the C51 language, inserts the TCP/IP agreement to the monolithic integrated circuit in, and has carried on the system debugging and confirmation, has obtained the satisfactory effect. In this
6、design, the hardware design simple and easy to realize, easy to understand, can complete in the very short time, also the price is inexpensive.Keywords: RTL8019AS, TCP/IP agreement, C51monolithic integrated circuit, Ethernet frame agreement目录 TOC o 1-4 h z u HYPERLINK l _Toc168465402 摘要 PAGEREF _Toc
7、168465402 h I HYPERLINK l _Toc168465403 Abstract PAGEREF _Toc168465403 h II HYPERLINK l _Toc168465404 目录 PAGEREF _Toc168465404 h III HYPERLINK l _Toc168465405 前言 PAGEREF _Toc168465405 h 1 HYPERLINK l _Toc168465406 1 硬件设计 PAGEREF _Toc168465406 h 2 HYPERLINK l _Toc168465407 1.1 RTL8019AS以太网控制器简介 PAGER
8、EF _Toc168465407 h 2 HYPERLINK l _Toc168465408 1.1.1芯片特性 PAGEREF _Toc168465408 h 2 HYPERLINK l _Toc168465409 1.1.2内部结构 PAGEREF _Toc168465409 h 3 HYPERLINK l _Toc168465410 1.1.3寄存器描述 PAGEREF _Toc168465410 h 4 HYPERLINK l _Toc168465411 1.1.4内部RAM地址空间分配 PAGEREF _Toc168465411 h 7 HYPERLINK l _Toc1684654
9、12 1.1.5 I/O地址分配 PAGEREF _Toc168465412 h 8 HYPERLINK l _Toc168465413 1.2 PHILIPS单片机P87C52X2 PAGEREF _Toc168465413 h 8 HYPERLINK l _Toc168465414 1.3接口电路设计 PAGEREF _Toc168465414 h 8 HYPERLINK l _Toc168465415 1.3.1 RTL8019AS 的工作方式选择 PAGEREF _Toc168465415 h 9 HYPERLINK l _Toc168465416 1.3.2单片机口地址与RTL801
10、9AS口地址间的映射关系 PAGEREF _Toc168465416 h 10 HYPERLINK l _Toc168465417 2 协议简介 PAGEREF _Toc168465417 h 12 HYPERLINK l _Toc168465418 2.1 TCP/IP协议简介 PAGEREF _Toc168465418 h 12 HYPERLINK l _Toc168465419 2.2 以太网(Ethernet)协议 PAGEREF _Toc168465419 h 14 HYPERLINK l _Toc168465420 2.2.1 协议简介 PAGEREF _Toc168465420
11、h 14 HYPERLINK l _Toc168465421 2.2.2 各层协议的封装格式 PAGEREF _Toc168465421 h 15 HYPERLINK l _Toc168465422 2.2.3以太网数据帧的分用 PAGEREF _Toc168465422 h 18 HYPERLINK l _Toc168465423 3程序设计 PAGEREF _Toc168465423 h 21 HYPERLINK l _Toc168465424 3.1 RTL8019AS 的以太网驱动程序 PAGEREF _Toc168465424 h 21 HYPERLINK l _Toc1684654
12、25 3.2发送帧 PAGEREF _Toc168465425 h 35 HYPERLINK l _Toc168465426 4 软件的调试与验证 PAGEREF _Toc168465426 h 38 HYPERLINK l _Toc168465427 4.1 调试与验证步骤 PAGEREF _Toc168465427 h 38 HYPERLINK l _Toc168465428 4.2实验仿真结果 PAGEREF _Toc168465428 h 40 HYPERLINK l _Toc168465429 结论 PAGEREF _Toc168465429 h 41 HYPERLINK l _To
13、c168465430 致谢 PAGEREF _Toc168465430 h 42 HYPERLINK l _Toc168465431 参考文献 PAGEREF _Toc168465431 h 43前言越来越多的人已经认识到PC时代的到来,越来越多的嵌入式产品走到了现实应用的前台。嵌入式产品从出生到繁荣一直秉承着与应用紧耦合这个宗旨。过去他们基本上都是独立的工作,最多是通过485、CAN总线之类的互相交换信息;但随着信息时代的信息大爆炸的到来,以及互联网络硬件、软件的迅猛发展、网络用户呈指数增长,这些简单的传递内部少量信息的方案已经不能够很好地满足现实的市场需求,越来越多的嵌入式产品有了与Int
14、ernet互连、进入互连网这个浩瀚的信息库的要求。嵌入式Internet技术是一种将嵌入式设备接入Internet的技术。利用该技术可以将Internet从PC机延伸到8位、16位、32位单片机,并实现基于Internet的远程数据采集、远程控制、自动报警、上/下载数据文件、自动收发E-mail等功能,大大扩展Internet的范围和嵌入式产品触及的领域。在做毕业设计之前要做的准备工作:学习TCP/IP协议的知识,查阅相关资料了解RTL8019AS的详细情况,以及熟悉以前学过的单片机和C语言,广泛搜集相关资料,为以后的设计工作打下基础。接着在指导老师的指导下,进行硬件测试和可行性分析,选择设计
15、的最佳方案。然后程序调试,顺利完成论文的编写。通过指导老师的悉心指导和自己的努力,完成了毕业设计的各项任务,基本实现了本次设计各项功能。论文正文主要包括4个部分,安排如下:第1部分简要介绍RTL8019AS单片机的基本信息以及硬件电路的设计。第2部分是TCP/IP协议的简单介绍,并着重阐述了以太网(Ethernet)协议的情况。第3部分给出了实现51单片机来控制RTL8019AS的驱动程序第4部分主要是对本设计的软硬件的调试,给出了实验结果。最后论文对课题内容及成果进行了总结。1硬件设计1.1 RTL8019AS以太网控制器简介RTL8019AS是台湾Realtek公司生产的ISA接口以太网控
16、制器,是一种高度集成以太网控制器,它能够简单的解答即插即用NE2000兼容适配器,这种适配器具有二重和功率下降特性。通过三电平控制特性,RTL8019AS 是已制的对网络设备GREEN PC 理想的选择。全二重功能能够模拟传播和接收在双绞线到全二重以太网交换机。这个特性不仅强带宽从10 到20MBPS,而且避免了由于以太网频道争夺特性导致的读出多路存取协议的问题。微软公司的即插即用功能能减轻用户较差的营业收入而注意适配器资源,如IRQ,输入输出,和存储器地址等等。然而,为了特殊的应用而得不到即插即用功能的兼容性,RTL8019AS 支持JUMPER 和JUMPERLESS 选项。为了提供完全解
17、决即插即用方案,RTL8019AS 在集成10BASET 收发器,BNC和AUI 接口之间的自动检测功能。此外,8 条IRQ 总线和16 条基本地址总线为大资源情况下提供了宽松的环境。 RTL8019AS 支持16k,32k,和64k 字节BROM 和闪存接口。它仍然 提供页面模式功能,这种功能能支持在仅16k 字节内存系统空间下的4M 字节的BROM.此外,BROM 的无用命令被用来释放BROM 内存空间。RTL8019AS 用16k 字节SRAM 设计在单片芯片上,它的设计不仅提供了更多友好的功能,而且节省了SRAM 存储资源。1.1.1芯片特性100pin PQFPRTL8019AS 软
18、件兼容支持pnp 自动检方式(RTL8019AS 唯一的(支持以太网II 和IEEE802.3 10Base5,10Base2,10BaseT软件兼容8 位和16 位的NE2000支持jumper 和jumperless 模式支持微软jumper 和jumperless 模式的即插即用配置支持fullduples 以太网到两倍频带宽支持三种平下降方式睡眠模式功率下降有内部时钟运行功率下降有内部时钟停止改善效率的内置数据先取功能支持UTP,AUI 和BNC 自动检测(RTL8019AS 唯一的)支持10BaseT 的自动极性改正支持8 条IRQ 总线支持16 条I/O 基本地址选项和额外I/O
19、地址输入输出完全解码方式(RTL8019AS 唯一的)支持到BROM 的16k,32k,64k 和16kpage 方式(到256 页有16k 字节/页)支持BROM 删除程序后释放内存支持存储器瞬时读写(RTL8019AS 唯一的)16kSRAM(RTL8019AS 唯一的)使用9346(6416bit EEPROM)存储资源配置和ID 参数为了制造便利有规划空白9346 的能力支持可编程输出的4诊断 LED1.1.2内部结构RTL8019AS内部可分为远程DMA接口、本地DMA接口、MAC(介质访问控制)逻辑、数据编码解码逻辑和其他端口。内部结构如图1.1所示, 图1.1远程DMA接口是指单
20、片机对RTL8019AS内部RAM进行读写的总线,即ISA总线的接口部分。单片机收发数据只需对远程DMA操作。本地DMA接口是把RTL8019AS与网线的连接通道,完成控制器与网线的数据交换。MAC(介质访问控制)逻辑完成以下功能:当单片机向网上发送数据时,先将一帧数据通过远程DMA通道送到RTL8019AS中的发送缓存区,然后发出传送命令;当RTL8019AS完成了上帧的发送后,再开始此帧的发送。RTL8019AS接收到的数据通过MAC比较、CRC校验后,由FIFO存到接收缓冲区;收满一帧后,以中断或寄存器标志的方式通知主处理器。FIFO逻辑对收发数据作16字节的缓冲,以减少对本地DMA请求
21、的频率。1.1.3寄存器描述RTL8019AS 中的寄存器根据地址和功能能够概略的分为两组:一组对NE2000,另外一组对即插即用。第一组:NE2000 寄存器这组寄存器包括寄存器的4 个页面,它们在CR 寄存器中通过PS0 和PS1 被选择.每一页面包括16 个寄存器.这些寄存器除了和NE2000 兼容外,RTL8019AS 为软件结构和为了增强特性还定义了其它一些寄存器.各个寄存器的功能CR:指令寄存器(00H;Type=R/W)这个寄存器用来选择寄存器页面,使能够或者使不能够远程DMA 操作和命令操作。ISR:中断状态寄存器(07H, type=r/w in page0)这个寄存器反映N
22、IC 状态。主机读它来决定中断的原因。通过对相应的位写1 来清除该位。它必须在上电源后清除。IMR:中断屏蔽寄存器(0FH;Type=w in page0,Type=R in page2)所有的位斗时相应的IST 寄存器位。POWER UP=0.设置某一位会使相应的中断打开。DCR:数据结构寄存器(0EH,Type=2 in page0,Type=R in page2)TCR:传输配置寄存器(ODH;Type=W in page0,Type=R in page2)TSR:传输状态寄存器(04H,Type=R in page0)这个寄存器表明数据包传输的状态 RCR: 接收结构寄存器(0CH;T
23、ypeW in page0,Type=R in page2) RSR:接收状态寄存器(OCH;TypeR in page0)CLDA0,1: 当前局部DMA 寄存器(01H 和02H,typeR in page0)通过读这两个寄存器来得到当前DMA 地址。PSTART: 页面开始寄存器(01H,Type=2 in page0, Type=R in page2)该寄存器用来设置接收缓冲器的开始页面地址。PSTOP: 页面停止寄存器(02H; Type=W in Page0, Type=R in Page2)该寄存器设置接收缓冲器停止页面寄存器地址。在8 位方式下PSTOP寄存器不应该超过0X60
24、,在6 位方式下阿PSTOP 寄存器应该不超过0 x80。BNRY: 边界寄存器(03H;TypeR/W in page0)这个寄存器是用来放置接收缓冲器的重写。它代表性的作用是作为接收缓冲器 最后页面的指针。TPSR:传送页面开始寄存器(04H;TypeW in page0)用来设置传送数据包开始页面地址。TBCR0,1: 传输字节计算寄存器(05H&06H;TypeW in page0)用来设置传输数据包的字节计数。NCR: 冲突数寄存器(05H;typeR in page0)用来记录在数据包传送过程重的冲突节点数。FIFO: 先进先出寄存器(06H; Type=R in Page0)这个
25、寄存器允许主机检查在loopback 后的FIFO 内容。CRDA0,1:当前远程DMA 寄存器(08H & 09H; Type=R in Page0)这个两个寄存器包括当前远程DMA 地址。RSAR0,1: 远程起始地址寄存器(08H & 09H; Type=W in Page0)这两个寄存器设置远程DMA起始地址。RBCR0,1: 远程字节数寄存器(0AH & 0BH; Type=W in Page0)设置远程DMA数据字节数。CNTR0: 帧同步错误计数寄存器(0DH; Type=R in Page0)CNTR1: CRC错误数记录寄存器(0EH; Type=R in Page0)CNT
26、R2: 遗失数据包数记录寄存器(0FH; Type=R in Page0)PAR0-5: 实际地址寄存器(01H - 06H; Type=R/W in Page1)这些寄存器包括以太网节点地址且用来对目标地址数据包进行比较来确定接收或者拒绝接收。CURR: 当前页面寄存器(07H; Type=R/W in Page1)这个寄存器指出首先接收缓冲器页面地址,这个页面用来对数据包的接待。MAR0-7: 多点地址寄存器(08H - 0FH; Type=R/W in Page1)这些寄存器提供被CRC 逻辑变位无用的多点地址的滤波位。第二组:即插即用(PNP)寄存器自动配置端口三个8 位I/O 口定义
27、为PNP 读写操作端口。他们叫做自动配置端口,如表1.1。表1.1 自动配置端口即插即用寄存器通过要求的寄存器的首写地址访问,这个所要求的寄存器在以下各段(对地址端口)中叫“寄存器索引”,跟随在READ_DATA 端口的读数据或者WRITE_DATA 端口的写数据。写数据到ADDREES 端口可能由任何一个WRITE_DATA 或者READ_DATA 访问同一个索引寄存器,在每一个访问之前而不需要对ADDRESS 端口写数据。地址端口仍然是初始密码的写目的地址,这个密码然后会被描述。即插即用寄存器分为卡片寄存器和逻辑装置寄存器。根据即插即用的具体应用,一个PNP 卡片可能包括一个以上的逻辑装置
28、。卡片寄存器对于每一个卡片来说是唯一的。然而,逻辑装置寄存器对于每一个在卡片上的逻辑装置来说是重复的。此外,所有卡片寄存器都是卡片控制寄存器,而逻辑装置寄存器可被分为逻辑装置控制寄存器和机构寄存器。RTL8019AS内部寄存器很多,在这里就不一一列出。本设计中主要应用到的寄存器有:CR命令寄存器;TSR发送状态寄存器;ISR中断状态寄存器;RSR接收状态寄存器;RCR接收配置寄存器;TCR发送配置寄存器;DCR数据配置寄存器;IMR中断屏蔽寄存器;NCR包发送期间碰撞次数;FIFO环回检测后,查看FIFO内容;CNTR0帧同步错总计数器;CNTR1CRC错总计数器;CNTR2丢包总计数器;PA
29、R0-5本节点MAC地址;MAR0-7多播地址匹配。1.1.4内部RAM地址空间分配RTL8019AS内部有两块RAM区。一块16K字节,地址为0 x40000 x7fff;一块32字节,地址为0 x00000 x001f。RAM按页存储,每256字节为一页。一般将RAM的前12页(即0 x40000 x4bff)存储区作为发送缓冲区;后52页(即0 x4c000 x7fff)存储区作为接收缓冲区。第0页叫Prom页,只有32字节,地址为0 x00000 x001f,用于存储以太网物理地址。要接收和发送数据包就必须通过DMA读写RTL8019AS内部的16KB RAM。它实际上是双端口的RAM
30、,是指有两套总线连接到该RAM,一套总线RTL8019AS读或写该RAM,即本地DMA;另一套总线是单片机读或写该RAM,即远程DMA。1.1.5 I/O地址分配RTL8019AS具有32位输入输出地址,地址偏移量为00H1FH。其中00H0FH共16个地址,为寄存器地址。寄存器分为4页:PAGE0、PAGE1、PAGE2、PAGE3,由RTL8019AS的CR(Command Register命令寄存器)中的PS1、PS0位来决定要访问的页。但与NE2000兼容的寄存器只有前3页,PAGE3是RTL8019AS自己定义的,对于其他兼容NE2000的芯片如DM9008无效。远程DMA地址包括1
31、0H17H,都可以用来做远程DMA端口,只要用其中的一个就可以了。复位端口包括18H1FH共8个地址,功能一样,用于RTL8019AS复位。1.2 PHILIPS单片机P87C52X2P87C52X2是80C51核心的8位单片机,其内部包含256字节RAM、32个I/O口、3个16位定时/计数器、一个6中断源4优先级嵌套中断结构、一个可用作多机通信、I/O扩展或全双工UART的串行I/O口以及片内振荡器和时钟电路。此外,芯片的低静态功耗设计提供非常宽的操作频率,甚至可低至0Hz。有两种由软件选择的节电模式-空闲模式和掉电模式。空闲模式冻结CPU,但RAM、定时器、串口和中断系统仍然工作。掉电模
32、式保存RAM的内容,但是冻结振荡器,导致所有其它的片内功能停止工作。由于设计是静态的,时钟可停止而不会丢失用户数据。当CPU唤醒时,可从时钟停止处恢复程序的执行。1.3接口电路设计本设计采用周立功单片机公司的嵌入式以太网网卡模块和单片机教学实验箱DP-51PRO组成实验硬件平台,以太网控制器RTL8019AS 构成以太网卡接口具体电路原理图如图1.2所示,其中RTL8019AS 的数据线SD0SD7 与8051 的AD0AD7 P0 口相连,地址线A0A4 与8051 的A0A4 P0 口锁存后的信号连接读写信号经GAL16V8 产生RTL8019AS 的基地址为0 x5000,按照下图电路连
33、接后当访问地址的范围为0 x50000 x501F时,8051实现对RTL8019AS 读写操作。选用RTL8019AS 的原因,它是一种NE2000 类型的兼容网卡芯片,与其它网络芯片如DM9008,DP83901A 等兼容,软件移植性好;与51 单片机接口简单,不用转换芯片如PCI-ISA 桥;价格低、货源好,较长一段时间内不会停产;相对51单片机而言RTL8019AS 的带宽充裕。图 RTL8019AS 的工作方式选择1RTL8019AS支持3种工作方式: 1) 即插即用方式,I/O 地址和中断都由操作系统管理,用户不必过多干预,当然这种方式要耗费系统资源多一些。2) 跳
34、线方式,网卡的I/O 地址和中断都由跳线决定。3) 免跳线方式,网卡的I/O 和中断由外接的E2PROM 93C46 中的内容决定。在这三种方式里,我们的设计使用是第二种:跳线工作方式。第一种方式对于51系列单片机来说无法实现,未用第三种方式又可以省掉一片颗93C46芯片,不但减少了连线,而且降低了成本。RTL8019AS的引脚悬空时输入状态为低电平,因为芯片引脚内部已经接了一个100k 的下拉电阻。2I/O 地址 RTL8019AS 的第65 脚JP 决定网卡的工作方式,本设计中JP 脚接高电平(VCC),即使用跳线方式,此时可以省掉93C46 芯片。此时,RTL8019AS 的I/O 地址
35、由引脚85、 84 、82、81、 (IOS3.IOS0) 决定,本设计中因为IOS3IOS0 都悬空,选择的基地址为0300H。3中断芯片的中断由引脚80、79、78、(IRQS2.IRQS0)引脚决定,全部悬空时,选择IRQ0。考虑到单片机的资源比较紧张,我们的单片机程序设计中没有使用中断方式而使用的查询方式。4网络接口类型由74、77、(PL0、PL1)引脚决定,使用自动检测。设计中,64脚AUI悬空,使用RJ45 接口。5BROM 设计中未用BROM,引脚72 、71、 69、 68、 67、(BS4.BS0) 悬空即可。6总线模式RTL8019AS 的IOCS16B 引脚通过一个27
36、K 的电阻拉低,使得RTL8019AS 工作在8位数据总线的模式。1.3.2单片机口地址与RTL8019AS口地址间的映射关系1RTL8019AS 的基地址与口线的关系SA0-SA19为网卡的地址线,我们使用RTL8019AS 的基地址为0300H031FH, 转换为二进制如表1.2,表1.2二进制表可以看到,从A19 A5 全部地址线除A9、A8 接高电平外,其余全接地,即是固定的000000000011000。2MCU口线与RL8019AS口线的连接关系设计中使用单片机地址线的A0A4,分别接到RTL8019AS 的地址线SA0-SA4上,两者的对应关系如表1.3,表1.3对应关系表3单片
37、机的I/O地址与RTL8019AS的I/O地址之间的映射关系单片机对RTL8019AS寻址的口地址0 x5000,可以得到如下当单片机的口地址为0 x5000时,将选中网卡的I/O地址空间。映射关系如表1.4,表1.4 映射关系表为了方便操作,在程序里用宏定义reg00-reg1f来对300H-31FH端口,以简化对地址的操作:#define Reg00 XBYTE0 x5000 /* 300H*/#define Reg01 XBYTE0 x5001 /* 31FH*/#define Reg02 XBYTE0 x5002#define Reg1f XBYTE0 x501F /* 31FH*/其
38、中,Reg01-Reg0f 分别对应RTL8019AS 内部的寄存器,Reg10对应RTL8019AS进行DMA读写。 2协议简介2.1 TCP/IP协议简介 HYPERLINK /class/tcpandip/ t _blank TCP/IP(TransmissionControlProtocol/InternetProtocol的简写,中文译名为传输控制 HYPERLINK t _blank 协议/互联网络 HYPERLINK t _blank 协议) HYPERLINK t _blank 协议是Internet最基本的 HYPERLINK t _blank 协议,简单地说,就是由底层的I
39、P HYPERLINK t _blank 协议和 HYPERLINK /class/tcpandip/ t _blank TCP HYPERLINK t _blank 协议组成的。1990 年以前OSI 开放式系统七层模型在数据通信和互联网文献中占据主导地位但随着互联网技术的发展这种模型并没有成为最终的标准而TCP/I P 协议族却越来越流行并在实际的使用中得到不断的测试和完善以至于在商用体系结构中成为占据主导地位的协议族我们针对TCP/IP 协议族在实验中提供了一个简单实例。TCP/IP协议是一套把因特网上的各种系统互连起来的协议组,保证因特网上数据的准确快速传输。参考开放系统互连(OSI)
40、模型,TCP/IP通常采用一种简化的四层模型,分别为:应用层、传输层、网络层、链路层。图2.1,图2.1 TCP/IP 协议族参考模型1. 链路层,也称数据链路层或网络接口层,通常包括操作系统中设备的以太网驱动程序和计算机中的物理接口(网络芯片)。物理接口实现数字信号与模拟信号的相互转化;发送数据时将数字比特流转化为模拟信号;接收数据正好相反。以太网驱动程序是链路层物理接口与网络层交互的软件接口,网络层数据必须先交付给以太网的驱动程序,由它将网络层数据打包并交付给物理接口,完成数据发送。反之,以太网驱动程序在接收到数据时,要按照应用层可以接收的形式进行处理并交付。2. 网络层,又称作互联网层,
41、处理分组在网络中的活动,例如分组的选路。在TCP/IP 协议族中,网络层协议包括IP 协议(网际协议),ICMP 协议(Internet 互联网控制报文协议),以及IGMP 协议(Internet 组管理协议)。IP 协议提供了一种不可靠的、无连接的服务,即IP 不提供差错检验和跟踪,只是尽最大可能发送数据。不可靠的意思是不能保证IP 数据报能完全正确地到达目的地。任何要求的可靠性必须由上层来提供(如TCP 协议)。无连接的意思是IP 并不维护任何关于后续数据报的状态信息。因为每个数据报的处理都是相互独立的,可以不按发送顺序接收。如果一信源向相同的信宿发送两个连续的数据报(先是 A, 然后是B
42、),每个数据报都是独立地进行路由选择,可能选择不同的传输路线,因此 B 可能在A 到达之前先到达。ICMP 协议通常被认为是IP 层的一个组成部分,分为差错报文和查询报文两类,在IP 数据报内部被传输。我们所涉及的是查询报文,如PING 既是一个ICMP 的查询报文,用来测试主机的可达性。3. 运输层,主要为两台主机上的应用程序提供端到端的通信。运输层具有几种责任:(1)创建进程到进程(程序到程序)的通信。TCP 和UDP 都使用端口号来完成。(2)在运输层提供流控制和差错控制机制。TCP 提供全面的差错检验机制,而UDP 不提供流控,提供的差错检验机制的水平也较低。(3) 为应用程序提供连接
43、机制。TCP 协议中,发送端建立与接收端的连接,将上层协议传来的数据分为可运输的块并编号,逐个发送;接收端等待接收属于同一进程(由端口号标识)的所有同单元,并交付给应用程序。UDP 协议不用建立连接,只从进程接收数据,并不可靠的交给应用程序。在TCP/IP协议族中,有两个不同的传输协议:TCP(传输控制协议)和UDP (用户数据报协议)。TCP是一个面向连接的、可靠的运输协议。它使用滑动窗口协议完成流控制,使用确认分组、超时和重传来完成差错控制,因此它为IP服务添加了面向连接和可靠性的特点。TCP可以在两台主机之间提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据按照对方主机的窗口
44、分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。UDP则为应用层提供一种非常简单的服务。它只是把数据报分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端,因此任何必需的可靠性必须由应用层来提供。这两种运输层协议分别在不同的应用程序中有不同的用途,这一点将在后面看到。4. 应用层,负责处理特定的应用程序细节。几乎各种不同的TCP/IP 实现都会提供下面这些通用的应用程序。2.2 以太网(Ethernet)协议2.2.1 协议简介TCP/IP 协议是一个比较复杂的协议集。在此,我
45、们仅介绍其与编程密切相关的部分:以太网上TCP/IP 协议的分层结构及其报文格式。我们知道,TCP/IP 协议采用分层结构其分层模型及协议如表2.1,表2.1TCP/IP协议分层模型及协议协议分为四层模型,程序中只涉及到了下面的三层。下面对这三层协议的功能作一简要介绍。ARP(Address Resolution Protocol) 完成IP 地址到物理地址之间的动态映射,对映射方法的要求就是高效。因为TCP/IP 协议是为了互联不同种类计算机而发明的,它的体系结构是分层的。ARP协议提供的逻辑地址到物理地址的映射是为了保证层和层之间的独立性,使得改变物理层的实现不会影响到网络层。IP 协议是
46、TCP/IP 协议中最核心的协议。因为所有TCP、UDP、ICMP 以及IGMP 数据都以IP数据报格式传输。IP 仅提供最好的传输服务,但不能保证数据报能成功到达目的地。任何要求的可靠性都需要上层协议提供。TCP 和UDP 是IP 协议的上层协议,同属运输层,但两者提供的服务不同。TCP 向应用层提供一种面向连接的、可靠的字节流服务。UDP 是一个简单的面向数据报的运输层协议,不提供可靠性,它只把应用程序传给IP 层的数据发送出去,但并不保证它们的可达性。2.2.2 各层协议的封装格式当FTP 或HTTP 等应用数据使用TCP 协议传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作
47、一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息。TCP 传给IP 的数据单元称作TCP 报文段或为简称TCP 段。IP 传给网络接口层的数据单元称作IP 数据报。通过以太网传输的比特流称作帧。以太网数据帧的物理长度必须在461500 字节之间。UDP、TCP、使用首部中16 位的端口号表示不同的应用程序。由于UDP、TCP、ICMP 等协议都要向IP 传送数据。因此IP 必须在其首部中加入表明数据所属的标识。而网络接口也要接收和发送IP、ARP、RARP 数据因此也必须在以太网的帧首部中加入指明数据来源的类型域。这就是数据报文的封装,由下图可知应用层数据被逐层封装,直到数据链路
48、层。我们的设计中在发送数据时就要遵循这种思路,将待发送数据逐层封装成以太网帧。下面就是本设计所涉及到的应用最广泛的以太网数据报文的分层封装如图2.2所示,图2.2以太网协议(由于RTL8019AS 是一种10M 的网络芯片,所以下面所论述的以太网均是指10MBPS 的以太网,不是100M,1000M 的以太网)。以太网协议有两种,一种是IEEE802.2/IEEE802.3, 还有一种是以太网的封装格式。作为单片机来讲,实现一种就可以了这里介绍以太网的封装格式。这里介绍以太网的封装格式,以太网的物理传输帧的封装格式如下表2.2表2.2以太网的物理传输帧的封装格式前导字节由芯片本身产生,用于同步
49、收发两方的时钟,以及指定传输速率,我们不必理会。目的地址(DA):以太网数据帧传输的目的地址,为48 位(6 字节)二进制地址。如果数据全为1, 则该目的地址是以太网上的所有网卡。源地址(SA) 以太网数据帧传输的源地址48 位,表明该帧的数据的出发点,即发送端的网卡地址,为6 个字节。帧格式(TYPE) 类型字段,表明该帧数据的类型。不同协议的类型字段不同,例如:IP 包的数据类型为0800H ,ARP 包的数据类型为0806 ,具体的数据类型后面还有涉及。数据段:以太网规定整个数据包的最大长度不能超过1514 字节,因此该段数据不能超过1500 字节。校验及填充位:以太网规定数据包必须大于
50、60 字节,因此除去必需的DA、SA 和TYPE 14 字节外。还必须传输46 字节的数据。当数据段的数据不足46 字节时,可以填充任何数值已补足46 字节。另外以太网的冲突退避算法由硬件自动执行,也无须我们了解。因此,由以上介绍可知,真正需要我们要处理的数据段只有目的地址、源地址、帧类型以及数据段四个段,最小为60 字节,最大为1514 字节。由于我们的设计是使用网络芯片,而不是使用网卡,这样也就简化了接口电路,方便了操作。对网络芯片进行物理地址的设置后,它可以接收三种地址的数据:发给自已地址的数据;广播地址的数据;多播地址的数据。在发送数据包时,必须将数据按照以太网的帧格式进行封装,前导序
51、列和以太网数据帧后的校验和由芯片自动添加。在接收数据时,RTL8019AS 也会在接收数据最前面自动添加“接收状态、下一页指针、以太网帧长度(以字节为单位)” 三个数据成员(共4 字节) 因此接收的数据帧并不是真正的以太网帧格式,但这样做会方便对数据的操作,由于以太网帧、ARP 帧、IP 帧、TCP 帧、UDP 帧都有固定的数据格式,所以可以依据其各自的帧格式定义成结构类型的数据。例如,根据以太网的封装格式以及接收数据的特点,可以定义如下关于以太网数据的数据结构:struct ethernet uchar RecStatus; /接收状态uchar NextPage; /下一个页uint le
52、ngth; /以太网长度以字节为单位uint DestMacId3; /目的网卡地址uint SourceMacId3; /源网卡地址uint NextProtocal; /下一层协议uchar packet1518; /包的内容其中,前4 个字节的数据是由RTL8019AS 在接收数据后自动添加的,这四个字节的数据在对接收的数据帧进行处理时,作用很大。2.2.3以太网数据帧的分用目的主机收到以太网数据帧时,数据就开始从协议中由数据链路层向上升,同时会被剥离其中各层协议所加的首部,这部分工作是由用户程序来完成的,RTL8019AS 仅负责把数据接收进其内部的数据缓冲区。图2.3主程序可以按照以
53、太网数据帧分用的思路进行编制,这部分程序框架如下:if(有新数据包)if(RxdNetBuff. EtherFrame. NextProtocal = 0 x0806) /这是对ARP 数据包的处理/表示收到一个arp 请求包if(RxdNetBuff. ArpFrame. Operation = 0 x0001)/表示这是一个ARP 请求处理arp 请求数据包else if( RxdNetBuff. ArpFrame. Operation=0 x0002) /表示这是一个ARP 回答处理ARP 应答数据包else if (RxdNetBuff. EtherFrame. NextProtoca
54、l=0 x0800) /表示是一个IP 数据包&(RxdNetBuff.IpFrame.VerandIphLen&0 xf0)=0 x40) /仅处理ip v4&(IP 头校验正确) /表示正确地接收到一个ip 数据包switch(RxdNetBuff. IpFrame. NextProtocal)case 1: /表示为icmp 协议if(RxdNetBuff. IcmpFrame. type=8) /是一个ping 的请求包对PING 请求的应答;else if(RxdNetBuff. IcmpFrame. type=0) /是一个ping 的应答包对ping 应答处理;break;cas
55、e 6: /表示是tcp 协议tcp 数据包处理;break;case 17: /表示是udp 协议udp 数据包处理;break;default:;即将单片机作为服务器端,初始化完成后使其处于监听状态。当RTL8019AS 接收数据报后,会将数据放进芯片内部RAM, 这是由以太网驱动程序负责的。主程序中通过读取RTL801AS9 的寄存器判断是否有新的数据报进入接收缓冲区,如果有,则程序会按照所接收数据帧以太网首部中的帧类型分别进行处理。例如帧类型为0 x0806 时,表明所接收到的数据报是一个ARP 数据报,这时主程序再判断ARP 数据报的操作类型并作出相应处理。对于IP 数据报,处理过程
56、类似,数据帧将会根据IP 协议的上层协议值分别进行处理。3程序设计3.1 RTL8019AS 的以太网驱动程序所谓驱动程序是指一组子程序,它们屏蔽了底层硬件处理细节,同时向上层软件提供硬件无关接口。驱动程序可以写成子程序嵌入到应用程序里(如DOS下的I/O端口操作和ISR),也可以放在动态链接库里,用到的时候再动态调入以便节省内存本论文所有程序采用C51语言编制,可读性强,移植性好,开发简易。1.RTL8019AS 内部RAM 结构介绍RTL8019AS有两块RAM:一块16k字节的RAM,地址为0 x4000-0 x7FFF (该地址为芯片内的存储地址,网卡芯片用它来存储转发数据);一块32
57、 字节RAM,地址为0 x0000-0 x001F。芯片内部地址空间的布如图3.1 所示图3.1由图3.1可见,可用的RAM空间仅有上面提到的两部分。从0 x00 0 xFF 的内存为Prom,是Ne2000兼容的网卡都有的。实际上,与其它地址如0 x0020-0 x00ff 存储的内容是重复的。其中0 x00-0 x0B(工作于8位DMA 模式)用于存放本节点MAC地址,奇偶地址内容是重复放置的。如:MAC地址52544C19F823存放在0 x00-0 x0B 中为525254544C4C1919F8F82323,单地址和双地址内容是重复的。但为了同时适应8 位和16 位的DMA 操作。一
58、般使用偶数地址的内容。Prom 只保存上电时从93C46 中读出的MAC 地址(如果有93C46 的话)。由于我们的设计中没有使用网卡和93C46,因此也可以不使用从地址0 x0000-0 x0001F 的32 字节的Prom,而物理地址不是由Prom而是PAR0-PAR5 寄存器决定的,因此不使用93C46 时可在程序中指定物理地址。地址为0 x4000-0 x7FFF的16K存储区是分页的,每256个字节称为一页,共有64页,程序设计中使用这块RAM 存储接收或发送的数据包。由于RTL8019AS 接收或发送的数据是按页存储的,如果某页没有完全填满数据,则下包数据也不能继续使用该页,只能使
59、用新的页,并且数据是按页连续存放的。芯片页地址0 x40-0 x7f 代表的RAM空间是0 x4000-0 x7fff。另外这16K 的RAM 可由用户进行配置,一部分用来存放接收的数据包,一部分用来存储待发送的数据包。2 芯片的DMA操作和内部寄存器芯片内部有一块双端口、16K字节的RAM,要接收和发送数据包都必须对这块RAM 进行读写,并且需要通过DMA 方式进行读和写。双端口是指两套总线连接该RAM:控制器通过总线A 对芯片内部的RAM进行DMA 读写操作,为了区分主机和芯片硬件两个接口端,这种DMA 又称Local DMA。而8051 通过总线B对芯片内部RAM进行DMA 读写操作,这
60、种DMA操作又称Remote DMA。实际上芯片内部有一些总线仲裁逻辑,负责两套总线的管理,使它们能同时对RAM读写,而不产生冲突。DMA 操作的示意图如图3.2,图中虚线框内的部分为Remote DMA,对应8051对芯片的读写操作。remote DMA 需要主机的参与,主机只需设定好读写的起始起址和长度后就可以读写芯片RAM,且每操作一次RAM 地址自动加1,与普通的RAM 操作相比,处理速度要快很多。左边部分是Local DMA,对应芯片对内部RAM 进行读写的总线。RTL8019AS 的local DMA 操作是由芯片本身完成的,只要主机给定待发送的数据的起始页地址和数据长度并启动发送
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 专利抵押合同范本
- 公司销售人员合同范例
- 劳务合同范本 短期
- 单位购买电脑合同范本
- 勾机铲车出租合同范本
- 公司水果采购合同范本
- 单位玻璃保洁合同范本
- 蛋糕师招聘合同范本
- 代买股合同范本
- 制式采购合同范本
- 2021新《安全生产法》全面解读课件(PPT 84页)
- 企业、事业专职消防队训练内容及操作规程
- T∕CCCMHPIE 1.2-2016 植物提取物 槟榔多糖多酚
- 局域网规划设计_毕业论文
- 胫骨平台骨折(课堂PPT)
- 欧洲文化入门王精品PPT课件
- 中考复习复分解反应类型方程式书写训练题(无答案)
- 病理学课程标准
- ASTM-D471橡胶性能的标准试验方法-液体影响(中文版)(共24页)
- 财务经理的绩效考核办法
- 中国十大名茶(课堂PPT)
评论
0/150
提交评论