八位单片机以太网接入研究与实现

上传人:哟*** 文档编号:232175889 上传时间:2023-09-13 格式:DOC 页数:43 大小:2.53MB
收藏 版权申诉 举报 下载
八位单片机以太网接入研究与实现_第1页
第1页 / 共43页
八位单片机以太网接入研究与实现_第2页
第2页 / 共43页
八位单片机以太网接入研究与实现_第3页
第3页 / 共43页
资源描述:

《八位单片机以太网接入研究与实现》由会员分享,可在线阅读,更多相关《八位单片机以太网接入研究与实现(43页珍藏版)》请在装配图网上搜索。

1、第1章绪论1.1嵌入式设备Internet接入的需求单片机或微处理器(MCU)已经在家庭和工业的各个领域得到了广泛的应用,以MCU为核心,与一些监测、伺服、指示设备配合实现一定的功能,通称为嵌入式系统。但大多数嵌入式系统还处于单独应用的阶段17 。在一些工业的应用中,为了实现多个MCU之间的信息交流,利用CAN、RS-232、RS-485等总线将MCU组网,但是这种网络的有效半径比较有限,关的协议也比较少,并且一般是孤立于Internet以外的。这难以满足复杂、远程(异地)和较大范围的测控任务的需求。近十多年以来,以Internet为代表的网络技术的出现以及它与其它相关技术的相互结合,不仅己开

2、始将智能互联网产品带入现代生活,而且也为远程测控技术带来了前所未有的发展空间和机遇,网络化测控技术以及具备网络功能的各种新型仪器便应运而生。当前,Internet己成为社会重要的基础信息设施之一,是信息流通的重要渠道,如果能够将嵌入式系统连接到Internet上面,则可以方便低廉地将信息传送到世界的任何一个角落。传统的Internet应用以PC为中心,当代的Internet应用将转向以嵌入式设备为中心。AI(Internet Appliance)概念的流行表明Internet,应用己经进入嵌入式,Internet,时代。据网络专家的预测,将来在Internet上传输的信息中,将有70%的信息来

3、自于小型嵌入式系统。可以预言,嵌入式设备与Internet的结合代表着嵌入式系统和网络技术的真正未来。1.2嵌入式设备internet接入的现有方案利用单片机实现嵌入式internet方案的技术难点在于:如何利用单片机自身有限的资源对信息进行TCP/PI协议处理,使之可以在Internet上传输IP数据包。从解决这一技术问题出发,目前出现了几种方案:1.PCGateway+专用网:采用专用网络(如RS232,RS485,CAN Bus等)把一小批单片机连接在一起,然后再将该专用网络连接到一个PC上,该PC作为网关将专用网络上的信息转换为TCP/IP协议数据包,然后发到Internet上实现信息

4、共享。该方案可以连接多种单片机,因为把复杂的TCP/IP协议通过PC机来实现,因此对MCU的要求比较低。但存在如下缺点:a.需要依赖PC机作网关进行协议转换,在多个单片机系统分散的情况下,专用网络布线极为不便。b.需要在PC机上安装专门的协议转换软件,该软件通常由专门的第三方软件商提供,费用较高。2.32位MCU十RTOS:采用32位的高档单片机,在TR0S(实时多任务操作系统)的平台上进行软件开发,在嵌入式系统中实现TCP/IP的协议处理。由于采用高档单片机,该方案可以完成很多复杂的功能。但这种方案存在如下缺点:a.高档单片机价格较贵,开发周期较长。b.需要购买昂贵的RTOS开发软件,对开发

5、人员的开发能力要求较高。3.TCP/IP专用芯片:由于近年来Internet及通讯产业的迅猛发展,半导体造商都试图将通讯协议、Internet协议、Ip及许多外设集成在一个SOC(System On Chip)内。应该说这种方法是最直接也是最方便的上网方法,是目前国际上研究的热点,也是将来家电等嵌入式设备上网的一个重要方向。但是这种方法在实现过程中存在着很多问题,无法对系统进行灵活配置,根据应用的需要对系统进行裁减,并且因为芯片的加入而增加系统的成本。为解决上述向题,可以利用软件来完成协议的处理功能。当然,利用软件来现硬件功能需要解决处理速度问题。同时,由于单片机采用软件来实现各种协议处理,便

6、于将来在不改变硬件的情况下,只需改变内置程序即可升级整个嵌入式系统的功能,这在当今各种协议层出不穷、频繁升级的情况下,SCENIX提出的“Software in Silicon”的概念具有无比重大的意义。1.3嵌入式设备的Internet接入底层硬件协议要实现小型嵌入式设备的internet接入,TCP/PI首先要解决的是底层硬件问题,即协议的物理层。Ethernet具有成熟的技术、低廉的网络产品、丰富的开发工具和八位单片机以太网接入研究与实现韩东起技术支持,当现场总线的发展遇到阻碍时,以太网控制网络技术以其明显的优势得到了迅猛的发展,并逐渐形成了现场总线的新标准一一Ethernet。考虑到国

7、内局域网大部分是以太网,随着交换式网络、宽带网络的发展,基于以太网的嵌入式设备Internet接入应用有着现实意义。1.4本课题研究的内容从上面的分析可看出,如何在单片机上实现TCP/IP协议站是小型嵌入式设internet接入问题的根源。目前,8位单片机直接上网存在的问题是:1.小型嵌入式设备中的微控制器一般都是简单的控制器,它们的运算速度和系统资源有限。2.TCP/IP协议在实时性方面不能满足嵌入式应用的实时要求。因此,目前型嵌入式设备直接Internet接入在软件上需解决的关键技术是TCP/IP协议的简化和实时性改进。本文探讨了在小型嵌入式设备中实现网络通信的技术难点,对实现嵌入式环境下

8、的网络通信的TCP/IP协议族作了阐述分析,在此基础上,设计了一个简单的网络单片机数据通信系统,它利用51MCU、以太网络接口芯片、相关外围接口电路实现系统的硬件架构;软件上,根据8位单片机本身资源(ROM、RAM和外围接口)有限的特点,精简了TCP/PI协议族,使之能运行在8位单片机,完成客户方的链接请求,实现远程数据采集、传输和控制。1.5本论文的主要内容第一章,简要的介绍了本课题研究的价值和研究的主要内容。第二章,主要讨论了TCP/IP网络体系结构和嵌入式设备接入Internet的特点。第三章,对TCP/IP协议作了详细分析,从单片机TCP/IP构架入手,详细介绍了网际协议PI、用户数据

9、报协议UDP、internet控制报文协议CIMP、地址解析协议ARP的协议功能和报文格式。第四章,着重介绍了本系统的硬件构成和各组成元件的特性和功能,并以此出了单片机和以太网控制芯片DMgO00的接口方案。第五章,为本系统的软件实现部分。本章提出了系统的总体程序设计思想,详细介绍了各功能模块的软件设计方法,包括DM9000驱动程序设计、ARP模块设计、IP模块设计、ICMP模块设计、UDP模块设计和上位机程序设计。第六章,对本文的主要内容进行总结,并提出了本系统下一步的改进方法。1.6本章小结本章从嵌入式设备internet接入的需求入手,探讨了嵌入式设备Internet接入现有方案的不足,

10、以此提出了其解决方案,并介绍了本文所做的主要研究工作。第2章嵌入式设备internet接入实现的特点2.1TCP/PI网络体系结构2.1.1150/051网络体系结构在网络发展的早期,由于不同计算机和网络厂商设计了各自的网络体系结构,造成不同网络设备难以互连互通,互连网络的性能难以保证,而且建网费用很高。广大用户强烈要求便宜、灵活、方便的联网方案。面对这种需求,国际标准化组织(150)于1983年提出了开放系统互连(051)网络体系结构框架,即150/051参考模型,如图2.1所示31。150/051开放网络体系结构的理论指导作用大于实际应用。目前广泛应用的网络体系结构是TCP/PI,但150

11、/051开放网络体系结构为人们描述了指导进行网络互连的理想框架和蓝图,有待人们去探索和实现。其具体的特点如下6。(l)描述了实现异构系统互连的分层结构。(2)提供了控制互连系统交互规则的标准框架。(3)定义了一种抽象结构,而非具体实现的描述。(4)规定了同等层实体(指能发送和接收信息的软件和设备,如终端、程序、数据库系统、电子邮件系统等)之间的通信由该层的协议进行管理和实现。(5)规定每层只完成所定义的功能,修改本层的功能对其他层没有影响。(6)定义了相邻层之间的接口。(7)规定直接的数据传输在最底层(物理层)实现。(8)通信网只涉及第一层到第三层,例如路由器涉及网络层、网桥涉及数据链路层、中

12、继器涉及物理层,网关则涉及到第四到第六层,属于高级协议转换设备。ISO/OSI网络体系结构具有开放性,所谓“开放性”指任何遵守该参考模型和有关标准的系统之间都能进行互连。ISO/OSI参考模型只定义了各层的功能,并未定义每层的具体实现协议,其协议由其他标准来定义,这充分体现了该模型的灵活性和远见卓识。ISO/OSI分层模块化/结构化的网络设计思想,完整而清晰明了,对计算机网络和其他网络的发展具有十分重要的指导意义。2.1.2 TCP/IP网络体系结构OSI模型是一种通用的、标准的、理论模型,今天市场上没有一个流行的网络协议完全遵守OSI模型,TCP/PI也不例外,TCP/IP协议族有自己的模型

13、,被称为TCP/IP协议栈,又称DOD模型(Department of defense)【31】,如图2.2所示【7】。1.应用层应用层主要向用户提供一组常用的应用程序,比如文件传输访问,电子邮件等。严格说起来,TCP/IP网间网协议只包含了下三层(不含硬件),应用程序不能算TCP/IP协议的一部分。就是上面提到的常用应用程序,TCP/IP制定了相应的协议标准,所以也把它们作为TCP/IP的内容。事实上,用户完全可以在网间网上(即传输层上)建立自己的专用应用程序,这些专用应用程序用到TCP/IP,但不属于TCP/IP。2.传输层传输层提供应用程序之间的(即端到端)的通信,功能包括:格式化信息流

14、,提供可靠传输,接收端一定要进行接收确认,否则要进行重传。传输层还要解决不同应用程序的识别问题,因为常常有多个程序同时访问网间网。为区别各应用程序,传输层在每一分组中增加识别信源、信宿应用程序的信息。另外传输层每一个分组均附带校验和,接收机以此校验收到分组的正确性。3.网际层(IP)网际层负责相邻计算机之间的通信,其功能包括三方面:一、处理来自传输层的分组发送请求,收到请求后,将分组装入Pl数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。二、处理输入数据报。首先检查其合法性,然后进行寻径,假如该数据报己到达信宿地,则去掉报头,将剩下的部分(传输层分组)交给适当的传输协议

15、;假如数据报尚未到达信宿,则转发该数据报。三、处理CIMP报文,处理路径、流控制、拥塞等问题。4.网络接口层网络接口层是TCP/IP协议的最底层,负责接收PI数据报,并通过网络发送之,或从网络上接收数据帧,抽出Pl数据报,交给Pl层。网络接口层定义了Internet与各种物理网络之间的网络接口。网络接口有两种类型,第一种是设备驱动程序(如局域网的网络接口),第二种是含有自身数据链路协议的复杂子系统。2.2总线式以太网及802.3标准2.21总线式以太网技术以太网是基于总线型的广播式网络,在已有的局域网标准中,它是最成功的局域网技术,也是当前应用最广泛的一种局域网。它是Xerox公司的PARC在

16、20世纪70年代早期开发的。以太网传输介质从同轴电缆(粗缆与细缆)、双绞线到光纤,现在常用的双绞线以太网工作在10Mbps、l00Mbps、1000Mbps,它用8根线(4对双绞线)把每台以太网设备连到一个以太网集线器(hub)或交换机上,集线器是一个电子设备,它模拟以太网电缆上的信号,集线器和以太网设备之间的连接长度须小于100米川。现在的以太网已发展到了吉比特以太网,速度越来越快,但从技术上讲,以太网是基于CSMA/CD(Carrier sense Multiple Access with collision Detect)机制的,CSMA/CD是具有冲突检测(CD)功能的载波监听多路访问

17、(CSMA)介质访问控制方法,它被广泛地应用于局域网的MAC子层,是EIEE80.23的核心协议,也是著名的以太网所采用的协议。CSMA/CD主要是为解决如何争用一个广播型的共享传输信道而设计的,它能够决定该谁占用信道。当一个站点开始传送一个分组时,信号并没有同时到达网络各处,这样就有可能有两个收发器同时探测到网络空闲,并同时开始发送。当这两个电信号交汇时,它们混杂在一起,每个信号都失去了意义,这种事件称为冲突(collision)。在以太网的基带传输中,以太网以一种比较巧妙的方式处理冲突。每个收发器在发送时监视电缆,看是否有外来信号干扰其发送。从技术说,这种监视称为冲突检测CD,.使以太网成

18、为一个CSMA/CD网。当检测到冲突时,主机接口放弃本次发送,等待活动停止,并再次试发送3。CSMA/CD的工作流程如下12:(1)准备发送站监听信道。(2)信道空闲进入第(4)步,开始发送数据,并监听冲突信号。(3)信道忙,就返回到第(1)步。(4)传输数据并监听信道,如果无冲突就完成传输,检测到冲突则进入第(5)步。(5)发送阻塞信号,然后按二进制指数退避策略等待,再返回第(l)步,准备重新发送。2.2.2以太网的物理传输帧封装格式各字段解释如下:同步位用于收发双方的时钟同步,由网卡控制器自动添加。分隔位表示下面跟着的是真正的数据,由网卡控制器自动添加。目的地址指接收端的物理地址,48位。

19、源地址指发送端的物理地址,48位。类型表明该帧的数据是什么类型的数据,不同协议的类型不同。数据段指发送的数据,不能大于1500字节。填充位指如果以太网传输的数据包小于46字节要补0。FCS校验位,4个字节,由芯片自动生成。所有数据位的传输都由低位开始,以太网的冲突退避算法由硬件自动执行。2.23以太网的数据传送过程当一个以太网站点的信息帧被发送到共享的信道或介质时。所有与信道相连的以太网接口都读入该帧,并且查看该帧的第一个48比特地址字段,其中包含有目的地址。各个接口把帧的目的地址与自己的48比特地址进行比较。如果该地址与帧中的目的地址相同,则该以太网站点将继续读入整个帧,并将它送给计算机正在

20、运行的上层网络软件。上层网络软件读入帧的类型字段,判断这个信息帧是入ARP包还是IP包,然后再交给不同的协议栈处理。当其他的网络接口发现目的地址与它们的地址不同对,就会停止读入信息帧。2.3嵌入式设备Internet接入实现的特点嵌入式设备系统中的微处理器,不管速度,还是RAM、ROM的资源,都远没有PC机强大,而嵌入式系统接入Internet需要解决的主要问题是:要在8位单片机上实现复杂的TCP/IP协议族,解决数据的封装、拆包、编码、解码及数据发送等。另外,微处理器除了完成这些任务外,还要控制一些设备,来完成特定的测量和控制的任务,再就是,嵌入式系统的成本不能太高。而完整的TCP/IP协议

21、族要消耗大量的系统资源,并且在嵌入式系统中要实现的是比较单一的网络传输和数据采集任务,所以没必要嵌入完整的TCP/IP协议族,只须把TCP/IP最精简的内核和用得到的协议嵌在里面就行了。例如,系统中如果没用到HITP协议而只用到了下层的TCP和UDP协议,可以去掉HTTP协议,而只保留下层协议,这样把不必要的协议去掉可以大大简化内核,从而节省了系统资源,降低了成本。另外,为了减少MCU的负担,底层最好选用现成的网络接口芯片,来完成物理帧的形成、接收、校验、编码、解码等任务。这样,MCU可以把主要的时间用于数据采集和过程控制上,减少开销,另外用现成的接口芯片还可以缩短开发时间、降低开发成本。2.

22、4单片机与计算机TCP/IP协议实现的不同单片机与计算机的差别很大,两者对TCP/PI的实现有很大的不同。在计算机里编写TCP/PI程序,可以不考虑代码大小、代码速度,但在单片机上这些都是要考虑的问题。综合来说,单片机实现与计算机实现TCP/PI有如下区别:(1)操作系统。不论是Windows、Unix、Linux,它们都有一个多任务操作系统,这使得代码编写简单化,而在单片机上,因为资源的原因,使用多任务操作系统则较为困难,这使得代码结构变为顺序执行+硬件中断的方式,而在计算机里却可以并发地执行。对程序执行结构,单片机要考虑更多。(2)内存分配。windows或UNIX的内存分配是动态的,根据

23、需要随时分配,随时撤消。但是在单片机却不能够这样做。一个最大的以太网数据帧有1500多个字节,分配一帧的缓冲区就要1.5K字节,而单片机的RAM要被各个协议所用,而不仅仅是存放收到的数据包。所以,需要分配RAM的一个固定空间来存放收到的八位单片机以太网接入研究与实现韩东起以太网数据包。收到一包就处理一包。在单片机里,存放收到的以太网数据包的RAM是固定的,而不是动态分配的。(3)指针。在单片机里指针有几种:a.指向外部RAM的指针,例uchar xdata *p使用指令movedptr占二个字节;b.指向程序ROM的指针,例uchar code *p使用指令move占二个字节;e指向内部的RA

24、M的指针,例uchar data *p使用指令movri占一个字节;d.指向外部RAM的分页指针,例uchar xdata *p使用指令movri占一个字节;e一般指针,可以指向以上的任何一种,占三个字节。而在计算机里,所有程序都必须先放在RAM里才能运行,所以它的指针只有一种情况,就是指向RAM。单片机的结构和计算机的结构有很大差别,指针类型很多,对指针运算的速度也不一样,由于第5种指针 “一般指针”运算很慢,同时又需要占用很多程序空间,所以,在单片机里一般要少用指针,或使用特定类型的指针18。(4)参数传递。在计算机实现的TCP/IP源代码中,一般有很多的参数传递,而在单片机里允许传递的参

25、数是有限的(因为受到内部RAM的限制),同时参数传递的过程要浪费程序代码空间,也降低单片机执行速度。所以在单片机的实现里,一般不能做太多的参数传递,而多使用公共的全局变量来实现调用的过程。这种情况下,计算机的源程序是相对独立的,受其它函数或变量的影响很小,而单片机里各程序相互依赖程度要大。因为在单片机里往往共享某一数据、某一变量【18】。(5)协议支持。在计算机里可支持比较完整的TCP/PI协议,但在单片机里无法做到,这是因为单片机根本没有足够的代码空间来支持这些协议。一般在单片机里实现与需要有关的部分,而不使用的协议则一般不嵌入进去。一般只能在单片机中实现:ARP,IP,ICMP,TCP D

26、P这些协议,而更高层的协议,如:HTTP、SMTP、TFP一般是不需要嵌入的。单片机应用的TCP/PI协议大多是为了完成数据采集和数据传输,而不是网页浏览、文件传输这些功能。就对某一协议而言,例如ARP协议,UNIX系统支持以太网、令牌环等网络的ARP,在该系统中单片机里只支持以太网,也就是说,对于某一协议,也有可能要作简化。IP包最大可以为65K,可以分段传输,而在单片机里根本无法容纳如此大的数据包,因此一般是不支持分段的。单片机一般采用发送小数据包的方式,以避免分段。(6)使用UDP还是TCP。相对于UDP,TCP的可靠性是以许多复杂措施及由此而增加的开销为代价换来的。UDP本身无连接能力

27、和不可靠,但对传输率却无阻碍,适于数据量比较小的应用;而TCP提供可靠的数据流,但处理的开销较大,使传输率有所降低。UDP不可靠不可简单化以致有所误解,真正使用UDP时,经常是要在应用层增加提高UDP可靠性的代码。嵌入式的设计者经常会面临许多具体的特殊要求,如代码不能长、或传输率是关键、或可靠性最重要等等,需要很好地加以分析和折衷。考虑到单片机运行速度比较慢,数据量又比较小,用UDP作为单片机应用的传输控制层协议,只要在应用层增加相应的可靠性代码,是能满足测控应用要求的。(7)硬件接口。在计算机里,对网卡的驱动相对简单,而在单片机里需要处理的事情更多。比如缓冲区溢出,在计算机里的一些程序根本没

28、有处理溢出的代码。因为计算机执行快,网卡缓冲区的溢出几乎是不会发生的。计算机往往采用即插即播即用方式来驱动网卡,而单片机却不能这样做,因为即插即用要很多代码来实现,一般使用跳线方式。计算机里驱动NE2000的网卡,一般都是用16位DMA的方式,而在8位单片机里却只能用8位DMA方式。2.5本章小结本章介绍了TCP/PI的网络体系结构,并着重讲述了嵌入式设备接入Internet的特点,同时也对以太网80.23标准作了简要说明。第3章TCP/IP协议分析3.1TCP/IP协议的封装和分用TCP/IP协议采用分层结构,实现也采用分层实现的方法。在实现的过程中首先要了解封装和分用的概念。3.1.1封装

29、当应用程序用UDP传送数据时,数据被送入协议栈中,然后通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),这个过程称作封装。如图3.1所示2sI。UDP传给的数据单元称作UDP报文段或简称UDP段。IP传给网络接口层的数据单元称作PI数据报。通过以太网传输的比特流也称作帧(Frame)。3.1.2分用当目的主机收到一个以太网数据帧时,数据就开始从协议栈底层向上升,同时去掉各层协议加上的报文首部。以太网帧要检查首部中的帧类型字段, IP要检查首部中的协议值字段,TCP和UDP要检查首部中的端口号字段来确定数据属于哪一层,这个过程称作分用。如

30、图3.2所示25:3.2TCP/PI协议分析3.21单片机TCP/IP构架如前所述,TCP/PI协议是一个协议族,有很多种协议。图3.3给出了本文研究的协议和各协议之间的关系3334。TCP和UDP是两种最为著名的传输层协议,二者都使用IP作为网络层协议。TCP使用不可靠的PI服务,但它却提供一种可靠的传输层服务。UDP为应用程序发送和接收数据报。与TCP不同的是,UDP是不可靠的,它不能保证数据报能安全无误的到达目的地。PI是网络层上的主要协议,同时被TCP和UDP使用。TCP和UDP的每组数据都通过端系统和每个中间路由器中的PI层在互联网中进行传输。CIMP是PI协议的附属协议,IP层用它

31、来与其他主机或路由器交换错误报文和其他重要信息。ARP协议是以太网用来转换PI层和网络接口层使用的地址。3.22网际协议IP1.IP的结构IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。IP的功能由IP头结构中的数据定义。IP数据报的格式如表3-1所示314147。普通的IP首部长为20个字节,除非含有选项字段。字段解释如下:版本IP头中前4位标识了IP的操作版本,目前的协议版本号是4,因此IP时也称作IPv4。首部长度指的是首部占32bit字的数目,包括任何选项。由于它是一个4比特字段,因此首部最长为60个字节。普通IP数据报(没

32、有任何选择项)字段的是5。服务类型包括一系列标志,这些标志能保证优先级、延时、吞吐量以及报文数的可靠性参数。本文为一般服务,所有4bit均为0。总长度字段指整个IP数据报的长度,以字节为单位。标志字段和片偏移一一标识字段唯一地标识主机发送的每一份数据报。通常发送一份报文它的值就会加1。标志字段和片偏移在分片和重组的时候会用到,于本系统中对数据不分片、无偏移,故设为0X4000。生存时间(竹TTL)生存时间字段设置了数据报可以经过的最多路由器数它指定了数据报的生存时间。TTL的初始值由源主机设置(通常为32或64),一旦经过一个处理它的路由器,它的值就减去1。当该字段的值为0时,数据报就被弃,并

33、发送CIMP报文通知源主机。协议字段根据它可以识别是哪个协议向PI传送数据,如UDP、TCPICMP。首部校验和字段是根据PI首部计算的校验和码。它不对首部后面的数据行计算。CIMP、IGMP、UDP和TCP在它们各自的首部中均含有同时覆盖首部和数据的校验和码。2.IP校验和的计算1321为了计算一份数据报的IP校验和,首先把校验和字段置为0。然后,对首部中每个16bit进行二进制反码求和(整个首部看成是由一串16bit的字组成),结果存在校验和字段中。当收到一份Pl数据报后,同样对首部中每个16bit进行二进制反码的求和。由于接收方在计算过程中包含了发送方存在首部中的校验和,因此,果首部在传

34、输过程中没有发生任何差错,那么接收方计算的结果应该为全1。如果结果不是全1(即校验和错误),那么PI就丢弃收到的数据报。但是不生成差错报文,由上层去发现丢失的数据报并进行重传。CIMP、IGMP、UDP和TCP都采用相同的校验和算法。3.IP的功能IP报文头中含有使一些重要网络功能成为可能的必要信息,包括:(1)寻址和路由(2)分段和重组(3)传输过程中数据损坏检测和更正。尽管有这些功能,但PI毕竟只是一个网际协议。为了使其发挥作用,必须和传输协议以及链路层协议一起工作。因为它不提供检测数据报是否到达目的地机制,并且不检测是否有数据报被破坏和丢失。3.2.3用户数据报协议UDP1.UDP的结构

35、UDP(User Datagram Protocol)是一个简单的面向数据报的传输层协议,UDP提供了一种基本的、低延时的传输。字段解释如下:UDP源端口号-16位的源端口号是源计算机上的连接号。源端口号和源IP地址作为报文的返回地址之用。UDP目的端口号-16位的目的端口号是目的计算机上的连接号。目的端口号用于把到达目的地的报文转发到正确的应用。UDP协议使用端口号为不同的应用保留其各自的数据传输通道。UDP和TCP协议正是采用这一机制实现对同一时刻内多项应用同时发送和接收数据的支持。数据发送一方将UDP数据报通过源端口发送出去,而数据接收方则通过目的端口接收数据。UDP长度-UDP长度字段

36、指的是UDP首部和UDP数据的字节长度。该字段的最小值为8字节。Pl数据报长度指的是数据报全长,因此UDP数据报长度是全长减去IP首部的长度。UDP校验和一一校验和是一个16位的错误检查域,基于报文的内容计算得到。UDP校验和覆盖UDP首部和UDP数据(PI首部的校验和只覆盖IP的首部,并不覆盖PI数据报中的任何数据)。包括3部分:伪首部、UDP首部和应用层数据,位于UDP报头前12个字节的是伪首部。2.UDP校验和的计算32UDP校验和的基本计算方法与PI首部校验和计算方法相类似(16位字的二进制反码和),但它们之间存在不同的地方。首先,UDP数据报的长度可以为奇数字节,但是校验和算法是把若

37、干个16位字相加。解决方法是必要时在最后添充字节O。其次,UDP数据报和TCP报都包含一个12字节的伪首部,它是为了计算IP首部一些字段,这些字段包括PI头中的32位源IP地址和32为目的IP地址。3.UDP的特点UDP被设计成一个有效的和最小的传输协议。它只包括用于转发数据报至合适应用(端口号)的足够信息,并且执行一定的错误检查。UDP使用尽力方式传送数据报,由于某种原因传输失败,数据报被丢弃并且不试图重传。UDP经常被认为是不可靠的,因为它不具有任何TCP的可靠性机制。但是UDP具有TCP所望尘莫及的速度优势。虽然TCP协议中植入了各种安全保障功能,但是在实际执行的过程中会占用大量的系统开

38、销,无疑使速度受到严重的影响。反观UDP由于排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大降低了执行时间,使速度得到了保证。UDP最适合于小的发送(也就是单独的报文)。因此,在嵌入式系统的应用中,UDP协议应用应最为广泛。3.2.4Internet控制报文协议ICMPICMP(Internet control Message Protocol)报文分为两大类,差错报告报文和查询报文。经常被认为是Pl层的一个组成部分,它传递差错报文以及其他需要注意的信息。ICMP报文通常被IP层或更高层协议(UDP或TCP)使用。ICMP报文是在IP数据报内部被传输的。如图3.4所示【42

39、】。ICMP报文的格式如表33所示【31】【42】。所有报文的前4个字节都是一样的,但是剩下的其他字节则互不相同。类型字段可以有15个不同的值,以描述特定类型的ICMP报文。在本系统中,主要是对PING命令的响应。PING程序的目的是为了测试另一台主机是否可达。该程序发送一份CIMP回显请求报文给主机,并等待返回CIMP回显应答。使用PING命令的ICMP报文格式如表3一4所示。其中,类型8代表发送PING,0代表响应PING。代码0为PING命令。标志和序号是为了使响应和发送的数据相对应。可选数据是任意的,但响应和发送的数据是相同的。校验和字段覆盖整个CIMP报文。使用的算法与IP首部校验和

40、算法相同。3.25地址解析协议ARP当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48bit的以太网地址来确定目的接口的。设备驱动程序从不检查IP数据报中的目的IP地址。地址解析为这两种不同的地址形式提供映射:32bit的PI地址和数据链路层使用的任何类型的地址【33】。ARP发送一份称作ARP请求的以太网数据帧给以太网上的每个主机。这个过程称作广播,ARP请求数据帧中包含目的主机的PI地址,其意思是“如果你是这个IP地址的拥有者,请回答你的硬件地址”,而此时发送的目标物理地址是FFFFFFFFFFFF。目的主机的ARP层收到这份广播报文后,识别出这是发送端在寻问它的PI

41、地址,于是发送一个ARP应答。这个ARP应答包含IP地址及对应的硬件地址【43】。在以太网上解析PI地址时,ARP请求和应答分组的格式如图3.5所示【31】【36】。以太网报头中的前两个字段是以太网的源地址和目的地址。目的地址为全1的特殊地址是广播地址。电缆上的所有以太网接口都要接收广播的数据帧。两个字节长的以太网帧类型表示后面的数据类型。对于ARP请求或应答来说,该字段的值为0X0806。硬件类型字段表示硬件地址的类型。它的值为1即表示以太网地址。协议类型字段表示要映射的协议地址类型,值为OXO80O即表示PI地址。接下来的两个1字节的字段,硬件地址长度和协议地址长度分别指出硬件地址和协议地

42、址的长度,以字节为单位。对于以太网上PI地址的ARP请求或应答来说,它们的值分别为6和4。两个字节的动作字段指出四种操作类型,它们是ARP请求(值为)l、ARP应答(值为2)、RARP请求(值为3)和RARP应答(值为4)。这个字段是必需的,因为ARP请求和ARP应答的帧类型字段值是相同的。接下来的四个字段是发送端的以太网地址、发送端的PI地址、目的端的以太网地址和目的端的Pl地址。对于一个ARP请求来说,除目的端硬件地址外的所有其它字段都要填充值。当系统收到一份目的端为本机的ARP请求报文后,它就把硬件地址填进去,然后用两个目的端地址分别替换两个发送端地址,并把操作字段置为2,最后把它发送回

43、去。3.3本章小结本章主要分析了TCP/PI协议的结构,介绍了单片机TCP/PI的协议构架,并逐层介绍了其主要协议,其中包括协议的原理及各协议间的相互作用。第4章系统硬件构成4.1系统硬件组成为使本系统硬件接口简单化、降低成本、适当缩短开发周期,系统中应尽可能减少外围器件。系统的CPU选用单片机AT89C52,单片机AT89C52有SK字节的片内ROM和256字节的片内RAM。片外RAM使用62256,这种RAM有32K字节的使用空间。这两种芯片的选用,主要是为精简TCP/PI协议栈的嵌入提供条件,同时保证拥有较大的数据处理空间。网卡芯片DM900O是主要的工作部件,完成对网络数据的发送和接收

44、。滤波变压器PH163112,用来对网络上的脉冲进行转换和滤波。网络连接采用IOBASET电缆连接至HUB。图4.1为本系统的硬件框图。4.2网络连接网络单片机通过网卡芯片DM90OO接入以太网,下面主要阐述网卡芯片DM9000的工作原理,介绍单片机对DM9000的控制原理及初始化步骤,并提供DM9000和单片机的接口方案。4.2.1网卡芯片DM90001.DM9000简介DM9000芯片是台湾Davicom公司生产的一款以太网控制芯片,在网络中它可自动获得同设定MAC地址一致的PI包,完成PI包的收发,它采用LQFPl00管脚封装,内部集成了16K的SRAM,提供8位和16位两种接口,在本课

45、题中使用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/200MFULL。(5)支持EE

46、PROM(93C46),可供存放系统所需信息。2.DM9000的寄存器DM9000的寄存器很多,这里只列出本系统相关的寄存器,如表41所示【40】。3.DM9000读取、写入寄存器方式DM9000控制读取和写入寄存器方式,十分容易。DM90OO有数据和地址两个端口。而这两个端口由CMD管脚控制,若CMD接高电位时为控制数据端口,CMD接低电平时为控制地址端口。要读写任何一个寄存器时,方式如下: (1)将AEN,SA49使DMg000使能。(2)设置CMD管脚为低电位。(3)将要读写的寄存器的地址填入地址端口(IOW#)。(4)设置CMD管脚为高电位。5)将要读写的寄存器的数据填入或读出数据端口

47、(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,ReverseMII)。(4)设定物理

48、地址位置。(5)设定Multicast设置。(6)其它相关设置。(7)开启接收资料功能。6.封包传送工作原理内存中默认值有3KByt。(O000hOBFFh)提供给传送功能使用。而传送一个封包的流程如下:()l将要传送封包的长度,填入到TXPLL,TXPLH寄存器。(2)将要传送封包的数据由MWCMD寄存器填入内存中。(3)由TCR寄存器使DM9000送出封包数据。(4)若内存的写入位置超过OBFFh时,自动将下一个位置回复到0000h。7.封包接收工作原理内存中默认值有13KByt(OC00h一03FFh)提供给接收功能使用。在每一个封包中,会有4个Byte存放一些封包相关信息。第1个Byt

49、e是封包是否已存放在接收内存,若值为“0h1”,则封包已存放于接收内存,若为“0h0”,则接收RAM尚未有封包存放。在读取其它Byte之前,必需要确定第1个byte。是否为“01h”。第2个Byte则为这个封包的一些相关信息,它的格式像RSR寄存器的格式。第3和4个Byte是存放这个封包的长度大小。接收封包如图4.3所示130!。接收一个封包的流程如下:()l检查MRCMDX寄存器值是否为01h,若有则有封包进入需读取。(2)读取MRXMD将前四个Byte封包信息读入。(3)由前四个Byte封包信息取得此封包长度(以Byte为单位),连续读取MRCMD,将封包资料移到系统内存之中。8.DM90

50、001/0模式的设定39DM9000支持3种I/O模式,分别为Byte/word/Dword,在读写资料的方式也支持8-bit/16-bit/32-bit,在硬件和软件上需要相互配合(即设置模式需一致)。硬件上是通过场WAKEUP和EEDO两个管脚的电平组合来设定。如图4.4所示【39】。4.2.2滤波变压器在本系统中,以太网控制芯片和外部网络之间通过10/100滤波变压器PH163112连接。PH163n2隔离以太网控制芯片和外部网络,对系统电路起到保护作用,并完成信号的传输。其内部结构如图4.6所示。4.2.3单片机和网卡芯片DM9000的接口原理图图4.7为本系统的单片机和DM9000的

51、接口原理图单片机数据线POP7和DM9000的DO-D7数据相连,用于单片机对网卡芯片DM9000的数据读写;地址线AZ接DM9000的CMD脚,以使单片机可以访问网卡芯片的内部寄存器;AEN是DMgO00的使能线,连接单片机的片选线;将SA4SA7接地,SA8和SA9接DVDD,此时,DM9000地址端口的地址=nCS地址+0x0、DM9000数据端口的地址=nCS地址+0x4;IOR#和IOW#分别接单片机的RD和WR。4.3本章小结在这一章,主要讨论了本系统的硬件连接,介绍了网络芯片DM900O的工作原理和单片机与DM9000的硬件接口,并简要介绍了脉冲变压器PH163112的内部结构。

52、第5章51单片机TCP/IP协议的嵌入实现引言TCP/PI协议采用分层结构,因此,我们实现TCP/PI协议也采用分层实现的方法。物理层具体到程序实现就是以太网络驱动程序,解决以太网络数据的收发。ARP由于以太网数据包的收发必须依赖物理地址,而PI协议采用PI地址,这就关系到两种地址相互转换的问题,即需要我们实现地址解析协议ARP,要实现ARP,只要向局域网广播ARP请求,接收ARP应答,并响应ARP请求即可。PI协议PI协议实现对要发送的分组报文寻找路径和报文传送。程序设计中关键是实现一个效率高且通用的PI校验程序。由于嵌入式系统传输的数据量比较小,为了程序的简化,本系统中不提供PI分片功能。

53、CIMPICMP协议有很多种数据包格式,我们实现其最常用的回应请求与应答报文(也就是PING程序)。UDPUDP协议建立在PI协议之上和PI协议一样提供一种无连接的数据传输,由于不用考虑建立连接和等待确认,故其传输速度比较快。程序设计中UDP校验是比较特殊的地方,它并不遵循严格的分层模型,要加上一个取自PI层的伪头标一起校验。本系统要实现的就是在单片机中嵌入TCP/PI协议,上位机可以使用TCP/PI协议二和单片机进行网络通信。程序使用单片机C51语言编写。系统支持PI、ARP、CIMP、UDP协议。5.2总体程序设计5.2.1总体设计思想1.引入结构数据类型结构是为易于操作而被组合在一起的一

54、个或多个变量,结构中的变量的数据类型可以不同,而且各变量在内存中是按顺序存放的。由于以太网协议帧与TCP/PI各层协议中都包含有不同数据类型的信息,且这些信息通常是按顺序排列的。基于这一特点,为了在程序中能够方便的对这些信息进行操作,故采用结构这种数据类型表示TCP/PI各层协议的信息,以方便程序的编写和协议的嵌入式现。2.引入共用体数据类型共用体类似于结构,它与结构的不同之处在于,在同一时间内,只有一个成员可用。也就是说,公用体的所有成员占用的是同一个内存区域。在单片机TCP/PI的嵌入实现中,数据的封装和分用是其实现的关键。而在对数据进行封装和分用时常常需要对数据进行复制和重组,由于单片机

55、系统本身的数据存储空间相对有限,为此,本设计中将所有协议包含在一个共用体中,所有协议报文共用一个内存区域。这样即节省了系统的数据存储空间,又避免了反复的数据复制。本设计所使用的共用体定义如下所示:Union Netcard struct uchar bytebuf500;bytes;Struct unit wordbuf 250;Words:Struct Ethernet Ether Frame;Struct Arp ArpFrame:Struct icmp IcmpFrame:Struet iP IPFrame:Struet udp UdPFrame:Struet IpPacket IpPa

56、eket:;3.总体程序流图单片机TCP/PI的总体程序流图如图5.1所示。5.3DM9000驱动程序设计5.3.1主要函数说明本设计中DM9000驱动程序的目的有两个:发送和接收Pl报文;发送和接收ARP报文。驱动程序实现的功能是将要发送的数据包按指定格式写入芯片内存并启动发送命令,DM9000会自动把数据包转换成物理帧格式在物理信道上传输。反之,DM9000收到物理信号后将其还原成数据,按指定格式存放在内存中,以便主机程序取用,简言之就是DM9000完成数据包和电信号之间的相互转换。以太网协议由芯片硬件自动完成,不用考虑。驱动程序由三部分组成:芯片初始化、收包、发包。具体实现函数如下表:以

57、太网报头的结构体定义如下:Ethernet uchar Recstatus:UChar RecInfo*/接收状态*/*/封包信息*/Unit length:Unit DestMacld3:Unit SourceMacld 3:Unit NextProtocal;Uchar packet500;*/以太网长度,以字节为单位*/*/目的网卡地址*/*源网卡地址*/*下一层协议*/*/包的内容*/5.3.2 DM9000的初始化DM9000在正常工作之前需要做一些相关的设定,才能正常动作,此过程称为初始化【39】:1.开启内部PHYwrite register(GPCR,0x01):write r

58、egister(GPR,0x00):phy-write(oxo4,oxo461):/10M全双工Phy-rite(0x00,0x0100);2.软件复位Write-register(NCR,ox03);/将DM9000进行软件重置delay(30):/等待DM9000重置完成write register(NCR,0x00):/将DM9000回复正常工作状态write register(NCR,0x03):/将DMg000进行软件重置delay(30);/等待DM9000重置完成write register(NCR,0x00):/将DM9000回复正常工作状态Delay (5):上面软件重置动作

59、重复了两次,是为了确保DM90OO重置成功。3.清除中断设定write register(XMR,0x80);/将DM9000中断功能关闭清除中断设定,以免因中断导致DM900O初始化动作不正常。4.设置本机物理地址set_9000MAC();/设置本机物理地址5.其它相关设置read register(NSR);Write-register(TCR,0x00);/清除TCR相关信息Read-register(ROCR):/清除ROCR相关信息write-register(ISR,0x0f;/清除ISR相关信息Write-register(IMR,ox83):6.开启接收资料功能Write-r

60、egister(RCR,0x39):/开启接收功能5.3.3收包子程序DM9000接收到的封包,会存放于DM9000接收内存的0C00h-3FFFh中。若是读取位置超过3FFFh时,DM90OO会自动将位置移到OC0h0的位置。在每一个封包内,会有4个Bytes存放一些封包相关信息。第1个Byte是封包是否已存放在接收内存,若值为“01h为封包己存放于接收内存,未有封包存放。在读取其它Byte之前,必需要确定第2个Byte。则为这个封包的一些相关信息,它的格式像Byte是存放这个封包的长度大小。DM9000收包流程如图5.2所示:5.3.4发包子程序在传送封包之前,需将封包数据存放在DM900

61、0的传送内存中0000hOBFFh。若是写入位置超过OBFFh时,DMgO00会自动将位置移到000Oh的位置。将封包数据存放在MWCMD中,DM9000会自动将其数据存入其传送内存中。另外还需将要传送封包的大小存放在TXPLL以low byte)和TXPLH(high byte)。之后再将TCR bit()设为1,此时开始进行封包的传送。而在传送完成后,会将传送是否成功的信息放在TSRI、TSRII中。放的顺序为TSRI-TSRII-TSRI-TSRII。所以需要依照NSR bit2-3来判断现在是TSRI或TSRII传送完成。DM9000发包流程如图5.3所示:5.4TCP/IP协议设计5

62、.4.1ARP模块设计当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48位的以太网地址来确定目的接口的,设备驱动程序从不检查LP数据报中的目的EP地址。ARP(地址解析)模块的功能为这两种不同的地址形式提供映射:32位的Pl地址和48位的以太网地址。ARP报文分请求报文和应答报文两种。请求报文用于获取目的端主机的物理地址;应答报文用于回答本机的物理地址。ARP报文结构体定义如下:Struct arpunit Ether Head91;/*以太网头*/Unit Hardware Type;/*硬件类型*/Unit protocol Type:/*协议类型*/Uchar Ha

63、rdware Len;/*硬件长度*/Uchar protocol Len:/*协议长度*/Unit Operation:/*操作*/Unit SourceMacld3:/*源网卡地址*/Unit SourceIp2;/*源xP地址*/Unit DestMacldl31:/*目的网卡地址Unit Destld2:/*目的IP地址;1.主要函数说明该模块有3个函数组成,它们是ARP请求函数Arp_RequestO、ARP应答函数ARP_answer和ARP处理函数ArP_Process()。.具体函致说明如下表:2.ARP请求子程序当要发送的以太网帧不知道目的地的物理地址时,就要发送请求报文,它是广播报文,发送请求要调用Arp_Request()函数,Arp_Request()函数用于发送ARP请求报文,以解析指定PI地址。封装成以太网帧发送时,各字段设置如下

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!