




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要随着嵌入式系统在工业控制领域的广泛应用和发展,以及控制系统的网络化发展趋势,嵌入式系统的网络特性越来越受到重视。目前己有TCP/IP协议栈多数是面向32位微处理器的,但是32位微处理器在工业控制领域增长缓慢,8位和16位的嵌入式系统在工业控制领域仍占据着垄断地位,有着极为广泛的应用。本文着眼于嵌入式TCP/IP技术在工业以太网中的应用,综述了国内外工业以太网技术和嵌入式TCP/IP技术的发展情况和研究动态。在AT89C51单片机上设计并实现了精简的TCP/IP协议栈,提出了系统的整体架构和具体实现方案,并重点讨论了ARP协议、IP协议、ICMP协议、UDP协议和RTL8019AS驱动程序的设计和实现。在实验室条件下,对IP协议、ICPM协议、UDP协议进行了正确性测试和功能测试。系统具有良好的稳定性和可靠性,达到了预期目的。关键词:嵌入式系统;工业控制;RTL8019AS;TCP/IP;AT89C51AbstractWith the application and development of the embedded system in the field of the industrial control,and the trand of the network control,the network featuresof the embedded system are more attention.Currently,most TCP/IP stack is based on 32-bit microprocessor.However,32-bit microprocessors grows slowly in the field of the industrial control,8-bit and 16-bit embedded systems still hold a mononoly position in this field,have many applications.This paper focuses on the use of embedded TCP/IP techology in industry Ethernet,and summarizes the development are research of industry Ethernet technology and embedded TCP/IP technology. In this paper,embedded TCP/IP stack in AT89C51 is designed and implemented.The framework of the system and the specific plan are proposed.We focus on the ARP,IP,UDP ,ICMP and RTL8019AS driver.Now,the TCP/IP stack is comprehensively tested in AT89C51, and the results must show that the embedded TCP/IP stack have good configurable and reliability,achieves the design objectives.Key words:embedded system;industrial control;RTL8019AS;TCP/IP; AT89C51目录摘要IAbstractII第1章 绪论- 1 -1.1 选题背景及意义- 1 -1.2 嵌入式服务器的历史和现状- 1 -1.3 嵌入式TCP/IP协议栈的研究现状- 2 -1.4 主要研究内容和实现方法- 3 -第2章 嵌入式服务器总体介绍和设计- 4 -2.1 嵌入式服务器总体功能概述- 4 -2.2 嵌入式服务器总体工作流程简介- 5 -2.3 嵌入式服务器硬件电路的设计- 6 -2.3.1 RTL8019AS接口电路的设计- 6 -2.3.2 存储器的扩展- 7 -2.3.3 串口部分的设计- 8 -第3章 TCP/IP协议的设计与实现- 10 -3.1 嵌入式系统网络体系结构- 10 -3.2 TCP/IP协议概述- 10 -3.3 ARP协议的设计与实现- 11 -3.4 IP协议的设计与实现- 13 -3.5 ICMP协议的设计与实现- 15 -3.6 UDP协议的设计与实现- 17 -第4章 RTL8019AS驱动程序的设计- 19 -4.1 RTL8019AS主要特性- 19 -4.2 RTL8019AS内部结构- 19 -4.3 RTL8019AS寄存器功能- 20 -4.4 以太网帧格式- 22 -4.5 RTL8019AS驱动程序的实现- 22 -4.5.1 RTL8019AS初始化过程- 23 -4.5.2 RTL8019AS的数据接收处理过程- 26 -4.5.3 RTL8019AS的数据发送处理过程- 28 -第5章 嵌入式服务器的仿真与测试- 31 -结论- 34 -致谢- 35 -参考文献- 36 -第1章 绪论1.1 选题背景及意义Internet进入了一个崭新的时代,它己经成为我们日常生活的一个基本组成部分。无论是在家中、学校中、办公室中,还是在其它什么地方,都能够方便地连接到Internet上。随着Internet的普及和深入应用,嵌入式系统越来越重视自己的网络特性1。要在全球范围内实现信息化,每个设备都可以接入Internet将是一个必要条件,支持TCP/IP协议的各种设备将成为Internet的主力公民。嵌入式系统己经在家庭、办公室、工业控制等各个领域得到了广泛的应用。但是,目前大多数的嵌入式系统还处于独立使用阶段,以微处理器为核心,与各种传感器、伺服装置、指示仪表集成实现特定的功能。Internet己经成为社会最重要的基础设施之一,它是信息流通的基本渠道,如果嵌入式系统能够接入Internet,则可以方便、廉价地将信息传递到世界上的任何地方。将数目庞大的各种嵌入式设备接入Internet有如下重大意义23:(1)充分利用现有的硬件资源,不需要铺设专用的通信线路,降低了硬件投资成本;(2)TCP/IP己经成为事实上的全球标准,可以充分利用Web浏览器等各种软件资源,降低了软件投资成本;(3)各种监控信息可以直接在色彩丰富的网页上显示,各种数据可以动态刷新,操作简单;(4)可以充分利用Internet上现有的存储资源、计算资源,降低了投资成本。目前已有的针对嵌入式系统的TCP/IP实施方案多数是面向32位微处理器的,而且多数是针对某一特定应用,主要是Web应用,并不适用于一般应用。目前32位微处理器的市场占有率增长缓慢,8位、16位的嵌入式系统在市场上仍占据着垄断地位,有着极为广泛的应用45。要在目前市场条件下实现大多数嵌入式设备接入Internet,就需要设计、实现一个面向一般应用、便于移植的嵌入式TCP/IP协议栈,同时要具有良好的伸缩性能,支持扩展,为嵌入式系统接入Internet提供价格低廉的软件支持。本课题将对传统TCP/IP协议进行简化、改写,提供满足工业以太网通信需要的,具有最低资源要求的TCP/IP协议和最精简的TCP/IP协议,实现基于TCP/IP协议的嵌入式服务器的设计。1.2 嵌入式服务器的历史和现状嵌入式系统的出现至今已经有30多年的历史,近几年来,计算机、通信、消费电子的一体化趋势日益明显,嵌入式技术已成为一个研究热点。纵观嵌入式技术的发展过程,大致经历四个阶段。第一阶段是以单芯片为核心的可编程控制器形式的系统,具有与监测、伺服、指示设备相配合的功能。这类系统大部分应用于一些专业性强的工业控制系统中,一般没有操作系统的支持,通过汇编语言编程对系统进行直接控制。这一阶段系统的主要特点是:系统结构和功能相对单一,处理效率较低,存储容量较小,几乎没有用户接口。由于这种嵌入式系统使用简单、价格低,以前在国内工业领域应用较为普遍,但是已经远不能适应高效的、需要大容量存储的现代工业控制和新兴信息家电等领域的需求。第二阶段是以嵌入式CPU为基础、以简单操作系统为核心的嵌入式系统。主要特点是:CPU种类繁多,通用性比较弱;系统开销小,效率高;操作系统达到一定的兼容性和扩展性;应用软件较专业化,用户界面不够友好。第三阶段是以嵌入式操作系统为标志的嵌入式系统。主要特点是:嵌入式操作系统能运行于各种不同类型的微处理器上,兼容性好;操作系统内核小、效率高,并且具有高度的模块化和扩展性;具备文件和目录管理、多任务、网络支持、图形窗口以及用户界面等功能;具有大量的应用程序接口API,开发应用程序较简单;嵌入式应用软件丰富。第四阶段是以Internet为标志的嵌入式系统,这是一个正在迅速发展的阶段。目前大多数嵌入式系统还孤立于Internet之外,但随着Internet的发展以及Internet技术与信息家电、工业控制技术结合日益密切,嵌入式设备与Internet的结合将代表嵌入式系统的未来。综上所述,嵌入式系统技术日益完善,嵌入式操作系统已经从简单走向成熟,它与网络、Internet结合日益密切,因而,嵌入式系统应用将日益广泛。1.3 嵌入式TCP/IP协议栈的研究现状TCP/IP协议栈最早是在UNIX操作系统中实现的,随后LINUX、DOS、WINDOW操作系统也实现了各自的TCP/IP协议栈。随着嵌入式系统越来越重视自己的网络特性,TCP/IP协议栈又被移植到一些嵌入式系统上,由于系统资源有限以及指令格式不同的原因,在UNIX、LINUX、DOS、WINDOWS等操作系统上实现的TCP/IP协议栈不能在嵌入式系统上直接应用。绝大多数嵌入式设备的内存空间极为有限,例如:51单片机,直接寻址空间仅有64K,可用的片内RAM非常少,最多也只能扩展到64K。嵌入式设备的CPU运算速度也极为有限,一般只有2MIPS,而普通的PC在100MIPS以上。 到目前为止,已经存在多种嵌入式设备接入Internet方案以及与之对应的嵌入式TCP/IP协议栈。总的来说,可以分为以下两类67:一是通过专用的Web服务器实现Internet接入;二是把标准的网络技术扩展延伸到嵌入式设备,每个嵌入式设备都可以直接接入Internet。这种方案是目前最佳的解决方案,也是未来的发展方向。第二种方案中,TCP/IP协议栈的实现可以分为硬件固化和软件编程两种方式。硬件方式是指使用硬件实现TCP/IP协议栈,形成独立于各种微处理器的专用芯片,通过标准的输入输出端口,可以与绝大多数微处理器相连;软件方式是指TCP/IP协议栈用代码实现,然后使用烧写器编程写入ROM中。1.4 主要研究内容和实现方法 研究本课题方向的国内外发展现状,在以AT89C51单片机为核心处理器的系统中嵌入TCP/IP协议,实现基于TCP/IP协议的嵌入式服务器的设计。深入研究网络接口设备RTL8019AS的工作原理和各个寄存器的功能,完成底层驱动和接口,并给嵌入式TCP/IP协议提供底层驱动和接口函数,使嵌入式TCP/IP协议可以方便的使用硬件平台。深入研究嵌入式TCP/IP协议内核,在嵌入式系统和网络接口设备驱动的基础上,对TCP/IP协议进行改写与裁减,使其具有以太网通信所需的基本功能。第2章 嵌入式服务器总体介绍和设计本章主要介绍嵌入式服务器的硬件结构框图,整体实现的功能,主要功能模块,硬件电路设计等内容。2.1 嵌入式服务器总体功能概述本设计以以太网为接口,以AT89C51单片机为硬件平台,利用软件化的嵌入式TCP/IP协议栈,实现嵌入式服务器的设计。采用C51编制RTL8019AS的驱动程序和TCP/IP协议相关程序,通过软件和硬件相结合的方式完成嵌入式服务器的设计。系统可以分为三个主要模块:主处理器模块、串口处理模块和以太网接口及控制模块。系统结构框图如图2-1所示:AT89C51PC串口Ethernet以太网控制器RTL8019AS图2-1 系统结构框图AT89C51首先初始化网络及串口设备,当有数据包从网络传递过来,AT89C51对数据报进行分析,如果是ARP数据包,则程序转入ARP处理程序;如果是IP数据包且传输层使用UDP协议,端口正确,则认为数据报正确,数据解报后,将数据部分通过端口所对应的串口输出。反之,如果从串口接收数据,则将数据按照UDP格式打包,送入以太网控制器由其将数据输出到以太网中。主处理模块主要处理TCP/IP的网络层和传输层,链路层部分由以太网控制芯片完成。应用层交付软件系统来处理,用户可以根据需求对收到的数据进行处理。主处理器处理模块是嵌入式服务器的核心部分,主要由AT89C51单片机、可编程逻辑器件、数据及程序存储器件等组成。主处理模块完成的功能主要有:在串口数据和以太网IP数据之间建立数据链路;通过对以太网控制芯片的控制读写来实现对IP数据包的接收与发送;判别串行数据流的格式,完成对串口设备的选择以及对串行数据流格式的指定;控制串口数据流与IP数据包之间的速率控制,对数据进行缓冲处理;对以太网控制芯片的寄存器进行读写操作;完成总线地址锁存功能;完成对串口以及各个存储器件的片选功能;完成对串口的中断状态判别等功能。以太网接口与控制模块由以太网控制器RTL8019AS等完成。该模块完成的是服务器与以太网的连接。串口处理模块部分主要用来显示AT89C51单片机接收到的数据以及向AT89C51发送数据的功能。2.2 嵌入式服务器总体工作流程简介 图2-2 系统主控制流程图系统总体工作流程如图2-2所示。启动系统开始工作,完成各个模块与软件的初始化工作后,系统便进入对RTL8019AS的轮询状态,如有以太网数据包到达则将其存入缓冲区并解析其类型。若为ARP包,则调用ARP处理子程序对其进行处理;若为IP包,则处理IP数据包首部并判断此包中封装的上一层协议类型:若为ICMP包,则调用ICMP处理子程序对数据包进行处理;若为UDP包,则调用UDP处理子程序对数据包进行处理;若不是这两种类型的包,则系统自动丢弃该包。2.3 嵌入式服务器硬件电路的设计图2-3 系统硬件电路原理图嵌入式系统硬件电路原理图如图2-3所示。设计中用到的主要芯片有:AT89C51(单片机)、RTL8019AS(以太网控制器)、62256(32KRAM)、74HC573(8位地址锁存器)。并用反号器对62256和RTL8019AS的内存空间进行选择,使62256映射到AT89C51的低32K内存空间,RTL8019AS映射到AT89C51的高32K内存空间。2.3.1 RTL8019AS接口电路的设计1数据总线单片机采用8位数据线与以太网控制器进行数据处理,利用地址锁存器实现数据/地址线的分时复用。这样,必须使RTL8019AS的IOCS16引脚接低电平或不接悬空,选择8位数据总线方式。DATA0-DATA7是RTL8019AS的8位数据总线,依次接AT89C51单片机的P0.0-P0.7引脚。2地址总线A0-A19是RTL8019AS的地址线,共20根。选择300H做为RTL8019AS的基地址即001100000000,所以地址线的SA9、SA8接VCC,因为寄存器地址偏移量为00H-1FH共32个(对应于300H-31FH),所以只需将地址线SA0-4接AD0-4,其余地址线接地即可。AT89C51的ADDR15接RTL8019AS的AEN引脚,用于片选RTL8019AS,由于RTL8019AS的AEN引脚是高电平有效,所以RTL8019AS的寄存器就被映射到AT89C51内存空间。3读写控制IOR,IOW分别是RTL8019AS的读写控制信号线,分别接AT89C51单片机的P3.6、P3.7引脚。另外,将SMEMRB和SMEMWB引脚接高电平,屏蔽了远程自举加载功能。 4其它设置RESDRV是RTL8019AS的复位引脚,接AT89C51单片机复位引脚。为了简化网络接口的软、硬件设计,不使用RTL8019AS的远程自举加载功能,并且将芯片JP引脚接高电平,选用跳线接口模式。RTL8019AS接口电路如图2-4所示:图2-4 RTL8019AS的接口电路2.3.2 存储器的扩展使用62256(32KRAM)主要是为了解决内存不足的问题,因为一个以太网数据帧最大可以达到1500字节,AT89C51单片机没有这么大的内存空间来处理复杂的TCP/IP协议;另外可以提高AT89C51单片机的数据处理速度,提高了数据吞吐量。62556的读、写信号线直接与单片机读写信号线直接连接,单片机的8位AD口通过74HC573分时复用分别连接62256的地址线与数据线。62256的A8-A15接单片机的P2.0-P2.7。将AT89C51单片机的ADDR15接62256的20引脚,用于片选62256,由于62256的20引脚是低电平有效,因此我们就将62256的32KRAM映射到AT89C51单片机内存空间中的低32K。图2-5、2-6分别表示了74HC573与62256的接线图。 图2-5 74HC573的接线图图2-6 62256的接线图2.3.3 串口部分的设计 本设计中串口主要实现的是显示功能,故此部分原理图很简单,如图2-7所示。将COMPIM的RXD、TXD分别接到单片机的P3.0和P3.1引脚,并连接虚拟终端以便在仿真时观察串口显示的数据。 图2-7 串口部分电路图 第3章 TCP/IP协议的设计与实现本章主要介绍检测系统的硬件原理框图,整体实现的功能,主要功能模块,硬件设计及流程图等内容。3.1 嵌入式系统网络体系结构嵌入式系统网络体系结构如图3-1所示。其中,嵌入式TCP/IP协议栈和网络设备驱动是本文研究的重点。嵌入式TCP/IP协议栈为嵌入式系统接入Internet提供最重要的软件支持,网络设备驱动为系统接入以太网提供最重要的保证。上层应用程序 嵌入式TCP/IP协议栈网络设备驱动 图3-1 嵌入式系统网络体系结构3.2 TCP/IP协议概述TCP/IP协议最早可以追溯到美国国防部高级研究计划署资助的ARPANET网,ARPANET网最初使用NCP协议(Network Control Protoeol)。1970年,ARPANET网已经初具雏形,并且开始向非军用部门开放,许多大学和商业部门开始接入。但是当卫星网络和无线网络出现以后,利用NCP协议对这些网络进行互连时出现了问题。这就迫切需要一种新的参考体系结构,能够无缝隙地连接多种网络。这种新的参考体系结构在其两个主要协议(TCP、IP)出现以后,就被称为TCP/IP分层模型。TCP/IP协议最早由斯坦福大学的VintonG.Cerf和RobertE.Kahn发明。由于TCP/IP协议的跨平台特性,ARPANET网的研究人员在对TCP/IP协议改进后,规定所有接入ARPANET网的计算机都必须使用TCP/IP协议。后来ARPNET网逐渐发展成为现在的Internet,TCP/IP协议也就随之成为Internet事实上的协议标准。协议是通信双方的约定。在Internet中,TCP/IP协议是分层的。各层协议相互协同动作,构成一个有机的整体。TCP/IP协议注重效率,0SI七层参考模型注重协议的标准性,图3-2显示了TCP/IP协议的分层模型与对应的0SI参考模型。TCP/IP协议包括许多协议子集89,例如:ARP(地址解析协议)、RARP(逆地址解析协议)、IP(网际协议)、IGRP(内部网关路由选择协议)、BGP(外部应用层 表示层会话层传输层网络层数据链路层传输层网络层物理层网络接口层硬件 应用层 图3-2 OSI参考模型与TCP/IP分层模型网关路由选择协议)、ICMP(互联网控制报文协议)、TCP(传输控制协议)、UDP(用户数据报协议)等,以及应用层的DNS(域名解析协议)、SNMP(简单网络管理协议)、SMTP(简单邮件传输协议)、HTTP(超文本传输协议)等。这些协议子集与TCP/IP各层对应关系如图3-3所示。(1)网络接口层:负责管理特定的物理介质,例如:以太网、蓝牙等。对应于OSI参考模型中的物理层和数据链路层。网络接口层定义了一台计算机如何访问物理网络。常用的ARP协议属于该层。(2)网络层:有时也称为互联网层,通过多个不同的物理网络向目的节点传输数据报文,对应于OSI参考模型中的网络层。网络层协议定义了网络传输的基本数据单元,提供路由支持。(3)传输层:对应于OSI参考模型中的传输层,传输层主要解决不同应用程序之间的识别问题,因为在一般的通用计算机中,常常有多个应用程序同时访问网络。为区分各应用程序,传输层在每一分组中增加了识别信源应用程序和信宿应用程序的信息。用户的应用程序往往需要特定层次的服务水平,这可能涉及到可靠性、错误率、延迟或这些特性的某些组合。传输层协议同时为应用层程序提供所需要的服务水平。(4)应用层:向用户提供一组常用的应用程序,比如:虚拟终端、电子邮件等。OSI参考模型中的应用层、表示层和会话层合并到TCP/IP分层模型中的应用层。严格说起来,应用层协议不能算作TCP/IP协议的一部分。事实上,用户完全可以在传输层之上建立自己的专用的应用程序。3.3 ARP协议的设计与实现ARP协议10 (Address Resolution Protoeol)用来把IP地址解析成物理网络地址,在以太网中就是以太网地址。HTTPFTPDNS TCP UDP IPNetwork InterfaceARPRARP Hardware应用层传输层网络层网络接口层 图3-3 各协议子集与TCP/IP各层对应关系为了提高效率,ARP使用了高速缓存技术。在每台使用ARP的主机中,都开辟了一个专用的内存空间,即高速缓存,存储最近获得的IP地址和对应的物理网络地址,这就是ARP表。每当接收到一个ARP应答,主机就把目标主机的IP地址和对应的物理网络地址存入ARP表。当发送数据报文的时候,主机首先查询ARP表,如果没有,再进行地址解析。由于网络的局部性,这样就大大提高了ARP效率。TCP/IP将ARP报文设计成一种能够适应各种物理地址和协议地址的格式,针对以太网这一特定的物理网络,其ARP报文格式如图3-4所示:(1)硬件类型:用于表示硬件地址的类型,值为1时表示以太网地址;(2)协议类型:用于表示协议地址的类型,值为0x0800时表示IP地址;(3)硬件地址长度:对于以太网来说,该值为6;(4)协议地址长度:对于IP协议来说,该值为4;(5)操作:标识四种操作类型:ARP请求(为1)、ARP应答(为2)、RARP请求(为3)、RARP应答(为4)。ARP协议模块主要实现ARP报文的请求和应答。当网络接口层接收到上层的IP报文时,需要在IP报文之前加上以太网帧头部,这包括两个MAC地址。首先从ARP表中查询目的IP地址对应的目的MAC地址,如果存在则直接添加到以太网帧头部中,然后发送以太网帧;如果没有查询到,则阻塞IP报文的发送,先发送一个ARP请求报文。在接收到目的主机返回的ARP 硬件类型硬件地址长度协议地址长度操作发送端以太网地址(6个字节)发送端IP地址协议类型接收端以太网地址(6个字节)接收端IP地址图3-4 以太网的报文格式应答报文之后,更新ARP表,填充MAC地址,发送被阻塞的IP报文。下面列出一些与ARP协议模块有关的处理函数:(1)void Arp_Request(unsigned long ip_address),此函数用来请求对指定的IP地址进行解析,获取其物理地址,其中的ip_address为要解析的IP地址。当要解析一个IP地址时,首先要确定下层协议为ARP协议,将以太网帧的目的物理地址设置为广播地址,ARP报文的物理地址设置为0,又ARP回答报文来填充,然后按照以太网帧的格式构造数据包,启动发送命令发送数据。(2)void Arp_Answer( ),此函数执行对ARP请求报文的应答:填充本地物理地址,将ARP操作改为回答。在接收到ARP请求报文后,首先判断要解析的IP地址是本地IP,若是本地IP则将接收到的ARP数据从协议字段开始复制到发送缓冲区,并复制对方的物理地址及IP地址,设置相应标志位,构造应答包,启动发送命令发送此应答包。3.4 IP协议的设计与实现TCP/IP协议是为了包容各种物理网络而设计的,而这种包容性主要体现在IP协议中。IP协议11,又叫网际协议。TCP/IP协议通过IP报文和IP地址屏蔽了底层物理帧的差异,并向上层提供统一的数据格式。IP协议提供不可靠的、无连接的数据报传输服务。不可靠(unreliable)指IP协议不能够保证IP报文成功地到达目的地。IP只提供尽力而为的传输服务。当发生某种错误时,例如:某个路由器暂时耗尽数据缓冲区,IP有一个简单的错误处理算法:丢弃该数据报文,然后发送ICMP消息报文给信源主机。任何可靠性要求都由上层协议(例如:TCP)来保证。但是,IP报文独立于任何底层的物理网络技术,它是一种通用的数据传输方式。无连接(connectionless)指IP不维护任何有关数据报文的状态信息。每个数据报文的处理相互独立。这说明:数据报文可能不按发送顺序接收。如果一个信源主机向同一个信宿主机发送两个连续的数据报文(先发送数据报文A,再发送数据报文B),每个数据报文都独立进行路由选择,这就有可能选择不同的传输路径,不同的路由质量,因此,数据报文B可能先于A到达信宿主机。版本首都长度服务类型报文总长标识 标志片偏移生存时间协议首部校验和源IP地址目的IP地址 选项(如果有)数据图3-5 IP报文格式IP报文格式如图3-5所示,普通的IP报文首部长度为20个字节,除非含有选项字段。IP报文中各个字段的含义如下:(1) 版本:IP协议的版本,只能取4、6这两个值,目前使用比较多的IPv4,发展趋势是IPv6;(2) 首部长度:以4字节为单位进行计算,首部长度值通常为5,即20个字节。由于它是一个4位字段,因此首部长度最大60字节;(3) 服务类型:用于设置数据传输的优先权和服务类型,字段中的前3位用于设置数据传输的优先权,接着的4位用于设置服务类型,最后l位是保留位,以备将来使用;(4) 报文总长:整个IP报文的长度,以字节为单位进行计算。利用首部长度和报文总长字段,就可知道IP报文中数据域起始位置和长度;(5) 标识:由发送主机指定,帮助IP报文实现分段和重组。唯一标识信源主机发送的每一个IP报文;(6) 标志:该字段共有3位,其中第1位没有使用;第2位标识这个IP报文是否可以分段,该位置1,则表示这个IP报文禁止分段,该位置0,则表示如果需要分段,则将这个IP报文分段,如果必须对这个IP报文分段,而该位置1,则丢弃这个IP报文;第3位标识这个分段是否是最后一个分段,该位置0表示这个分段是最后一个分段;(7) 分段偏移量:标识这个分段在整个IP报文中的位置,用于保证目标主机能够将属于同一个IP报文的分段重组起来;(8) 生存时间:IP报文最多可以经过多少个路由器,标识IP报文最长生存时间,IP报文每经过一个路由器,生存时间减1;(9) 协议:标识IP报文载荷中上一层的协议类型;(10)首部校验和:IP报文首部CRC校验和;(11)源IP地址:发送主机的IP地址;(12)目的IP地址:目标主机的IP地址;(13)选项:不是一个必须的字段,略;(14)填充:如果有选项字段,填充字段保证IP报文首部以4字节对齐;因为本设计中的数据包中包含的只是一些简单控制命令和一些简单数据并没有大量的块数据的传送,因此不存在数据包分片、重组处理,所以IP处理函数的实现比较简单,首先拆包然后判断是哪种协议类型,如果是UDP数据包,则交给Process_Udp( );函数处理,如果是ICMP数据包,则交给Ping_Answer( )及Ping_Echo( )函数处理。由于TCP处理过程需要进行三次握手信号的连接,它是一个有连接的数据传输过程,里面涉及到复杂的状态转换过程,因此代码量比较大,这对芯片的内存要求也比较高,而且在工业控制场合,更需要注意考虑的是数据信号、控制信号的及时性而不是可靠性,而且UDP协议虽不是可靠的传输协议,但也被证明正确率很高,因此本设计只能够使用到UDP协议,作为传输层协议,而没有实现TCP协议。3.5 ICMP协议的设计与实现ICMP协议12(Internet Contro Message Protoeol)是网络层一个不可分割的组成部分。ICMP协议用于传输差错报文和控制报文以及其它一些网络信息,对通信过程中产生的问题提供信息反馈。目前,差错报文的比重已经大大低于控制报文的比重。ICMP协议最基本的功能是提供差错报告,但是ICMP协议只给出了建议操作,并没有严格规定具体操作。ICMP差错报告并不享受特别的优先权和可靠性,作为一般数据进行传输,因此,ICMP差错报告完全可能丢失或者损坏;另外,ICMP差错报文中的数据域在包含故障报文的头部之外,还要包含故障报文中的前64比特数据,这样可以使接收端更加准确的确定故障。ICMP差错报告包括:信宿不可达、超时等。ICMP控制报文包括:源抑制报文和重定向报文。其中,源抑制报文主要用于处理网络拥塞,当IP报文到达速度太快,无法及时处理时,目的主机或中继主机就会发送一个ICMP源抑制报文(ICMP Source Quench Message)给信源主机,通知信源主机暂停发送IP报文;重定向报文主要用于路径控制。与ICMP差错报文、ICMP控制报文单向传输不同,ICMP查询报文是双向传输的,主要用于获取某些有用的信息,这样可以更加方便地进行故障诊断和网络控制。常用的ICMP查询报文包括:回送请求(Eeho Request),回送应答(Eeho Reply)等。回送请求和回送应答报文主要用于检查网络间的物理连接是否己经建立。网络管理程序,例如:简单网络管理协议(SNMP)就是使用回送请求和回送应答报文来监控网络故障,回送请求和回送应答报文也被用来跟踪路由。ICMP报文格式如图3-6所示:类型代码校验和标识序列号数据图3-6 ICMP报文格式(1) 类型:指出ICPM报文的类型,8表示回应请求报文,0表示回应应答报文;(2) 代码:提供ICMP报文类型的进一步信息。本设计中的ICMP协议是为了实现ping程序。因为刚开始连接网络是需要测试网络是否连通,用发送数据包测试的方法,不太可能测试正确。而ping程序就是最基本的测试网络连通的协议。用Ping_Request( )函数来发送ping请求报文,测试对方主机的可达性;Ping_Answer( )函数是ping应答,与ping请求一起用来测试一个主机的可达性,ping的回答是将ping请求报文的源物理地址和目的物理地址互换,源IP地址和目的IP地址互换,将ICMP操作类型字段换为回答,并且将ping请求报文中的选项数据(32字节)原封不动的发回;Ping_Echo( )是接收到ping应答数据后,在本地机通过串口回显数据;process_Ping( )是对ping数据包的处理。Ping_Echo( )的代码如下:void Ping_Echo( )union Ip_Address_Type ip;ip.words0 = RxdNetBuff.IpFrame.SourceIp0;ip.words1 = RxdNetBuff.IpFrame.SourceIp1;Printf_String( rnReply From IP=);Printf_IPStr(ip);Printf_String( Bytes=32 );Printf_String(TTL=);Printf_Hex(RxdNetBuff.IpFrame.ttl);Process_Ping( )的关键代码如下: if(Ping_IP_TTL0)|(Gateway_IP_TTL0) /ARP请求发送后,ARP回答会对请求分组中的IP地址进/解析,并设置全局变量的值。/表示IP地址已经解析 /Printf_String(rnSend Ping Request.); Ping_Request( );/发送PING请求 else /IP地址还没有解析 /Printf_String(rnSend ARP Request.rn ); Arp_Request(Ping_Ip_Address.dwords);/发送ARP请求,对IP地址进行解析 if(Ping_Ip_Address.dwords=My_Ip_Address.dwords) /ping的是自己的ip地址 Printf_String(rnReply From IP=);/显示信息 Printf_IPStr(My_Ip_Address); Printf_String( Bytes=32 );Printf_String(TTL=10);3.6 UDP协议的设计与实现UDP协议(User Datagram Protoeol)建立在IP协议之上,同TCP一样,位于传输层。提供一种无连接的低延时的传输服务。UDP和TCP的主要区别在于可靠性。UDP不提供应答、重新排序、超时重传、流量控制等机制,也就是说,UDP不能保证UDP数据报正确的到达宿端。基于UDP的上层应用程序在不可靠的网络上必须自己解决可靠性,以确保数据传输的安全性。但是,UDP简单高效,适于广播。UDP数据报格式如图3-7所示:源端口号目的端口号UDP长度校验和数据图3-7 UDP数据报格式(1) 源端口号:标识UDP数据报的源端应用程序。它和源端IP地址共同标识UDP数据报的发送者。当不需要返回数据时,该域置0;(2) 目的端口号:标识UDP数据报的目的端应用程序。它和目的端IP地址共同标识UDP数据报的接收者;(3) UDP长度:以字节为单位计算整个UDP数据报的长度,最小值为8;(4) UDP校验和:这是一个可选字段。UDP协议作为传输层,直接与应用层交互信息,应用层的所有数据都包含在UDP数据包中。Process_Udp( )对UDP数据进行处理,本设计中仅接收1025端口的数据包;Udp_Request( )用于发送UDP请求,直接带有数据而无需建立连接;Process_Udp_Command( )用于处理UDP请求。Process_Udp( )的代码如下:void Process_Udp( )union Ip_Address_Type ip;uint ii;if(VerifyUdpCrc( )if(RxdNetBuff.UdpFrame.DestPort=1025)/仅接收1025端口的数据包 Printf_String(rnUDP: SourceIP=); ip.words0 = RxdNetBuff.IpFrame.SourceIp0; ip.words1 = RxdNetBuff.IpFrame.SourceIp1; Printf_IPStr(ip); Printf_String( DestIP=); ip.words0 = RxdNetBuff.IpFrame.DestId0; ip.words1 = RxdNetBuff.IpFrame.DestId1; Printf_IPStr(ip); Printf_String(rnUDP: DestPort=); Printf_PortStr(RxdNetBuff.UdpFrame.DestPort); Printf_String( SourcePort=); Printf_PortStr(RxdNetBuff.UdpFrame.SourcePort); Printf_String( Length=); Printf_PortStr(RxdNetBuff.UdpFrame.length); Printf_String(rnUDP: Data=); for(ii=0;iiRxdNetBuff.UdpFrame.length-8;ii+)/8 bytes udp head Printf_Char(RxdNetBuff.UdpFrame.udpdataii);/udp数据包的数 第4章 RTL8019AS驱动程序的设计RTL8019AS芯片是由Realtek公司生产,广泛用于10M的ISA总线接口的集成以太网控制芯片。它与NE2000标准相兼容,支持即插即用方式,具有全双工和三级电源控制特性。全双工特性使信道传输速率从10Mbps提高到20Mbps,RTL8019AS内部带有16KBRAM缓冲区,可以支持UTP(双绞线)、AUI(粗缆以太网连接器)和BNC(细缆以太网)接口13。4.1 RTL8019AS主要特性RTL8019AS是通用的网络接口芯片,具有16位的数据线接口和20位的地址线接口。RTLS019AS在其典型应用中,可以在发送的物理帧上自动添加帧头、帧起始定界符和校验和;同时RTL8019AS还具有曼切斯特编码、冲突检测和重发的功能,避免了在以太网CSMA/CD协议下由于信道内容冲突而引起的性能下降。它可以与很少的外围电路一起完成效据的发送和接收功能。Realtek公司生产的RTL8019AS以太网控制器以优良的性能、低廉的价格得到了广泛的应用。其主要性能如下14:(1)适用于Ethernet11,IEEE802.3,10Bases,10BaseT; (2)支持8位、16位数据总线;(3)全双工,收发可同时达到10Mbps速率,睡眠模式以降低功耗;(4)内置16K的SRAM,用于收发缓冲,降低对主处理器的速度要求;(5)可连接同轴电缆和双绞线,并可自动检测所连接的介质;(6)100脚的TQFP封装,缩小PCB尺寸。4.2 RTL8019AS内部结构RTL8019AS由接收逻辑控制器、接收CRC校验、接收计数器、地址识别逻辑、FIFO逻辑队列、发送逻辑控制器、发送CRC校验、内部总线、I/O缓冲区等组成。每个模块都能由相应的寄存器加以控制。其组成原理框图如图4-1所示。按数据链路的不同,可以将RTL8019AS内部划分为远程DMA(remote DMA)通道和本地DMA(local DMA)通道两个部分。本地DMA通道负责本地缓冲区和FIFO之间的数据传输:一方面实现两者之间在发送和接收帧时,字节或字的数据传输;另一方面在发生发送帧碰撞时,可在处理器不介入的情况下自动重发。远程DMA通道负责本地缓冲区和处理器内存之间的以字或字节方式下的数据传输。其功能模块包括:接收解串功能模块、CRC产生校验功能模块、发送串行化功能模块、地址识别功能模块、FIFO和FIFO控制逻辑、协议逻辑阵列、DMA和缓冲控制逻辑等。当单片机向网上发送数据时,先将一帧数据通过远程DMA通道送到RTL8019AS的发送缓冲区,然后发出传送命令,当RTL8019AS发送完成一帧数据后,再发送另外一帧数据。RTL8019AS接收到的数据通过MAC比较、CRC校验后,由FIFO存
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025贵州省医疗服务评价中心第十三届贵州人才博览会引才考前自测高频考点模拟试题及完整答案详解
- 2025广西物流职业技术学院才招聘262人模拟试卷及答案详解参考
- 2025年渭南光明电力集团有限公司招聘(3人)考前自测高频考点模拟试题及答案详解1套
- 2025河南新乡市辉县市大成高级中学招聘考前自测高频考点模拟试题及完整答案详解一套
- 2025贵州安顺市推进东西部协作工作领导小组办公室招聘合同制工作人员考前自测高频考点模拟试题有完整答案详解
- 2025年福建省泉州市晋江市农业农村局公开招聘1人考前自测高频考点模拟试题及完整答案详解一套
- 2025年中国大唐集团有限公司法律专业校园春季专项招聘20人笔试题库历年考点版附带答案详解
- 2025湖北咸宁市赤壁市教师招聘24人模拟试卷附答案详解(突破训练)
- 2025黑龙江绥化望奎县事业单位招聘71人考前自测高频考点模拟试题及一套答案详解
- 2025河北保定市雄安新区雄县事业单位招聘89人模拟试卷及答案详解(新)
- 政府人员网络安全培训课件
- 航空煤油储存管理办法
- GB/T 45906.8-2025变电站二次系统第8部分:电气操作防误
- CRT2000 消防控制室图形显示装置-使用说明书-V1.0
- 文旅演艺活动
- 房地产中介服务操作流程手册
- GB/T 2881-2023工业硅
- 有限合伙份额质押合同完整版(包含质押登记公证手续)
- GB/T 43299-2023机动车玻璃电加热性能试验方法
- 马工程经济法学教学
- 肠道微生态与人体健康
评论
0/150
提交评论