欢迎来到天天文库
浏览记录
ID:49503073
大小:277.00 KB
页数:18页
时间:2020-03-02
《可运行在单片机上的UDP通讯协议的实现.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、可运行在单片机上的UDP通讯协议的实现2010年04月22日星期四19:46本文可以说是在我之前写的《单片机驱动DM9000网卡芯片(详细调试过程)》基础上增加了一些协议代码來实现具体CDP通信传输。在这里我巫新强调一下,上篇文章是在介绍如何调硬件,目的是为了让应用程序可以使用这个芯片。而具体的使用就是使用三个函数:初始化、数据包发送和数据包接收。数据包接收是否基于中断还需要用户根据需要白行设置。总Z,我们可以通过上篇文章了解到,对硬件的调试可以得到这三个有用的函数。不同网卡芯片的驱动可能略有不同。这里不一一例举,所以首先需要说明的是,木文所讲的内容主要是如何用C代码来实现
2、协议,并利用数拥包发送、接收函数来实现通讯,基木是与硬件无关的。除中断外,本文唯一与硬件相关的地方就是大端或小端格式,这也在之前的文章中冇提到过,在本文涉及到的地方会再次说明。也就是说使用不同网卡芯片都可以应川本文所写的代码。其次,木文所写出的协议部分是已经过简化的,代码较少,不需要操作系统支持。但仅能实现数据的收发,而且没冇验证可靠性(需要时可自行验证)。适合用在资源有限的单片机系统中,或者需要用网络代替RS232通信的情况,当然也可以在操作系统中使用。可根据情况来选择或增减。顺便提一下资源要求:ram最好大于2KB,实在不行也得要1KB(需要一定技巧,传输的数据内容很少
3、,不需要全部读出数据包的情况);flash或r()ni4KB以上,基木的单片机都能达到;可用10怎么也得冇12个,控制个一般的芯片也需要这么多的。在进行正文之前,我再啰嗦儿何,本文是讲协议的实现。这里的协议部分可以从《TCP/IP协议第一卷——协议》这本书中看到最详细最权威的讲解,如果冇兴.趣研究协议的话可以参考这木书(网上可以找到电子版的)。下面进入主题。1、UDP通讯的实现过程简述涉及到协议部分,很多人会感觉摸不清头绪,不知如何卜手。所以看一看上而说的那本书还是很有帮助的。当然看了以下部分,你也会对协议有些了解的。(1)初始化网卡芯片和其他外设(在网卡驱动部分已经做好了
4、,这里重新说了一遍);(2)如①通讯获得目标机地址信息;(3)udp通讯收发数据(利用II〉协议作媒介)。看到这会不会冇些失望呢,可实际上udp通讯就是这么简单的。UDP是UserDatagramProtocol的简称,中文名是用户数拥包协议,是0S1参考模型中一种无连接的传输层协议,提供面向爭务的简单不可靠信息传送服务(这句话是在网上抄的)。说的再简单点,udp通讯与RS232-样,只管将数据发送出去而不管对方是否正确的接收到了。在一些简单应用中,我们似乎也不大关心数据是否被对方正确的接收到了,因为传输过程中数据包损坏的情况也不多,肯定能被正确的接收到。或者我们冇其他的办
5、法去验证。这和TCP协议不一样,TCP协议是可靠的链接,发送…次数拥需要三次握手来反复确认数据被正确无谋的接收到了,否则会重新发送一遍,实现起来比较繁琐。有点跑题,不过看到这里应该可以明白udp协议是一种很简单的网络通讯协议。简单解释一下上而三个过程。初始化不用解释了。ARP通讯是整个网络传输的开始,而H只需要运行一次。在《单片机驱动DM9000网卡芯片(详细调试过程)【下】》最后的部分已经讲清楚了。主要是解释第三条,u(lp通讯收发数据。OSI参考模型中arp协议属于链路层(最底层),ip协议比“rp协议高一层属于网络层(这一层还包括icmp和igmp协议),在往上一层是
6、运输层,包括top协议和udp协议。但是按我的理解,从数据包格式的角度看,我把am协议号ip协议放在同一级别,我们接收到的数据包中的前儿十个字节用来判断是arp协议还是ip协议,也就是说这两个协议是互补相容的(下而程序中会做个过滤,数据包只接收arp或ip协议,最后处理的数据包中只能是吐p协议或者是ip协议)。这种互补相容的协议同样也适用于tcp协议和udp协议上。既然彳j互不相容的协议,那么也就有相容的协议了,这种相容的协议就是指一个协议必须依赖于另一种协议才能实现,udp协议就是这样。我们可以这样理解,ip协议就像一件外套,udp协议好比一件衬衫,而真正的数拥可以看做是
7、穿衣服的人。穿衣服的人先穿上衬衫再穿外套,这两个协议之间的关系就是这样:udp协议将数据包起来,ip协议乂将udp协议连同其中的数据一起包起來。也就是说,实际的数据经过udp协议的包装,在经过ip协议的包装Z后才能发送出去。虽然看起来有些繁琐,但实际计算机端就是这样识别数据的。所谓的包装就是在被包装数据前加上一小段首部数据,一般儿十个字节左右。2、ARP协议的实现这部分内容在《单片机驱动DM9000网卡芯片(详细调试过程)【下】》的后半部分已经讲过,这里为了完整性再垂复一次。在写所有协议Z前,有些全局变量需要事先设
此文档下载收益归作者所有