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