欢迎来到天天文库
浏览记录
ID:46496927
大小:82.50 KB
页数:15页
时间:2019-11-24
《uIPTCPIP协议栈在51系列单片机上的应用》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、uIPTCP/IP协议栈在51系列单片机上的应用ApplicationofuIPTCP/IPStackin51MCU邓治国张维新摘要:uIP协议栈是一种免费的可实现的极小的TCP/IP协议栈,可以使用于由8位或16位微处理器构建的嵌入式系统。本文分析了uIP协议栈的结构和应用接口,并讨论了如何将其应用到51系列单片机上。关键词:TCP/IP单片机嵌入式系统中图分类号:TP311.54文献标识码:Abstract:TheuIPTCP/IPstackisafreesmallimplementationofTCP/IPprotocolsuiteintendedforembe
2、ddedsystemsrunningonlow-end8or16bitmicrocontrollers.ThisdocumentdescribesthearchitectureandapplicationinterfaceofuIPstack,anddiscusseshowtouseuIPTCP/IPstackin51MCU.Keywords:TCP/IPMCUembeddedsystem一引言近几年来,人们对连接各种装置到一个现有的IP网络例如因特网上产生了浓厚的兴趣。为了可以通过因特网通讯,一个可实现的TCP/IP协议栈是必须的。对于由32位嵌入式处理器构建的中、
3、高端网络接入嵌入式系统中,通常会运行一个集成有TCP/IP协议栈的操作系统。但是对于由8位和16位低端处理器构建的系统,由于其所具有的处理能力和资源十分有限,通常不运行操作系统,这就要求系统开发者根据应用的要求以及所选用的处理器的实际情况构建口己的TCP/IP协议栈。而TCP/IP协议的透明性掩盖了其实现的复杂性,从无到有构建一个协议栈是一件艰巨的任务,并且缺少有效的调试工具。uIPTCP/IP协议栈是使用于低端8位或16位微处理器构建的嵌入式系统的一个可实现的极小的TCP/IP协议栈。它可以自由分发和使用于商业和非商业口的。uIP使用C语言编写,使其方便于移植。并且
4、uIP协议栈的代码大小和RAM的需求比其它一般的TCP/IP栈要小,这就使得它可以方便的应用到各种低端系统上。本文将简要描述uIP的实现方法,分析uIP协议栈的应用接口,并讨论如何将其应用到51系列单片机上。二uIP协议栈的实现方法简述uIP实现了TCP/IP协议集的四个基本协议:ARP地址解析协议,IP网际互联协议,ICMP网络控制报文协议和TCP传输控制协议。为了在8位16位处理器上应用,uIP协议栈在各层协议实现时采用有针对性的方法,保持代码人小和存储器使用量最小。1实现ARP地址解析协议时为了节省存储器,ARP应答包直接覆盖ARP请求包。2实现IP网络协议时对
5、原协议进行了极大的简化,它没有实现分片和重组。3实现ICMP网络控制报文协议时,只实现echo(回响)服务。uIP在生成回响报文时并不重新分配存储器空间,而是直接修改echo请求报文来生成回响报文。将ICMP类型字段从"echo"类型改变成“echoreply"类型,重新计算校验和修改校验和字段。4uIP里的TCP没有实现发送和接收数据的滑动窗口。每个TCP连接的状态由uip_conn结构保存,uip_conn结构包括当地和远端的TCP端口编号,远程主机的IP地址,重发时I'可值,上一段重发的编号,和连接的段的最大尺寸等信息。一个uip_conn结构数组用于保存所有的
6、连接,数组的人小为支持的同时连接的最大数量。为了减少储存器的使用量,在处理重发吋uIP并不缓存发送的数据包,而是由应用程序在需要重发时重新牛成发送的数据。三uIP协议栈的接口UIP协议栈为了具有最人的通用性,在实现时将底层硬件驱动和顶层应用层之外的所有协议集“打包“在一个“库“里O协议栈通过接口与底层硬件和顶层应用“通信“。通过这种方式,UIP具有极高的通用性和独立性,移植到不同系统和实现不同的应用都很方便,很好的体现了TCP/IP协议平台无关性的特点ouIP协议栈与系统底层和应用程序之间的接口关系如图(一)所示:1uIP协议栈与系统底层的接口uIP与系统底层的接口包
7、括与设备驱动的接口和与系统定时器的接口两类。应用耒uIP协i1.1uIP与设备驱动接口uIP通过函数uip_input()和全局变量uip_buf、uip_len来实现与设备驱动的接口。uip_buf用于存放接收到白麻戳跚。数据包,为了减少存储器的使用,接收数据包和发送数据包使用相同的缓冲区。uipjen表明接收发送缓冲区里的数据长度,通过判断uipjen的值是否为0来判断是否接册刼册册3据,是否有数据要发送。当设备驱动接收到一禦窥麓煖u网络设备驱动输入包缓存里(uip_buf)后,应该调用uip_input()函数。uip_input()函数是uI
此文档下载收益归作者所有