八位单片机以太网接入研究与实现_第1页
八位单片机以太网接入研究与实现_第2页
八位单片机以太网接入研究与实现_第3页
八位单片机以太网接入研究与实现_第4页
八位单片机以太网接入研究与实现_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、八位单片机以太网接入研究与实现第一章引言1.1嵌入式设备对互联网接入的需求单片机或微处理器(MCU)已经广泛应用于家庭和工业的各个领域。以单片机为核心,加上一些监控、伺服和指示器件来实现一定的功能,一般称为嵌入式系统。但是大多数嵌入式系统还处于个人应用阶段17。在一些工业应用中,为了实现多个单片机之间的信息交换,可以使用CAN、RS-232、RS-485等总线将多个单片机联网。但这种网络的有效半径相对有限,相关协议也很少,一般与互联网隔绝。难以满足复杂、远程(异地)、大规模测控任务的需求。近十年来,以互联网为代表的网络技术的出现及其与其他相关技术的结合,不仅开始将智能互联网产品带入现代生活,也

2、为远程测控技术带来了前所未有的发展空间和机遇。网络化测控技术和各种具有网络功能的新型仪器应运而生。目前,互联网已经成为社会最重要的基础信息设施之一,成为信息流通的重要渠道。如果嵌入式系统可以连接到互联网上,信息就可以方便而廉价地传送到世界的任何一个角落。传统的互联网应用是以PC为中心的,而当代的互联网应用将转向嵌入式设备。AI(Internet Appliance)概念的流行,标志着互联网及其应用进入了嵌入式、互联网等时代。据网络专家预测,未来互联网上传输的信息有70%来自小型嵌入式系统。可以预见,嵌入式设备与互联网的结合代表了嵌入式系统和网络技术的真正未来。1.2嵌入式设备互联网接入的现有解

3、决方案用单片机实现嵌入式internet方案的技术难点在于如何利用单片机有限的资源,通过TCP/PI协议处理信息,使其能够在Internet上传输ip包。为了解决这个技术问题,目前已经出现了几种方案:1.PCGateway+专网:使用专网(如RS232、RS485、CAN总线等。)将少量的单片机连接在一起,然后将专网连接到一台PC机上,pc机作为网关,将专网上的信息转换成TCP/IP包,再发送到互联网上,实现信息共享。这种方案可以连接多种单片机,因为复杂的TCP/IP协议是由PC机实现的,所以对单片机的要求比较低。但是有以下缺点:A.它需要依靠PC作为协议转换的网关。在多个单片机系统分散的情况

4、下,专网布线极为不便。B.需要在PC上安装专门的协议转换软件,通常由专门的第三方软件厂商提供,成本较高。2.32位MCU RTOS:采用32位高档单片机,TR0S(实时多任务操作系统)System)平台进行软件开发,在嵌入式系统中实现TCP/IP协议处理。由于收养高档单片机,这个方案可以完成很多复杂的功能。然而,这种方案有以下缺点:A.高档单片机价格昂贵,开发周期长。B.需要购买昂贵的RTOS开发软件,对开发者的开发能力要求很高。3.TCP/IP ASIC:由于近年来互联网和通信行业的快速发展,半导体制造商试图将通信协议、互联网协议、Ip和许多外围设备集成到一个SOC(片上系统)中。应该说这种

5、方法是最直接最方便的上网方式。是目前国际上研究的热点,也是未来家电等嵌入式设备上网的重要方向。但是这种方法在实现过程中存在很多问题,不能灵活配置系统,不能根据应用需求对系统进行裁剪,并且因为芯片的加入增加了系统的成本。为了解决上述问题,可以用软件来完成协议的处理功能。当然,使用软件来目前的硬件功能需要解决处理速度问题。同时,由于单片机采用软件实现各种协议。处理,这样以后在不改变硬件的情况下,只需要改变程序就可以升级整个嵌入式系统。系统的功能,是在各种协议层出不穷,频繁升级的情况下,由SCENIX提出的。“硅中软件”的概念意义重大。1.3嵌入式设备互联网接入的底层硬件协议要实现小型嵌入式设备的互

6、联网接入,TCP/PI首先要解决底层硬件问题,即协议的物理层。以太网有成熟的技术、低成本的网络产品、丰富的开发工具和技术支持,可以研究和实现8位单片机以太网接入。当现场总线的发展遇到障碍时,以太网控制网络技术以其明显的优势迅速发展,并逐渐形成了现场总线的新标准以太网。考虑到国内大部分局域网都是以太网,随着交换网和宽带网的发展,基于以太网的嵌入式设备接入互联网具有现实意义。1.4本研究的能力从上面的分析可以看出,如何在单片机上实现TCP/IP协议站,是一个小型的嵌入式设备。互联网接入问题的根源。目前8位单片机直接上网存在的问题有:1.小型嵌入式设备中的微控制器一般是简单的控制器,其运算速度与系统

7、资源有限。2.TCP/IP协议在实时性方面不能满足嵌入式应用的实时性要求。因此,目前嵌入式设备直接上网软件要解决的关键技术是TCP/IP协议的简化和实时性改进。本文讨论了在小型嵌入式设备中实现网络通信的技术难点,并对在嵌入式环境中实现网络通信的TCP/IP协议族进行了阐述和分析。在此基础上,设计了一个简单的网络单片机数据通信系统,利用51MCU、以太网接口芯片及相关外围接口电路实现了系统的硬件架构。在软件上,根据8位单片机有限的资源(ROM、RAM和外设接口),对TCP/PI协议族进行了简化,使其可以运行在8位单片机上,满足客户端的请求,实现远程数据采集、传输和控制。1.5本文的主要内容第一章

8、简要介绍了本研究的价值和主要内容。第二章主要讨论了TCP/IP网络体系结构和嵌入式设备接入互联网的特点。第三章详细分析了TCP/IP协议,详细介绍了互联网协议PI、用户数据报协议UDP、互联网控制消息协议CIMP和地址解析协议ARP的协议功能和消息格式。第四章重点介绍了系统的硬件结构以及各组成部分的特点和功能。给出了单片机与以太网控制芯片DMgO00的接口方案。第五章是本系统的软件实现。本章提出了系统的总体程序设计思想,详细介绍了各功能模块的软件设计方法,包括DM9000驱动程序设计、ARP模块设计、IP模块设计、ICMP模块设计、UDP模块设计和上位机程序设计。第六章总结了本文的主要内容,并

9、提出了本系统下一步的改进方法。1.6本章概述本章从嵌入式设备上网的需求入手,讨论了现有嵌入式设备上网解决方案的不足,提出了解决方案,并介绍了本文所做的主要研究工作。第二章嵌入式设备互联网接入实现的特点2.1TCP/PI网络架构网络架构在网络发展初期,不同的计算机和网络厂商设计了各自的网络架构,使得不同的网络设备难以互联互通,互联网络的性能难以保证,网络建设成本非常高。广大用户强烈要求一个便宜、灵活、方便的组网方案。面对这种需求,国际标准化组织(150)于1983年提出了开放系统互连(051)网络架构框架,即150/051参考模型,如图2.1所示31。50/051开放式网络架构在理论上的指导作用

10、大于实际应用。目前广泛使用的网络架构是TCP/PI,但150/051开放网络架构描述了一个指导网络互联的理想框架和蓝图,需要探索和实现。其具体特征如下6。(1)描述了实现异构系统互连的层次结构。(2)提供了控制互联系统交互规则的标准框架。(3)定义了一个抽象的结构,而不是对具体实现的描述。(4)同级实体(指能够发送和接收信息的软件和设备,如终端、程序、数据库、电子系统等之间的通信。)由这一层的协议来管理和实现。(5)规定每层只完成定义的功能,修改本层功能对其他层没有影响。(6)定义相邻层之间的界面。(7)规定在最底层(物理层)实现直接数据传输。(8)通信网络只涉及第一层到第三层,如网络层涉及的

11、路由器、数据链路层涉及的网桥、物理层涉及的中继器、第四至第六层涉及的网关,属于高级协议转换设备。ISO/OSI网络的体系结构是开放的。所谓“开放性”,就是任何符合参考模型和相关标准的系统都可以互联互通。ISO/OSI参考模型只定义了各层的功能,没有定义各层的具体实现协议。其协议由其他标准定义,充分体现了该模型的灵活性和前瞻性。ISO/OSI分层模块化/结构化网络设计思想完整清晰,对计算机网络和其他网络的发展具有非常重要的指导意义。TCP/IP网络架构OSI模型是一种通用的、标准的理论模型。当今市场上没有一种流行的网络协议完全符合OSI模型,TCP/PI也不例外。TCP/IP协议族有自己的模型,

12、称为TCP/IP协议栈,也称为DOD模型(国防部)31,如图2.2 7所示。1.应用层应用层主要为用户提供一套常用的应用程序,如文件传输访问、电子等。严格来说,TCP/IP网间协议只包含下三层(不包括硬件),应用程序不能被认为是TCP/IP协议的一部分。就是上面提到的常见应用,TCP/IP制定了相应的协议标准,所以它们也作为TCP/IP的内容。事实上,用户可以在互联网上(即在传输层)建立自己的专用应用程序。这些专用应用程序使用TCP/IP,但不属于TCP/IP。2.传输层传输层提供应用程序之间的通信(即端到端),其功能包括:格式化信息流,为了提供可靠的传输,接收器必须确认接收,否则将重新传输。

13、传输层必须解决识别不同的应用程序,因为经常有多个程序同时访问互联网。区分应用程序程序时,传输层会在每个数据包中添加标识源应用程序和目的应用程序的信息。此外,传输层每个数据包都有一个校验和,接收方用它来检查接收到的数据包的正确性。3.互联网层互联网层负责相邻计算机之间的通信。它的功能包括三个方面:一是处理来自传输层的包发送请求。收到请求后,它将数据包装入Pl数据报,填充报头,选择到目的计算机的路径,然后将数据报发送到适当的网络接口。第二,处理输入数据报。首先,检查其合法性,然后执行路由。如果数据报已到达目的地,则删除报头,并将其余部分(传输层数据包)交给适当的传输协议。如果数据报没有到达目的地,

14、请转发它。第三,处理CIMP消息,处理路径、流量控制、拥塞等问题。4.网络接口层网络接口层是TCP/IP协议的最底层,负责接收PI数据报并通过网络发送,或者从网络接收数据帧,提取Pl数据报并交给Pl层。网络接口层定义了互联网和各种物理网络之间的网络接口。有两种类型的网络接口,第一种是设备驱动程序(如局域网网络接口),第二种是一个复杂的子系统,有自己的数据链路协议。2.2总线以太网和802.3标准2.21总线以太网技术以太网是基于总线的广播网络。在现有的局域网标准中,它是最成功的局域网技术,也是目前应用最广泛的局域网。它是由施乐公司的PARC在20世纪70年代早期发明的。以太网传输介质从同轴电缆

15、(粗电缆和细电缆)和双绞线到光纤。现在常用的双绞线以太网工作在10Mbps,1000Mbps,1000Mbps。它用八根线(四根双绞线)将每个以太网设备连接到以太网集线器或交换机。集线器是一种模拟以太网电缆信号的电子设备。集线器和以太网设备之间的连接长度必须小于。现在的以太网已经发展到千兆以太网,速度越来越快。但从技术上讲,以太网是基于CSMA/CD(载波侦听多路访问/冲突检测)机制的。CSMA/CD是一种具有冲突检测(CD)功能的载波侦听多路访问(CSMA)媒体访问控制方法,广泛应用于局域网的MAC子层,是EIEE80.23的核心协议。CSMA/CD主要用于解决如何竞争一个广播共享传输信道,

16、它可以决定谁应该占用该信道。当一个站开始传输数据包时,信号不会同时到达网络的所有部分,因此两个收发器可能同时检测到网络空闲并同时开始传输。当这两个电信号相遇时,它们混合在一起,每个信号都失去了意义。这种事件叫做碰撞。在以太网的基带传输中,以太网以巧妙的方式处理冲突。每个收发器在传输过程中监控电缆,查看外部信号是否干扰其传输。从技术上讲,这种监控称为冲突检测CD,它使以太网成为CSMA/CD网络。当检测到冲突时,主机接口会放弃此传输,等待活动停止,并尝试再次传输3。CSMA/光盘的工作流程如下12:(1)准备发送站监听信道。(2)当信道空闲时,进入步骤(4),开始发送数据,监听冲突信号。(3)如

17、果信道忙,返回步骤(1)。(4)传输数据并监听信道,如果没有冲突,完成传输,如果有冲突,转到步骤(5)。(5)发送阻塞信号,然后按照二进制指数退避策略等待,然后返回步骤(1)准备重新发送。2.2.2以太网物理传输帧封装格式这些字段解释如下:同步位-用于发送方和接收方之间的时钟同步,由NIC控制器自动添加。位分隔-表示以下是真实数据,由NIC控制器自动添加。地址指接收端的物理地址,48位。源地址指发送方的物理地址,48位。type-表示帧数据是什么类型的数据,不同协议的类型不同。段-指发送的数据,不能大于1500字节。填充位-这意味着如果以太网传输的数据包小于46字节,则应该填充0。FCS-校验

18、位,4字节,由芯片自动产生。所有数据位从低位传输,以太网的冲突避免算法由硬件自动执行。2.23以太网数据传输过程当以太网点的信息帧被发送到共享信道或介质时。连接到通道的所有以太网接口都会读取帧,并检查帧的第一个48位地址字段,其中包含目的地址。每个接口将帧的目的地址与其自身的48位地址进行比较。如果地址与帧中的目的地址相同,以太网点将继续读取整个帧,并发送给运行在计算机上的上层网络软件。上层网络软件读取帧的类型字段,判断信息帧是ARP包还是IP包,然后交给不同的协议栈处理。当其他网络接口发现目的地址与它们的地址不同时,它们将停止读取信息帧。2.3嵌入式设备上网的特点嵌入式系统中的微处理器,无论

19、速度如何,都离RAM和rom的资源很远。PC机功能强大,但嵌入式系统接入互联网需要解决的主要问题是:在8位单片机上实现复杂的TCP/IP协议族,解决数据封装、解包、编码、解码和数据传输。另外,微处理器除了完成这些任务外,还控制一些设备完成特定的测控任务,嵌入式系统的成本应该不会太高。而完整的TCP/IP协议族消耗了大量的系统资源,嵌入式系统的网络传输和数据采集任务相对简单,所以不需要嵌入完整的TCP/IP协议族,只需嵌入TCP/IP最精简的内核和得到的协议即可。例如,如果系统中不使用HITP协议,而只使用较低层的TCP和UDP协议,则可以去掉这些协议,只保留较低层的协议,这样去掉不必要的协议可

20、以大大简化核心,从而节省系统资源,降低成本。另外,为了减轻MCU的负担,底层最好选择现成的网络接口芯片来完成内容。管理帧形成、接收、验证、编码、解码等任务。这样,单片机就可以把主要时间花在在数据采集和过程控制中,利用现成的接口芯片,降低了成本,缩短了开发时间。降低开发成本。2.4单片机和计算机的TCP/IP协议实现不同。它和单片机有很大的区别,两者之间的TCP/PI实现也有很大的不同。在计算机中编写TCP/PI程序时,可以忽略代码大小和代码速度,但这些都是单片机要考虑的问题。一般来说,TCP/PI的单片机实现和计算机实现有以下区别:(1)操作系统。无论是Windows、Unix还是Linux,

21、都有一个多任务操作。系统,使得代码编写简单,而在单片机上,由于资源的原因,多任务操作被使用。系统实现难度更大,使得代码结构变成顺序执行+硬件中断的方式,但在计算机中可以并发执行。对于程序执行结构,MCU要考虑更多。(2)存款和分配。windows或UNIX的存储和分配是动态的,可以根据需要随时进行分配。随时撤销。但是在单片机里做不到。最大的以太网数据帧有1500多个字节,分配一帧的缓冲区需要1.5K字节,而单片机的RAM要供各种协议使用,而不仅仅是存储接收到的数据包。因此,需要分配RAM的固定空间来存储接收到的来自华东的8位单片机以太网接入研究与实现以太网数据包。一收到包裹就处理它。在MCU中

22、,用于存储接收到的以太网数据包的RAM是固定的,而不是动态分配的。(3)指针。MCU中的指针有几种:a .指向外部RAM的指针,例如uchar xdata *p使用指令movedptr占用两个字节;b .指向程序ROM的指针,例如uchar code *p使用指令move占用两个字节;e指向部门RAM的指针,例如uchar data *p使用指令movri占用一个字节;d .指向外部RAM的分页指针,例如uchar xdata *p使用指令movri占用一个字节;e指针,可以指向上面任何一个,占用三个字节。在计算机中,所有的程序都必须放在RAM中才能运行,所以它的指针只有一种指向RAM的方式。

23、单片机的结构与计算机的结构有很大的不同。指针的种类很多,指针操作的速度也不一样。由于第五种指针“通用指针”运行速度慢,同时占用大量程序空间,所以在MCU中一般需要少用指针或者使用特定类型的指针18。(4)参数传递。在计算机实现的TCP/IP源代码中,通常传输的参数很多,而单片机中允许传输的参数是有限的(因为RAM的限制),参数是同时传输的。交付的过程浪费了代码空间,降低了单片机的执行速度。因此,在单片机的实现中,一般不能传递太多的参数,而是使用常用的全局变量来实现调用过程。这样的,计算机的源程序是相对独立的,受其他函数或变量的影响很小,而且是单芯片的电脑中的程序相互之间非常依赖。因为某个数据和

24、某个变量在一个单片机里往往是共享的18。(5)协议支持。一个完整的TCP/PI协议在一台计算机上可以支持,但在单片机上做不到。这是因为单片机根本没有足够的代码空间来支持这些协议。与需求相关的部分一般在单片机中实现,不用的协议一般不嵌入。一般只能在单片机中实现:ARP,ip,ICMP,TCP DP,而更高层的协议,如:,一般不需要嵌入SMTP和TFP。单片机应用的TCP/PI协议多用于完成数据采集和数据传输,而不是网页浏览和文件传输。就某个协议来说,比如ARP协议,UNIX系统支持以太网、令牌环等网络的ARP。在这个系统中,单片机只支持以太网,也就是说,可以简化某种协议。IP包最大可以考虑65K

25、,可以分段传输,但是单片机中容纳不了这么大的数据包,一般不支持分段。一般MCU发送小数据包是为了避免分段。(6)使用UDP或TCP。与UDP相比,TCP的可靠性取决于许多复杂的措施。而成本的增加是以牺牲为代价的。UDP本身没有连通性,不可靠,但是对传输速率没有阻碍。阻隔,适合数据率小的应用;TCP提供可靠的数据流,但是处理成本高,从而降低了传输速率。UDP不可靠,不能简化,以至于被误解。真正使用UDP的时候,会是通常需要在应用层添加代码来提高UDP的可靠性。嵌入式设计师经常会面对很多工具。系统的特殊要求,比如代码不能很长,或者传输速率是关键,或者可靠性最重要等等。,需要非常很好的分析和妥协。考

26、虑到单片机运行速度慢,数据量小,使用UDP。作为单片机应用的传输控制层协议,可以在应用层添加相应的可靠性代码。满足测控应用的要求。(7)硬件接口。在电脑中,网卡的驱动相对简单,但在单片机中要处理的事情更多。比如缓冲区溢出,电脑里有些程序根本不处理溢出代码。因为电脑运行速度快,网卡缓冲区溢出的情况几乎不会发生。计算机经常使用即插即用模式驱动网卡,而单片机不能,因为即插即用需要大量代码来实现,一般使用跳线模式。电脑中一般用16位DMA驱动NE2000网卡,但8位单片机只能用8位DMA。2.5本章概述本章介绍了TCP/PI的网络体系结构,重点介绍了嵌入式设备接入互联网的特点,并简要说明了以太网80.

27、23标准。第三章TCP/IP协议分析3.1 TCP/IP协议的封装和共享TCP/IP协议采用分层结构,其实现也采用分层实现方法。在实现的过程中,首先要了解封装和解复用的概念。包装当应用程序使用UDP传输数据时,数据被发送到协议栈,然后通过每一层,直到作为一串比特流被发送到网络。每一层都会在接收到的数据中添加一些报头信息(有时是尾部信息)。这个过程称为封装。2sI如图3.1。UDP传输的数据单元简称UDP段或UDP段。通过IP传输到网络接口层的数据单元称为PI数据报。通过以太网传输的比特流也称为帧。分享当目的主机接收到一个以太网数据帧时,数据从协议栈底层开始上升,同时去除各层协议添加的报文头。以

28、太网帧应该检查报头中的帧类型字段,IP应该检查报头中的协议值字段,TCP和UDP应该检查报头中的端口号字段,以确定数据属于哪一层。这个过程被称为多路分解。如图3.2 25所示:3.2TCP/PI协议分析3.21单片机的TCP/IP体系结构如前所述,TCP/PI协议是一个协议家族,协议种类繁多。图3.3显示了本文研究的协议以及它们之间的关系3334。TCP和UDP是最著名的两种传输层协议,它们都使用IP作为网络层协议。TCP使用不可靠的PI服务,但它提供可靠的传输层服务。UDP是一个应用程序。以及发送和接收数据报。与TCP不同,UDP是不可靠的,它不能保证数据报的安全性。无误地到达目的地。PI是

29、网络层的主要协议,同时被TCP和UDP使用。三氯苯酚UDP和UDP的每组数据通过端系统和每个中间路由器中的PI层在互联网中传输。输了。CIMP是PI协议的附属协议,IP层使用它与其它主机或路由器交换错误消息。和其他重要信息。以太网使用ARP协议来转换PI层和网络接口层使用的地址。3.22互联网协议IP1.1的结构。互联网协议(Internet Protocol)IP TCP/IP协议族是核心协议。的所有TCP、UDP、ICMP和IGMP所有数据都以IP数据报格式传输。IP报头结构中的数据定义了IP的功能。IP数据报的格式如表3-1所示314147。普通IP报头长度为20字节,除了非可选字段。这

30、些字段解释如下:版本-IP头中的前4位标识IP的运行版本,当前协议版本号为4,因此在使用IP时也称为IPv4。报头长度-指报头中32位字的数量,包括任何选项。因为它是4位字段,所以最长的报头是60字节。公共IP数据报(没有任何选项)的字段是5。服务类型-包括一系列标志,可以保证优先级、延迟和吞吐量与消息数量的可靠性参数。本条为通用服务,4位均为0。总长度字段-指整个IP数据报的长度,以字节为单位。标志字段和片偏移一对一标识字段唯一地标识由主机发送的每个数据报。通常发送一条消息,其值将增加1。字段和切片偏移用于切片和重组,在这个系统中,数据没有分段或偏移,所以设置为0X4000。生存时间(TTL

31、)-生存时间字段设置数据报可以通过的最大路由器数量。它指定了数据报的生命周期。TTL的初始值由源主机设置(通常是32或64),一旦通过处理它的路由器,它的值就减1。当该字段的值为0时,数据报将被丢弃,并发送CIMP消息通知源主机。协议字段可以识别哪个协议向PI传输数据,比如UDP和TCP。ICMP .报头校验和字段-是根据PI报头计算的校验和代码。它不计算标题后的数据行。CIMP、IGMP、UDP和TCP都在各自的报头中包含同步覆盖报头和。数据的校验和代码。2.2的计算。IP校验和1321要计算数据报的IP校验和,首先将校验和字段设置为0。然后,报头中的每个16位被二进制补码求和(整个报头被视

32、为一串16位字),结果被存储在校验和字段中。当接收到Pl数据报时,报头中的每个16位也与其二进制补码相加。因为接收方在计算过程中会将校验和包含在发送方的报头中,所以如果传输过程中报头没有错误,接收方的计算结果应该是全1。如果结果不是全1(即校验和错误),那么PI将丢弃接收到的数据报。但不会生成错误消息,上层会找到丢失的数据报并重新传输。CIMP、IGMP、UDP和TCP都使用相同的校验和算法。3.3的功能。互联网协议(Internet Protocol)IP报头包含使一些重要网络功能成为可能的必要信息,包括:(1)寻址和路由(2)细分和重组(3)传输过程中数据损坏的检测和纠正。尽管有这些功能,

33、PI毕竟只是一个互联网协议。为了使它工作,它必须与协议与链路层协议一起工作。因为它不提供数据报是否到达目的机器的检测。系统,并且不检测数据报是否损坏或丢失。3.2.3用户数据报协议1.1的结构。用户数据报协议(User Datagram Protocol)UDP(用户数据报协议)是一种简单的面向数据报的传输层协议。用户数据报协议(User Datagram Protocol)它提供基本的低延迟传输。这些字段解释如下:UDP端口号-16位数字的源端口号是源计算机上的连接编号。源端口号和源IP地址用作消息的返回地址。UDP端口号-16位目的端口号是目的计算机上的连接编号。目的端口号用于将到达目的地

34、的消息转发给正确的应用程序。UDP协议使用端口号为不同的应用预留自己的数据传输通道。UDP和TCP协议正是使用这种机制来支持多个应用程序同时发送和接收数据。发送方通过源端口发送UDP数据报,而接收方通过目的端口发送UDP数据报。接收数据。UDP长度- UDP长度字段是指UDP报头和UDP数据的字节长度。词段的最小值是8个字节。Pl数据报长度是指数据报的全长,所以UDP数据报长度是全长减去IP头的长度。UDP校验和一对一校验和是一个16位的错误检查字段,根据消息的内容进行计算。UDP校验和覆盖UDP头和UDP数据(PI头的校验和只覆盖IP头,不覆盖PI数据报中的任何数据)。包括三个部分:伪报头、

35、UDP报头和应用层数据,UDP报头的前12个字节是伪报头。2.2的计算。UDP校验和32UDP校验和的基本计算方法类似于PI报头校验和(16位字的二进制逆码和)的系统,但两者有区别。首先,UDP数据报的长度可以是奇数。字节,但校验和算法是加几个16位字。解决方法是在必要时在末尾填充字节O。其次,UDP数据报和TCP数据报都包含一个12字节的伪报头,用于计算IP头的一些字段,包括PI头中的32位源IP地址和32位目的IP地址。3.3的特点。用户数据报协议(User Datagram Protocol)UDP被设计成一种有效且最小的传输协议。它只包括用于转发数据报的消息。使用足够的(端口号)信息并

36、执行一些错误检查。UDP用于尽力传输。发送数据报,由于某种原因传输失败,数据报被丢弃,不尝试重新传输。UDP通常被认为是不可靠的,因为它没有任何TCP可靠性机制。但是UDP具有TCP无法比拟的速度优势。尽管TCP协议中嵌入了各种安全功能,但是但在实际执行过程中,会占用大量的系统开销,无疑会严重影响速度。计数器UDP取消了可靠的信息传输机制,将安全和排序的功能转移给上层应用。,大大减少了执行时间,保证了速度。UDP最适合小型传输(即单独的消息)。因此,在嵌入式系统的应用中,UDP协议应该是应用最广泛的。3 . 2 . 4互联网控制消息协议ICMP(互联网控制消息协议)消息分为两类,错误报告消息和

37、查询消息。它通常被认为是Pl层的一个组成部分,传递错误消息以与其他需要注意的信息进行通信。ICMP消息通常由IP层或更高的协议(UDP或TCP)使用。ICMP消息在IP数据报部分传输。如图3.4 42所示。ICMP消息的格式如表3-3所示3142。所有消息的前4个字节是相同的,但其余的字节互不相同。类型字段可以有15个不同的值来描述特定类型的ICMP消息。在这个系统中,它主要响应PING命令。PING程序的目的是测试是否可以到达另一台主机。程序向主机发送CIMP回应请求消息,并等待返回的CIMP回应回复。使用PING命令的ICMP消息的格式如表3-4所示。类型8表示发送PING,0表示响应PI

38、NG。代码0是PING命令。并且标志序列号用于使响应对应于发送的数据。可选数据是任意的,但是响应和发送的数据是相同的。校验和字段覆盖整个CIMP消息。使用的算法与IP报头校验和算法相同。3.25地址解析协议ARP当一台主机向同一局域网中的另一台主机发送以太网数据帧时,目的接口根据48位以太网地址确定。设备驱动程序从不检查IP数据报中的目的IP地址。地址解析为这两种不同的地址形式提供映射:32位PI地址和数据链路层使用的任何类型的地址33。ARP向以太网上的每台主机发送称为ARP请求的以太网数据帧。这个过程叫做广播,ARP请求数据帧中包含目的主机的PI地址,意思是“如果你是这个IP地址的拥有者,

39、请回答你的硬件地址”,而此时发送的目的物理地址是FFFFFFFFFFFF。接收到此广播消息后,目的主机的ARP层识别出发送方在请求其PI地址,因此发送ARP回复。这个ARP回复包含IP地址和相应的硬件地址43。在以太网上解析PI地址时,ARP请求和回复包的格式如图3.5 3136所示。以太网报头中的前两个字段是以太网的源地址和目的地址。目的地全为1的特殊地址是广播地址。电缆上的所有以太网接口都应该接收广播数据帧。双字节以太网帧类型表示以下数据类型。对于ARP请求或回复,该字段的值为0X0806。硬件类型字段指示硬件地址的类型。它的值1表示以太网地址。类型字段指示要映射的协议地址的类型,值0 x

40、 80 o指示PI地址。接下来的两个1字节字段,硬件地址长度和协议地址长度,分别以字节表示硬件地址和协议地址的长度。对于以太网上PI地址的ARP请求或响应,它们的值分别是6和4。两个字节的动作字段指示四种类型的操作,它们是ARP请求(值为)L,ARP应该回答(值2)、RARP请求(值3)和RARP回复(值4)。此字段是必需的,因为ARP请求和ARP回复的帧类型字段值相同。接下来的四个字段是发送方的以太网地址、发送方的PI地址、目的地的以太网地址和目的地的Pl地址。对于ARP请求,除了目的硬件地址之外的所有字段都应该填入值。当系统接收到目的地是自己机器的ARP请求消息时,它填充硬件地址,然后用两

41、个目的地址替换两个发送方地址,设置操作字段为2,最后发送。送回去。3.3本章概述本章主要分析了TCP/PI协议的结构,介绍了单片机TCP/PI的协议框架,并逐层介绍了其主要协议,包括协议的原理以及协议之间的交互。第4章系统硬件组成4.1系统硬件组成为了简化本系统的硬件接口,降低成本,缩短开发周期,应尽可能减少外围设备。系统的CPU为AT89C52,有SK字节的ROM和256字节的RAM。片外RAM使用62256,有32K字节的使用空间。选择这两种芯片主要是为简化TCP/PI协议栈的嵌入提供条件,同时保证较大的数据处理空间。芯片DM900O是主要的工作部件,可以发送和接收网络数据。过滤波变压器P

42、H163112,用于转换和过滤网络上的脉冲。网络通过iobase-t电缆连接到集线器。图4.1是该系统的硬件框图。4.2网络连接网络单片机通过网卡芯片DM90OO接入以太网。下面主要阐述网卡芯片。DM9000的工作原理,单片机对DM9000的控制原理和初始化步骤,并提供DM9000与单片机的接口方案。4.2.1网卡芯片DM90001.1简介。DM9000DM9000芯片是Davicom公司生产的以太网控制芯片,可用于网络中自动获取与设定MAC地址一致的PI包,完成PI包的发送和接收,采用LQFPl00管。foot封装集成16K SRAM,提供8位和16位接口。在本主题中在8位模式下,引脚封装如

43、图4.2 40所示。DM9000的技术特征如下:()L封装采用LQFP100引脚封装,占用面积和高度小。(2)使用电压0.33V,最大电流消耗100mA,非常省电。(3)MEC连接模式有isa bit/isa 16 bit/ups bit/up16 bit/up32 bit/68k模式。类型,并支持3.3V和SV的1/0控制。方便连接不同电压和接口的MCU。4)设置10/10OMPHY支持多种连接方式:电口支持10 mmhalf/10 mmfull。/100 mmhal/100 mmful/AUTO(N向);另外提供100M半/200M光口。满了.(5)支持EEPROM(93C46),可以存储

44、系统需要的信息。2.两个人的登记簿。DM9000DM9000中有许多寄存器,这里只列出了与该系统相关的寄存器,如表4-1 40所示。3.DM9000读写寄存器模式DM9000控制寄存器的读写方式,非常简单。DM90OO有两个端口:数据和地址。这两个端口由CMD引脚控制。如果CMD连接到高电平,它是控制数据端口,当CMD连接到低电平时,它是控制地址端口。要读取或写入任何寄存器,方法如下:(1)用AEN和SA49启用DMg000。(2)将CMD引脚设置为低电位。(3)将待读写寄存器的地址填入地址端口(IOW#)。(4)将CMD引脚设置为高电位。5)将要读取或写入的寄存器的数据填充或读取到数据端口(

45、IOW#,IOR#)。4.4的工作原理。DM9000内存DM9000总共存储16k字节(000Oh-3FFFh)的存储器,读写存储器由两个寄存器MWCMD和MRCMD控制。MWRL、MWRH寄存器提供当前写入存储器的位置,MRRL、MRRH寄存器提供当前读取存储器的位置。根据工作模式,存储器每次移动一个字节(8位)、两个字节(16位)或四个字节(32位)。5.DM9000初始化步骤(l)在DM9000上执行软件复位。(2)清除中断设置,避免DM9000因中断而异常初始化。(3)设置DM900O相关接口(PHY、外部MII、反向MII)。(4)设置物理地址位置。(5)设置组播设置。(6)其他相关

46、设置。(7)打开接收数据功能。6.分组传输的工作原理默认值为3KByt。(O000hOBFFh)用于传输功能。发送数据包的过程如下:()l填充要发送到TXPLL和TXPLH寄存器的包的长度。(2)要发送的包的数据由MWCMD寄存器填入存储器。(3) DM9000通过TCR寄存器发送包数据。(4)如果存储的写入位置超过OBFFh,下一个位置将自动恢复到0000h。7.数据包接收的工作原理接收功能的存储器默认值为13KByt(OC00h-03FFh)。在每个包中,将有4个字节来存储一些包相关信息。第一个字节是数据包是否已经存储在接收中。是,如果值为“0h1”,则该数据包已经存储在接收存储器中;如果

47、是“0h0”,则接收RAM没有。存储了数据包。在读取其他字节之前,有必要确定第一个字节。是“01h”吗?第二个字节是这个包的一些相关信息,其格式类似于RSR寄存器的格式。第3和第4个字节是该数据包的长度。如图4.3所示接收数据包。130!。接收数据包的过程如下:()l检查MRCMDX寄存器的值是否为01h,如果是,则有包要读取。(2)读取MRXMD,读入第一个4字节的包信息。(3)从第一个四字节包信息中获得包长度(以字节为单位),并连续读取它。MRCMD,将包数据移动到系统内存。8.DM90001/0模式的设置39DM9000支持三种I/O模式,即Byte/word/Dword,还支持读写数据

48、。8位/16位/32位,硬件和软件需要相互配合(即设置方式需要一致)。硬件由两个引脚WAKEUP和EEDO的电平组合设置。如图4.4 39所示。滤波变压器在该系统中,10/100滤波变压器PH163112用于以太网控制芯片和外部网络之间。连接。PH163n2将以太网控制芯片与外部网络隔离,保护系统电路完成信号的传输。其结构如图4.6所示。4.2.3单片机与网卡芯片DM9000接口示意图图4.7是该系统中单片机与DM9000的接口示意图。MCU的数据线POP7与DM9000的DO-D7数据相连,用于MCU读写网卡芯片DM9000的数据。地址AZ接DM9000的CMD引脚,使MCU可以访问网卡芯片

49、的部分寄存器;AEN是DMgO00的使能线,连接到单片机的片选线上;将SA4SA7接地,将SA8和SA9连接到DVDD。此时DM9000地址端口的地址=nCS地址+0 x0,DM9000数据端口的地址=nCS地址+0 x 4;IOR#和IOW#分别连接到MCU的RD和WR。4.3本章概述本章主要讨论了该系统的硬件连接,介绍了网络芯片DM900O的工作原理以及单片机与DM9000的硬件接口,并简要介绍了脉冲变压器PH163112的结构。第五章51单片机TCP/IP协议的嵌入式实现介绍TCP/PI协议采用分层结构。因此,我们也采用分层实现的方法来实现TCP/PI协议。物理层具体的程序实现是以太网驱

50、动,解决以太网数据的发送和接收问题。ARP由于以太网报文的发送和接收必须依赖物理地址,而PI协议采用的是PI地址,这就涉及到两个地址相互转换的问题,即我们需要实现ARP,而要实现ARP,我们只需要向局域网广播ARP请求,接收ARP回复,响应ARP请求。PI协议-PI协议可以找到路径并传输要发送的数据包消息。程序设计的关键是实现一个高效、通用的PI验证程序。由于嵌入式系统传输的数据量较小,为了简化程序,本系统不提供PI切片功能。CIMPICMP协议有多种数据包格式,我们实现了它最常用的响应请求和响应消息(即PING程序)。UDPUDP协议基于PI协议,和PI协议一样提供无连接的数据传输。因为不需

51、要考虑建立连接和等待确认,所以它的传输速度比较快。UDP检查在程序设计中是一个特殊的地方。它不遵循严格的层次模型,需要和一个来自PI层的伪头一起检查。本系统要实现的是在单片机中嵌入TCP/PI协议,上位机可以使用TCP/PI协议2在网络上与单片机进行通信。程序是用C51语言编写的。该系统支持PI、ARP、CIMP和UDP协议。5.2总体方案设计5.2.1总体设计思想1.介绍结构化数据类型结构是为了便于操作而组合在一起的一个或多个变量。结构中变量的数据类型可以不同,变量按顺序存储在内存中。因为以太网协议帧和TCP/PI协议包含不同数据类型的信息,而这些信息通常是按顺序排列的。基于这一特点,为了在

52、程序中方便地操作信息,采用数据类型结构来表示TCP/PI协议的各级信息,以便于协议的编程和嵌入式实现。2.介绍通用数据类型共享类似于结构,不同于结构的是同一时间只有一个成员可用。也就是说,公共团体的所有成员占用相同的存储区域。在TCP/PI单片机的嵌入式实现中,数据封装和共享是关键。但是,在封装和共享数据时,经常需要复制和重新组织数据。由于单片机系统本身的数据存储空间相对有限,所以本设计中所有协议都包含在一个公共体中,所有协议报文共享一个存储区。这样既节省了系统的数据存储空间,又避免了重复的数据重复。本设计中使用的公共几何体定义如下:union netcard struct ucharbyte

53、buf500;字节;struct unitwordbuf250;字数:结构以太网框架;StructArpArpFrame:结构IcmpFrame框架:结构PIPFrame:Struetudp UdPFrame:StruetIpPacketIpPaeket:;3.总体程序流程图TCP/PI的总体程序流程图如图5.1所示。5.3DM9000驱动器设计主要功能描述DM9000驱动程序在本设计中有两个目的:发送和接收Pl消息;以及发送和接收ARP消息。驱动程序的作用是将待发送的数据包按照规定的格式写入芯片存储器,并启动发送命令。DM9000会自动将数据包转换成物理帧格式,并在物理信道上传输。相反,DM

54、9000接收到物理信号后,将其还原为数据,并按照指定的格式存储在内存中,以便主机程序访问。简而言之,DM9000完成了数据包和电信号之间的相互转换。以太网协议由芯片硬件自动完成,无需考虑。该驱动程序由三部分组成:芯片初始化、数据包收集和数据包发送。具体实现功能如下:以太网报头的结构定义如下:以太网ucharRecstatus:UCharRecInfo*/接收状态*/*/数据包信息*/单位长度:单元DestMacld3:单元源Macld 3:UnitNextProtocalUchar包500;*/以字节为单位的以太网长度*/*/目标网卡的地址*/*源网卡地址*/*下一层协议*/*/包的容量*/D

55、M9000的初始化在DM9000可以正常工作之前,它需要进行一些相关的设置,以便正常工作。这个过程被称为初始化39:1.PHY开篇写寄存器(GPCR,0 x01):写寄存器(GPR,0 x00):phy-write(0 x 04、0 x 0461):/10M全双工Phy-rite(0 x00、0 x 0100);2.软件复位写寄存器(NCR,ox03);/复位DM9000软件。延迟(30):/等待DM9000复位完成写寄存器(NCR,0 x00):/将DM9000恢复到正常工作状态。写寄存器(NCR,0 x03):/对DMg000执行软件复位。延迟(30);/等待DM9000复位完成写寄存器(

56、NCR,0 x00):/将DM9000恢复到正常工作状态。延迟(5):上述软件复位操作重复两次,以确保DM90OO复位成功。3.清除中断设置。写寄存器(XMR,0 x 80);/关闭DM9000的中断功能,清除中断设置,避免DM900O因中断而异常初始化。4.设置本地物理地址。set _ 9000 MAC();/设置本地物理地址5.其他相关设置读寄存器(NSR);写寄存器(TCR,0 x 00);/清除TCR相关信息Read-register(ROCR):/清除ROCR相关信息。写寄存器(ISR,0 x0f/清除ISR相关信息写寄存器(IMR,ox83):6.打开接收数据的功能。写寄存器(RC

57、R,0 x39):/打开接收功能。5.3.3收集包子的程序DM9000接收的数据包将存储在DM9000接收存储器的0C00h-3FFFh中。如果读取位置超过3FFFh,DM90OO会自动将位置移动到OC0h0。在每个包中,将有4个字节来存储一些与包相关的信息。第一个字节是数据包是否已经存储在接收存储器中。如果该值为“01h”,则意味着该分组已经被存储在接收存储器中,但是没有分组被存储。在读取其他字节之前,有必要确定第二个字节。就是这个包的一些相关信息,它的格式就像Byte,就是这个包的长度。DM9000的收包流程如图5.2所示:分包子程序在发送数据包之前,数据包数据应存储在DM9000的发送存

58、储器中,时间为0000hOBFFh。如果写入位置超过OBFFh,DMgO00会自动将位置移动到000Oh的位置。数据包数量根据MWCMD中存储的数据,DM9000将自动将其数据存储在其传输存储器中。此外,它还需要发送的数据包大小存储在低位字节的TXPLL和高位字节的txplh中。然后,TCR位()被设置为1,包传输在此时开始。传输完成后,传输是否成功的信息将放入TSRI和TSRII中。顺序是tsri- tsrii- tsri- tsrii。因此,根据NSR比特2-3,现在需要判断是TSRI还是TSRII传输完成。DM9000的签约过程如图5.3所示:5.4TCP/IP协议设计5.4.1ARP模

59、块设计当一台主机向同一局域网上的另一台主机发送以太网数据帧时,目的接口是根据48位以太网地址确定的,设备驱动程序从不检查LP数据报中的目的EP地址。ARP(地址解析)模块的功能提供了两种不同地址形式的映射:32位Pl地址和48位以太网地址。ARP报文分为请求报文和响应报文。请求消息用于获取目的主机的物理地址;响应消息用于回答该机器的物理地址。ARP报文结构定义如下:struct ARP unit ether Head91;/*以太网报头*/unit硬件类型;/*硬件类型*/单元协议类型:/*协议类型*/Uchar硬件镜头;/*硬件长度*/Uchar协议长度:/*协议长度*/单位:/*操作*/U

60、nit SourceMacld3:/*源网卡地址*/unit source IP2;/*源xP地址*/单元DestMacldl31:/*目标NIC地址单位TLD 2:/*目的IP地址;1.主要功能描述该模块由三个函数组成,分别是Arp请求函数Arp_RequestO和ARP回复函数。ARP_answer和ARP处理函数ArP_Process()。下表解释了具体的字母:2.ARP请求子程序当要发送的以太网帧不知道目的地的物理地址时,就需要发送一个请求消息,这个请求消息很宽要发送请求,需要调用Arp_Request()函数。函数的作用是:发送一个Arp请求消息来解析指定的PI地址。当封装到以太网帧

温馨提示

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

评论

0/150

提交评论