资源描述
第1章绪论
1.1嵌入式设备Internet接入的需求
单片机或微处理器(MCU)已经在家庭和工业的各个领域得到了广泛的应用,以MCU为核心,与一些监测、伺服、指示设备配合实现一定的功能,通称为嵌入式系统。但大多数嵌入式系统还处于单独应用的阶段[17] 。在一些工业的应用中,为了实现多个MCU之间的信息交流,利用CAN、RS-232、RS-485等总线将MCU组网,但是这种网络的有效半径比较有限,关的协议也比较少,并且一般是孤立于Internet以外的。这难以满足复杂、远程(异地)和较大范围的测控任务的需求。近十多年以来,以Internet为代表的网络技术的出现以及它与其它相关技术的相互结合,不仅己开始将智能互联网产品带入现代生活,而且也为远程测控技术带来了前所未有的发展空间和机遇,网络化测控技术以及具备网络功能的各种新型仪器便应运而生。当前,Internet己成为社会重要的基础信息设施之一,是信息流通的重要渠道,如果能够将嵌入式系统连接到Internet上面,则可以方便低廉地将信息传送到世界的任何一个角落。
传统的Internet应用以PC为中心,当代的Internet应用将转向以嵌入式设备为中心。AI(Internet Appliance)概念的流行表明Internet,应用己经进入嵌入式,Internet,时代。据网络专家的预测,将来在Internet上传输的信息中,将有70%的信息来自于小型嵌入式系统。可以预言,嵌入式设备与Internet的结合代表着嵌入式系统和网络技术的真正未来。
1.2嵌入式设备internet接入的现有方案
利用单片机实现嵌入式internet方案的技术难点在于:如何利用单片机自身有限的资源对信息进行TCP/PI协议处理,使之可以在Internet上传输IP数据包。从解决这一技术问题出发,目前出现了几种方案:
1.PCGateway+专用网:采用专用网络(如RS232,RS485,CAN Bus等)
把一小批单片机连接在一起,然后再将该专用网络连接到一个PC上,该PC作为网关将专用网络上的信息转换为TCP/IP协议数据包,然后发到Internet上实现信息共享。该方案可以连接多种单片机,因为把复杂的TCP/IP协议通过PC机来实现,因此对MCU的要求比较低。但存在如下缺点:
a.需要依赖PC机作网关进行协议转换,在多个单片机系统分散的情况下,专用网络布线极为不便。
b.需要在PC机上安装专门的协议转换软件,该软件通常由专门的第三方软件商提供,费用较高。
2.32位MCU十RTOS:采用32位的高档单片机,在TR0S(实时多任务操作系
统)的平台上进行软件开发,在嵌入式系统中实现TCP/IP的协议处理。由于采用
高档单片机,该方案可以完成很多复杂的功能。但这种方案存在如下缺点:
a.高档单片机价格较贵,开发周期较长。
b.需要购买昂贵的RTOS开发软件,对开发人员的开发能力要求较高。
3.TCP/IP专用芯片:由于近年来Internet及通讯产业的迅猛发展,半导体
造商都试图将通讯协议、Internet协议、Ip及许多外设集成在一个SOC(System On Chip)内。应该说这种方法是最直接也是最方便的上网方法,是目前国际上研究的热点,也是将来家电等嵌入式设备上网的一个重要方向。但是这种方法在实现过程中存在着很多问题,无法对系统进行灵活配置,根据应用的需要对系统进行裁减,并且因为芯片的加入而增加系统的成本。
为解决上述向题,可以利用软件来完成协议的处理功能。当然,利用软件来
现硬件功能需要解决处理速度问题。同时,由于单片机采用软件来实现各种协议
处理,便于将来在不改变硬件的情况下,只需改变内置程序即可升级整个嵌入式
系统的功能,这在当今各种协议层出不穷、频繁升级的情况下,SCENIX提出的
“Software in Silicon”的概念具有无比重大的意义。
1.3嵌入式设备的Internet接入底层硬件协议
要实现小型嵌入式设备的internet接入,TCP/PI首先要解决的是底层硬件问题,即协议的物理层。Ethernet具有成熟的技术、低廉的网络产品、丰富的开发工具和八位单片机以太网接入研究与实现韩东起技术支持,当现场总线的发展遇到阻碍时,以太网控制网络技术以其明显的优势得到了迅猛的发展,并逐渐形成了现场总线的新标准一一Ethernet。考虑到国内局域网大部分是以太网,随着交换式网络、宽带网络的发展,基于以太网的嵌入式设备Internet接入应用有着现实意义。
1.4本课题研究的内容
从上面的分析可看出,如何在单片机上实现TCP/IP协议站是小型嵌入式设
internet接入问题的根源。目前,8位单片机直接上网存在的问题是:
1.小型嵌入式设备中的微控制器一般都是简单的控制器,它们的运算速度和
系统资源有限。
2.TCP/IP协议在实时性方面不能满足嵌入式应用的实时要求。因此,目前
型嵌入式设备直接Internet接入在软件上需解决的关键技术是TCP/IP协议的简化和实时性改进。本文探讨了在小型嵌入式设备中实现网络通信的技术难点,对实现嵌入式环境下的网络通信的TCP/IP协议族作了阐述分析,在此基础上,设计了一个简单的网络单片机数据通信系统,它利用51MCU、以太网络接口芯片、相关外围接口电路实现系统的硬件架构;软件上,根据8位单片机本身资源(ROM、RAM和外围接口)有限的特点,精简了TCP/PI协议族,使之能运行在8位单片机,完成客户方的链接请求,实现远程数据采集、传输和控制。
1.5本论文的主要内容
第一章,简要的介绍了本课题研究的价值和研究的主要内容。
第二章,主要讨论了TCP/IP网络体系结构和嵌入式设备接入Internet的特点。
第三章,对TCP/IP协议作了详细分析,从单片机TCP/IP构架入手,详细介绍了网际协议PI、用户数据报协议UDP、internet控制报文协议CIMP、地址解析协议ARP的协议功能和报文格式。
第四章,着重介绍了本系统的硬件构成和各组成元件的特性和功能,并以此
出了单片机和以太网控制芯片DMgO00的接口方案。
第五章,为本系统的软件实现部分。本章提出了系统的总体程序设计思想,详细介绍了各功能模块的软件设计方法,包括DM9000驱动程序设计、ARP模块设计、IP模块设计、ICMP模块设计、UDP模块设计和上位机程序设计。
第六章,对本文的主要内容进行总结,并提出了本系统下一步的改进方法。
1.6本章小结
本章从嵌入式设备internet接入的需求入手,探讨了嵌入式设备Internet接入现有方案的不足,以此提出了其解决方案,并介绍了本文所做的主要研究工作。
第2章嵌入式设备internet接入实现的特点
2.1TCP/PI网络体系结构
2.1.1150/051网络体系结构
在网络发展的早期,由于不同计算机和网络厂商设计了各自的网络体系结构,造成不同网络设备难以互连互通,互连网络的性能难以保证,而且建网费用很高。广大用户强烈要求便宜、灵活、方便的联网方案。面对这种需求,国际标准化组织(150)于1983年提出了开放系统互连(051)网络体系结构框架,即150/051参考模型,如图2.1所示[31]。150/051开放网络体系结构的理论指导作用大于实际应用。目前广泛应用的网络体系结构是TCP/PI,但150/051开放网络体系结构为人们描述了指导进行网络互连的理想框架和蓝图,有待人们去探索和实现。其具体的特点如下[6]。
(l)描述了实现异构系统互连的分层结构。
(2)提供了控制互连系统交互规则的标准框架。
(3)定义了一种抽象结构,而非具体实现的描述。
(4)规定了同等层实体(指能发送和接收信息的软件和设备,如终端、程序、
数据库系统、电子邮件系统等)之间的通信由该层的协议进行管理和实现。
(5)规定每层只完成所定义的功能,修改本层的功能对其他层没有影响。
(6)定义了相邻层之间的接口。
(7)规定直接的数据传输在最底层(物理层)实现。
(8)通信网只涉及第一层到第三层,例如路由器涉及网络层、网桥涉及数据链路层、中继器涉及物理层,网关则涉及到第四到第六层,属于高级协议转换设备。
ISO/OSI网络体系结构具有开放性,所谓“开放性”指任何遵守该参考模型和有关标准的系统之间都能进行互连。
ISO/OSI参考模型只定义了各层的功能,并未定义每层的具体实现协议,其协议由其他标准来定义,这充分体现了该模型的灵活性和远见卓识。
ISO/OSI分层模块化/结构化的网络设计思想,完整而清晰明了,对计算机网络和其他网络的发展具有十分重要的指导意义。
2.1.2 TCP/IP网络体系结构
OSI模型是一种通用的、标准的、理论模型,今天市场上没有一个流行的网络协议完全遵守OSI模型,TCP/PI也不例外,TCP/IP协议族有自己的模型,被称为TCP/IP协议栈,又称DOD模型(Department of defense)【31】,如图2.2所示【7】。
1.应用层
应用层主要向用户提供一组常用的应用程序,比如文件传输访问,电子邮件等。严格说起来,TCP/IP网间网协议只包含了下三层(不含硬件),应用程序不能算TCP/IP协议的一部分。就是上面提到的常用应用程序,TCP/IP制定了相应的协议标准,所以也把它们作为TCP/IP的内容。事实上,用户完全可以在网间网上(即传输层上)建立自己的专用应用程序,这些专用应用程序用到TCP/IP,但不属于TCP/IP。
2.传输层
传输层提供应用程序之间的(即端到端)的通信,功能包括:格式化信息流,
提供可靠传输,接收端一定要进行接收确认,否则要进行重传。传输层还要解决
不同应用程序的识别问题,因为常常有多个程序同时访问网间网。为区别各应用
程序,传输层在每一分组中增加识别信源、信宿应用程序的信息。另外传输层每
一个分组均附带校验和,接收机以此校验收到分组的正确性。
3.网际层(IP)
网际层负责相邻计算机之间的通信,其功能包括三方面:一、处理来自传输层的分组发送请求,收到请求后,将分组装入Pl数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。二、处理输入数据报。首先检查其合法性,然后进行寻径,假如该数据报己到达信宿地,则去掉报头,将剩下的部分(传输层分组)交给适当的传输协议;假如数据报尚未到达信宿,则转发该数据报。三、处理CIMP报文,处理路径、流控制、拥塞等问题。
4.网络接口层
网络接口层是TCP/IP协议的最底层,负责接收PI数据报,并通过网络发送之,或从网络上接收数据帧,抽出Pl数据报,交给Pl层。网络接口层定义了Internet与各种物理网络之间的网络接口。网络接口有两种类型,第一种是设备驱动程序(如局域网的网络接口),第二种是含有自身数据链路协议的复杂子系统。
2.2总线式以太网及802.3标准
2.21总线式以太网技术
以太网是基于总线型的广播式网络,在已有的局域网标准中,它是最成功的局域网技术,也是当前应用最广泛的一种局域网。它是Xerox公司的PARC在20世纪70年代早期开发的。以太网传输介质从同轴电缆(粗缆与细缆)、双绞线到光纤,现在常用的双绞线以太网工作在10Mbps、l00Mbps、1000Mbps,它用8根线(4对双绞线)把每台以太网设备连到一个以太网集线器(hub)或交换机上,集线器是一个电子设备,它模拟以太网电缆上的信号,集线器和以太网设备之间的连接长度须小于100米川。现在的以太网已发展到了吉比特以太网,速度越来越快,但从技术上讲,以太网是基于CSMA/CD(Carrier sense Multiple Access with collision Detect)机制的,CSMA/CD是具有冲突检测(CD)功能的载波监听多路访问(CSMA)介质访问控制方法,它被广泛地应用于局域网的MAC子层,是EIEE80.23的核心协议,也是著名的以太网所采用的协议。CSMA/CD主要是为解决如何争用一个广播型的共享传输信道而设计的,它能够决定该谁占用信道。当一个站点开始传送一个分组时,信号并没有同时到达网络各处,这样就有可能有两个收发器同时探测到网络空闲,并同时开始发送。当这两个电信号交汇时,它们混杂在一起,每个信号都失去了意义,这种事件称为冲突(collision)。在以太网的基带传输中,以太网以一种比较巧妙的方式处理冲突。每个收发器在发送时监视电缆,看是否有外来信号干扰其发送。从技术说,这种监视称为冲突检测CD,.使以太网成为一个CSMA/CD网。当检测到冲突时,主机接口放弃本次发送,等待活动停止,并再次试发送[3]。
CSMA/CD的工作流程如下12]:
(1)准备发送站监听信道。
(2)信道空闲进入第(4)步,开始发送数据,并监听冲突信号。
(3)信道忙,就返回到第(1)步。
(4)传输数据并监听信道,如果无冲突就完成传输,检测到冲突则进入第(5)步。
(5)发送阻塞信号,然后按二进制指数退避策略等待,再返回第(l)步,准备重新发送。
2.2.2以太网的物理传输帧封装格式
各字段解释如下:
同步位——用于收发双方的时钟同步,由网卡控制器自动添加。
分隔位——表示下面跟着的是真正的数据,由网卡控制器自动添加。
目的地址——指接收端的物理地址,48位。
源地址——指发送端的物理地址,48位。
类型——表明该帧的数据是什么类型的数据,不同协议的类型不同。
数据段——指发送的数据,不能大于1500字节。
填充位——指如果以太网传输的数据包小于46字节要补0。
FCS——校验位,4个字节,由芯片自动生成。
所有数据位的传输都由低位开始,以太网的冲突退避算法由硬件自动执行。
2.23以太网的数据传送过程
当一个以太网站点的信息帧被发送到共享的信道或介质时。所有与信道相连的以太网接口都读入该帧,并且查看该帧的第一个48比特地址字段,其中包含有目的地址。各个接口把帧的目的地址与自己的48比特地址进行比较。如果该地址与帧中的目的地址相同,则该以太网站点将继续读入整个帧,并将它送给计算机正在运行的上层网络软件。上层网络软件读入帧的类型字段,判断这个信息帧是入ARP包还是IP包,然后再交给不同的协议栈处理。当其他的网络接口发现目的地址与它们的地址不同对,就会停止读入信息帧。
2.3嵌入式设备Internet接入实现的特点
嵌入式设备系统中的微处理器,不管速度,还是RAM、ROM的资源,都远没
有PC机强大,而嵌入式系统接入Internet需要解决的主要问题是:要在8位单片机上实现复杂的TCP/IP协议族,解决数据的封装、拆包、编码、解码及数据发送等。另外,微处理器除了完成这些任务外,还要控制一些设备,来完成特定的测量和控制的任务,再就是,嵌入式系统的成本不能太高。而完整的TCP/IP协议族要消耗大量的系统资源,并且在嵌入式系统中要实现的是比较单一的网络传输和数据采集任务,所以没必要嵌入完整的TCP/IP协议族,只须把TCP/IP最精简的内核和用得到的协议嵌在里面就行了。例如,系统中如果没用到HITP协议而只用到了下层的TCP和UDP协议,可以去掉HTTP协议,而只保留下层协议,这样把不必要的协议去掉可以大大简化内核,从而节省了系统资源,降低了成本。
另外,为了减少MCU的负担,底层最好选用现成的网络接口芯片,来完成物
理帧的形成、接收、校验、编码、解码等任务。这样,MCU可以把主要的时间用
于数据采集和过程控制上,减少开销,另外用现成的接口芯片还可以缩短开发时
间、降低开发成本。
2.4单片机与计算机TCP/IP协议实现的不同
单片机与计算机的差别很大,两者对TCP/PI的实现有很大的不同。在计算机里编写TCP/PI程序,可以不考虑代码大小、代码速度,但在单片机上这些都是要考虑的问题。综合来说,单片机实现与计算机实现TCP/PI有如下区别:
(1)操作系统。不论是Windows、Unix、Linux,它们都有一个多任务操作
系统,这使得代码编写简单化,而在单片机上,因为资源的原因,使用多任务操
作系统则较为困难,这使得代码结构变为顺序执行+硬件中断的方式,而在计算机里却可以并发地执行。对程序执行结构,单片机要考虑更多。
(2)内存分配。windows或UNIX的内存分配是动态的,根据需要随时分配,
随时撤消。但是在单片机却不能够这样做。一个最大的以太网数据帧有1500多个字节,分配一帧的缓冲区就要1.5K字节,而单片机的RAM要被各个协议所用,而不仅仅是存放收到的数据包。所以,需要分配RAM的一个固定空间来存放收到的八位单片机以太网接入研究与实现韩东起以太网数据包。收到一包就处理一包。在单片机里,存放收到的以太网数据包的RAM是固定的,而不是动态分配的。
(3)指针。在单片机里指针有几种:a.指向外部RAM的指针,例uchar xdata *p使用指令move@dptr占二个字节;b.指向程序ROM的指针,例uchar code *p使用指令move占二个字节;e指向内部的RAM的指针,例uchar data *p使用指令mov@ri占一个字节;d.指向外部RAM的分页指针,例uchar xdata *p使用指令mov@ri占一个字节;e一般指针,可以指向以上的任何一种,占三个字节。而在计算机里,所有程序都必须先放在RAM里才能运行,所以它的指针只有一种情况,就是指向RAM。单片机的结构和计算机的结构有很大差别,指针类型很多,对指针运算的速度也不一样,由于第5种指针 “一般指针”运算很慢,同时又需要占用很多程序空间,所以,在单片机里一般要少用指针,或使用特定类型的指针[18]。
(4)参数传递。在计算机实现的TCP/IP源代码中,一般有很多的参数传递,而在单片机里允许传递的参数是有限的(因为受到内部RAM的限制),同时参数传
递的过程要浪费程序代码空间,也降低单片机执行速度。所以在单片机的实现里,
一般不能做太多的参数传递,而多使用公共的全局变量来实现调用的过程。这种
情况下,计算机的源程序是相对独立的,受其它函数或变量的影响很小,而单片
机里各程序相互依赖程度要大。因为在单片机里往往共享某一数据、某一变量【18】。
(5)协议支持。在计算机里可支持比较完整的TCP/PI协议,但在单片机里无法做到,这是因为单片机根本没有足够的代码空间来支持这些协议。一般在单片机里实现与需要有关的部分,而不使用的协议则一般不嵌入进去。一般只能在单片机中实现:ARP,IP,ICMP,TCP DP这些协议,而更高层的协议,如:HTTP、
SMTP、TFP一般是不需要嵌入的。单片机应用的TCP/PI协议大多是为了完成数据采集和数据传输,而不是网页浏览、文件传输这些功能。就对某一协议而言,例如ARP协议,UNIX系统支持以太网、令牌环等网络的ARP,在该系统中单片机里只支持以太网,也就是说,对于某一协议,也有可能要作简化。IP包最大可以为65K,可以分段传输,而在单片机里根本无法容纳如此大的数据包,因此一般是不支持分段的。单片机一般采用发送小数据包的方式,以避免分段。
(6)使用UDP还是TCP。相对于UDP,TCP的可靠性是以许多复杂措施及由此
而增加的开销为代价换来的。UDP本身无连接能力和不可靠,但对传输率却无阻
碍,适于数据量比较小的应用;而TCP提供可靠的数据流,但处理的开销较大,
使传输率有所降低。UDP不可靠不可简单化以致有所误解,真正使用UDP时,经
常是要在应用层增加提高UDP可靠性的代码。嵌入式的设计者经常会面临许多具
体的特殊要求,如代码不能长、或传输率是关键、或可靠性最重要等等,需要很
好地加以分析和折衷。考虑到单片机运行速度比较慢,数据量又比较小,用UDP
作为单片机应用的传输控制层协议,只要在应用层增加相应的可靠性代码,是能
满足测控应用要求的。
(7)硬件接口。在计算机里,对网卡的驱动相对简单,而在单片机里需要处理的事情更多。比如缓冲区溢出,在计算机里的一些程序根本没有处理溢出的代码。因为计算机执行快,网卡缓冲区的溢出几乎是不会发生的。计算机往往采用即插即播即用方式来驱动网卡,而单片机却不能这样做,因为即插即用要很多代码来实现,一般使用跳线方式。计算机里驱动NE2000的网卡,一般都是用16位DMA的方式,而在8位单片机里却只能用8位DMA方式。
2.5本章小结
本章介绍了TCP/PI的网络体系结构,并着重讲述了嵌入式设备接入Internet的特点,同时也对以太网80.23标准作了简要说明。
第3章TCP/IP协议分析
3.1TCP/IP协议的封装和分用
TCP/IP协议采用分层结构,实现也采用分层实现的方法。在实现的过程中首先要了解封装和分用的概念。
3.1.1封装
当应用程序用UDP传送数据时,数据被送入协议栈中,然后通过每一层直到
被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),这个过程称作封装。如图3.1所示2sI]。UDP传给的数据单元称作UDP报文段或简称UDP段。IP传给网络接口层的数据单元称作PI数据报。通过以太网传输的比特流也称作帧(Frame)。
3.1.2分用
当目的主机收到一个以太网数据帧时,数据就开始从协议栈底层向上升,同时去掉各层协议加上的报文首部。以太网帧要检查首部中的帧类型字段, IP要检查首部中的协议值字段,TCP和UDP要检查首部中的端口号字段来确定数据属于哪一层,这个过程称作分用。如图3.2所示[25]:
3.2TCP/PI协议分析
3.21单片机TCP/IP构架
如前所述,TCP/PI协议是一个协议族,有很多种协议。图3.3给出了本文研究的协议和各协议之间的关系[33][34]。
TCP和UDP是两种最为著名的传输层协议,二者都使用IP作为网络层协议。
TCP使用不可靠的PI服务,但它却提供一种可靠的传输层服务。UDP为应用程序
发送和接收数据报。与TCP不同的是,UDP是不可靠的,它不能保证数据报能安
全无误的到达目的地。PI是网络层上的主要协议,同时被TCP和UDP使用。TCP
和UDP的每组数据都通过端系统和每个中间路由器中的PI层在互联网中进行传
输。CIMP是PI协议的附属协议,IP层用它来与其他主机或路由器交换错误报文
和其他重要信息。ARP协议是以太网用来转换PI层和网络接口层使用的地址。
3.22网际协议IP
1.IP的结构
IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP
数据都以IP数据报格式传输。IP的功能由IP头结构中的数据定义。
IP数据报的格式如表3-1所示[31][41][47]。普通的IP首部长为20个字节,除
非含有选项字段。
字段解释如下:
版本——IP头中前4位标识了IP的操作版本,目前的协议版本号是4,因此IP时也称作IPv4。
首部长度——指的是首部占32bit字的数目,包括任何选项。由于它是一个4比特字段,因此首部最长为60个字节。普通IP数据报(没有任何选择项)字段的是5。
服务类型——包括一系列标志,这些标志能保证优先级、延时、吞吐量以及
报文数的可靠性参数。本文为一般服务,所有4bit均为0。
总长度字段——指整个IP数据报的长度,以字节为单位。
标志字段和片偏移一一标识字段唯一地标识主机发送的每一份数据报。通常
发送一份报文它的值就会加1。标志字段和片偏移在分片和重组的时候会用到,
于本系统中对数据不分片、无偏移,故设为0X4000。
生存时间(竹TTL)——生存时间字段设置了数据报可以经过的最多路由器数
它指定了数据报的生存时间。TTL的初始值由源主机设置(通常为32或64),一旦经过一个处理它的路由器,它的值就减去1。当该字段的值为0时,数据报就被弃,并发送CIMP报文通知源主机。
协议字段——根据它可以识别是哪个协议向PI传送数据,如UDP、TCP
ICMP。
首部校验和字段——是根据PI首部计算的校验和码。它不对首部后面的数据行计算。CIMP、IGMP、UDP和TCP在它们各自的首部中均含有同时覆盖首部和
数据的校验和码。
2.IP校验和的计算1321
为了计算一份数据报的IP校验和,首先把校验和字段置为0。然后,对首部中每个16bit进行二进制反码求和(整个首部看成是由一串16bit的字组成),结果存在校验和字段中。当收到一份Pl数据报后,同样对首部中每个16bit进行二进制反码的求和。由于接收方在计算过程中包含了发送方存在首部中的校验和,因此,果首部在传输过程中没有发生任何差错,那么接收方计算的结果应该为全1。如果结果不是全1(即校验和错误),那么PI就丢弃收到的数据报。但是不生成差错报文,由上层去发现丢失的数据报并进行重传。CIMP、IGMP、UDP和TCP都采用相同的校验和算法。
3.IP的功能
IP报文头中含有使一些重要网络功能成为可能的必要信息,包括:
(1)寻址和路由
(2)分段和重组
(3)传输过程中数据损坏检测和更正。
尽管有这些功能,但PI毕竟只是一个网际协议。为了使其发挥作用,必须和
传输协议以及链路层协议一起工作。因为它不提供检测数据报是否到达目的地机
制,并且不检测是否有数据报被破坏和丢失。
3.2.3用户数据报协议UDP
1.UDP的结构
UDP(User Datagram Protocol)是一个简单的面向数据报的传输层协议,UDP提
供了一种基本的、低延时的传输。
字段解释如下:
UDP源端口号--16位的源端口号是源计算机上的连接号。源端口号和源IP地址作为报文的返回地址之用。
UDP目的端口号--16位的目的端口号是目的计算机上的连接号。目的端口号用于把到达目的地的报文转发到正确的应用。
UDP协议使用端口号为不同的应用保留其各自的数据传输通道。UDP和TCP
协议正是采用这一机制实现对同一时刻内多项应用同时发送和接收数据的支持。
数据发送一方将UDP数据报通过源端口发送出去,而数据接收方则通过目的端口
接收数据。
UDP长度--UDP长度字段指的是UDP首部和UDP数据的字节长度。该字
段的最小值为8字节。Pl数据报长度指的是数据报全长,因此UDP数据报长度是全长减去IP首部的长度。
UDP校验和一一校验和是一个16位的错误检查域,基于报文的内容计算得到。UDP校验和覆盖UDP首部和UDP数据(PI首部的校验和只覆盖IP的首部,并不覆盖PI数据报中的任何数据)。包括3部分:伪首部、UDP首部和应用层数据,
位于UDP报头前12个字节的是伪首部。
2.UDP校验和的计算[32]
UDP校验和的基本计算方法与PI首部校验和计算方法相类似(16位字的二进
制反码和),但它们之间存在不同的地方。首先,UDP数据报的长度可以为奇数
字节,但是校验和算法是把若干个16位字相加。解决方法是必要时在最后添充字节O。
其次,UDP数据报和TCP报都包含一个12字节的伪首部,它是为了计算
IP首部一些字段,这些字段包括PI头中的32位源IP地址和32为目的IP地址。
3.UDP的特点
UDP被设计成一个有效的和最小的传输协议。它只包括用于转发数据报至合
适应用(端口号)的足够信息,并且执行一定的错误检查。UDP使用尽力方式传
送数据报,由于某种原因传输失败,数据报被丢弃并且不试图重传。
UDP经常被认为是不可靠的,因为它不具有任何TCP的可靠性机制。但是UDP
具有TCP所望尘莫及的速度优势。虽然TCP协议中植入了各种安全保障功能,但
是在实际执行的过程中会占用大量的系统开销,无疑使速度受到严重的影响。反
观UDP由于排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完
成,极大降低了执行时间,使速度得到了保证。UDP最适合于小的发送(也就是
单独的报文)。因此,在嵌入式系统的应用中,UDP协议应用应最为广泛。
3.2.4Internet控制报文协议ICMP
ICMP(Internet control Message Protocol)报文分为两大类,差错报告报文和查询报文。经常被认为是Pl层的一个组成部分,它传递差错报文以及其他需要注意的信息。ICMP报文通常被IP层或更高层协议(UDP或TCP)使用。ICMP报文是在IP数据报内部被传输的。如图3.4所示【42】。
ICMP报文的格式如表3—3所示【31】【42】。所有报文的前4个字节都是一样的,但是剩下的其他字节则互不相同。类型字段可以有15个不同的值,以描述特定类型的ICMP报文。
在本系统中,主要是对PING命令的响应。PING程序的目的是为了测试另一台主机是否可达。该程序发送一份CIMP回显请求报文给主机,并等待返回CIMP回显应答。使用PING命令的ICMP报文格式如表3一4所示。
其中,类型8代表发送PING,0代表响应PING。代码0为PING命令。标志和序号是为了使响应和发送的数据相对应。可选数据是任意的,但响应和发送的数据是相同的。校验和字段覆盖整个CIMP报文。使用的算法与IP首部校验和算法相同。
3.25地址解析协议ARP
当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48bit的以太网地址来确定目的接口的。设备驱动程序从不检查IP数据报中的目的IP地址。地址解析为这两种不同的地址形式提供映射:32bit的PI地址和数据链路层使用的任何类型的地址【33】。
ARP发送一份称作ARP请求的以太网数据帧给以太网上的每个主机。这个过程称作广播,ARP请求数据帧中包含目的主机的PI地址,其意思是“如果你是这个IP地址的拥有者,请回答你的硬件地址”,而此时发送的目标物理地址是FFFFFFFFFFFF。目的主机的ARP层收到这份广播报文后,识别出这是发送端在寻问它的PI地址,于是发送一个ARP应答。这个ARP应答包含IP地址及对应的硬件地址【43】。
在以太网上解析PI地址时,ARP请求和应答分组的格式如图3.5所示【31】【36】。
以太网报头中的前两个字段是以太网的源地址和目的地址。目的地址为全1的特殊地址是广播地址。电缆上的所有以太网接口都要接收广播的数据帧。
两个字节长的以太网帧类型表示后面的数据类型。对于ARP请求或应答来说,该字段的值为0X0806。
硬件类型字段表示硬件地址的类型。它的值为1即表示以太网地址。
协议类型字段表示要映射的协议地址类型,值为OXO80O即表示PI地址。
接下来的两个1字节的字段,硬件地址长度和协议地址长度分别指出硬件地址和协议地址的长度,以字节为单位。对于以太网上PI地址的ARP请求或应答来说,它们的值分别为6和4。
两个字节的动作字段指出四种操作类型,它们是ARP请求(值为)l、ARP应
答(值为2)、RARP请求(值为3)和RARP应答(值为4)。这个字段是必需的,因为
ARP请求和ARP应答的帧类型字段值是相同的。
接下来的四个字段是发送端的以太网地址、发送端的PI地址、目的端的以太网地址和目的端的Pl地址。
对于一个ARP请求来说,除目的端硬件地址外的所有其它字段都要填充值。
当系统收到一份目的端为本机的ARP请求报文后,它就把硬件地址填进去,然后
用两个目的端地址分别替换两个发送端地址,并把操作字段置为2,最后把它发
送回去。
3.3本章小结
本章主要分析了TCP/PI协议的结构,介绍了单片机TCP/PI的协议构架,并逐层介绍了其主要协议,其中包括协议的原理及各协议间的相互作用。
第4章系统硬件构成
4.1系统硬件组成
为使本系统硬件接口简单化、降低成本、适当缩短开发周期,系统中应尽可能减少外围器件。系统的CPU选用单片机AT89C52,单片机AT89C52有SK字节的片内ROM和256字节的片内RAM。片外RAM使用62256,这种RAM有32K字节的使用空间。这两种芯片的选用,主要是为精简TCP/PI协议栈的嵌入提供条件,同时保证拥有较大的数据处理空间。
网卡芯片DM900O是主要的工作部件,完成对网络数据的发送和接收。滤波
变压器PH163112,用来对网络上的脉冲进行转换和滤波。
网络连接采用IOBASE—T电缆连接至HUB。
图4.1为本系统的硬件框图。
4.2网络连接
网络单片机通过网卡芯片DM90OO接入以太网,下面主要阐述网卡芯片
DM9000的工作原理,介绍单片机对DM9000的控制原理及初始化步骤,并提供
DM9000和单片机的接口方案。
4.2.1网卡芯片DM9000
1.DM9000简介
DM9000芯片是台湾Davicom公司生产的一款以太网控制芯片,在网络中它可
自动获得同设定MAC地址一致的PI包,完成PI包的收发,它采用LQFPl00管
脚封装,内部集成了16K的SRAM,提供8位和16位两种接口,在本课题中使
用8位模式,管脚封装如图4.2所示【40】。
DM9000的技术特性如下:
()l封装采用LQFP100管脚封装,所占用之面积和高度小。
(2)使用电压为.33v,最大耗用电流为100mA,十分省电。
(3)MEC连接模式有ISAsbit/IsA16bit/upsbit/up16bit/up32bit/68K模
式,并且支持3.3V和SV的1/0控制。可方便和不同电压和界面的MCU连接。
4)内置10/10OMPHY,支持多种连接模式:电端口支持10MHALF/10MFuLL
/100MHALF/100MFULL/AUTO(N-WAY);另提供光端口100M HALF/200M
FULL。
(5)支持EEPROM(93C46),可供存放系统所需信息。
2.DM9000的寄存器
DM9000的寄存器很多,
这里只列出本系统相关的寄存器,如表4—1所示【40】。
3.DM9000读取、写入寄存器方式
DM9000控制读取和写入寄存器方式,十分容易。DM90OO有数据和地址两个端口。而这两个端口由CMD管脚控制,若CMD接高电位时为控制数据端口,CMD接低电平时为控制地址端口。
要读写任何一个寄存器时,方式如下:
(1)将AEN,SA4~9使DMg000使能。
(2)设置CMD管脚为低电位。
(3)将要读写的寄存器的地址填入地址端口(IOW#)。
(4)设置CMD管脚为高电位。
5)将要读写的寄存器的数据填入或读出数据端口(IOW#,IOR#)。
4.DM9000内存工作原理
DM9000共有16KByte(000Oh一3FFFh)内存,而读写内存由MWCMD、MRCMD这二个寄存器来控制。而MWRL,MWRH寄存器提供现在写入内存的位置,MRRL,MRRH寄存器提供现在读取内存的位置。而内存每次移动依工作模式,每次移动一个Byte(8bit)或二个Byte(16bit)或四个Byte(32bit)。
5.DM9000初始化步骤
(l)对DM9000进行软件重置。
(2)清除中断设定,以免因中断导致DM9000初始化动作不正常。
(3)设定DM900O相关接口(内部PHY,外部MII,Reverse—MII)。
(4)设定物理地址位置。
(5)设定Multicast设置。
(6)其它相关设置。
(7)开启接收资料功能。
6.封包传送工作原理
内存中默认值有3KByt。(O000h~OBFFh)提供给传送功能使用。而传送一个封包的流程如下:
()l将要传送封包的长度,填入到TXPLL,TXPLH寄存器。
(2)将要传送封包的数据由MWCMD寄存器填入内存中。
(3)由TCR寄存器使DM9000送出封包数据。
(4)若内存的写入位置超过OBFFh时,自动将下一个位置回复到0000h。
7
展开阅读全文