微软公司宣布不再支持你正在使用的 IE浏览器,这会严重影响浏览网页,请使用微软最新的Edge浏览器
厂商专区
产品/技术
应用分类

基于TCP/IP协议在VRS51单片机上的实现方案

2013-09-23 10:55 来源:电源网 编辑:娣雾儿

引言

随着人们对信息化程度的要求不断提高, 设备上网已经成为一个趋势。32位机资源丰富,上网方案也较为成熟,但成本相对较高,因而价位偏低的8位机上网方案成为研究的热点。但是,8位机资源有限,因此在实现8位机以太网连接时,一定要考虑周全。本文介绍在VRS51L3074上实现TCP/IP协议栈uIP的移植,成功实现了socket通信。

硬件平台

本方案的硬件平台主要由VRS51L3074和CS8900A组成,经网络变压器的隔离,CS8900A与网络接口RJ-45连接上,这样整个系统就可以连接到Ethernet。数据输入可由串口传递给系统。

嵌入式TCP/IP协议栈uIP

TCP/IP是一个协议族,它是一个四层协议模型,包括应用层、传输层、网络层和网络接口层。应用层定义清晰的会话过程,HTTP、FTP、Telnet和SMTP等都属于应用层协议;传输层提供端到端的通信,该协议有传输控制协议(TCP)和用户数据报协议(UDP);网络层负责数据打包和逻辑寻址,IP、ICMP和ARP等协议都属于网络层;网络接口层负责在源和目的节点间线路上进行无差错的传输数据,具有流量控制等功能。

TCP(Transmission Control Protocol)协议是传输层的协议之一,它提供高可靠性的数据通信。TCP的主要工作是把应用程序交给的数据分成适当的小块交给下面的网络层,确认收到的分组,设置发送最后确认分组的超时时钟等。TCP是uIP重点实现的协议。为了减少存储器空间占用,uIP没有实现TCP发送和接收数据的窗口调整,且不会缓存收到的TCP段,而是立即交给应用程序处理。重发也是由应用程序实现的。在输出数据时,每一个连接只能有一个正在传输的TCP段。

IP(Internet Protocol网际协议)是TCP/IP协议族中最为核心的协议,提供不可靠的无连接的数据报传送服务。所有的TCP、UDP、ICMP及IGMP数据都是以IP数据报格式传输的。uIP的IP协议主要负责封装TCP帧、验证输入包IP头的正确性、接受IP数据报进行处理并向上层协议提交以及TCP与ICMP之间的复用数据包。为了节省占用空间,uIP1.0只支持一个数据报的分片和重组。

uIP是一个专为8位和16位单片机设计的小型简易的TCP/IP协议栈,简单易用、占用资源少是其设计特点。为了占用较少的资源,uIP只保留了基本的通信功能而把全功能协议栈中那些不常用的功能去掉,其重点是在IP、TCP和ICMP的实现上,而把ARP和UDP作为可选模块。uIP处于网络通信的中间,其上层协议是应用程序层,其下层硬件或固件称为网络设备驱动层。uIP并不仅仅是为以太网设计的,它与媒体无关。


uIP的设备驱动程序接口

uIP中需要底层驱动支持的函数有:uip_input( )和uip_periodic( )。uip_input( )函数是用来处理网络层和设备驱动层之间的传送数据的,当设备驱动程序从网络层收到一个数据包时会调用此函数,设备驱动程序会事先把数据包存放在uip_buf[ ]缓冲区里,而把数据长度放到uip_len,然后交给uip_input( )函数处理。当函数返回时,如果uip_len不为0,则表明带有数据。如果需要ARP支持时,则要考虑更新ARP 表或者发送ARP请求和回应。

uIP应用程序接口

uIP在接受到底层传来的数据包后,如需送上层应用程序处理,就会调UIP_APPCALL( ),同时uIP设置UIP_CONN结构体指针指向当前连接。UIP_CONN记录一条TCP连接的所有相关信息。为了将用户的应用程序挂接到uIP中,必须将宏UIP_APPCALL( )定义成实际的应用程序函数名,这样每当某个uIP事件发生时,内核就会调用该应用程序进行处理。如果要加入应用程序状态的话,必须将宏UIP_APPSTATE_SIZE定义成应用程序状态结构体的长度。

uIP在VRS51L3074上的应用和简单Socket通信

uIP协议栈承担网络通信功能,一方面与底层链路层通信实现数据收发,另一方面为上层应用程序提供了简单的API接口。uIP基本实现了IP、TCP、ARP、UDP以及ICMP(ping)等协议,它包括uip.c、uip_arch.c、uip_arp.c、uip.h、uipopt.h、uip_arch.h、uip_arp.h等文件。uip.c完成主要TCP/IP功能,主要是IP和TCP协议,UDP是可选模块;uip_arp.c完成地址解析;uip_arch.c完成校验;uipopt.h是uIP配置文件,它以宏的形式定义便于修改,用户可根据自己的需要设置本地的物理地址、IP地址、网关地址、收发缓冲区大小、支持的最大连接数以及ARP表大小等选项。

结束语

本方案成功地把嵌入式TCP/IP协议栈uIP移植到VRS51单片机上,实现了网络通信。该方案是网络POS机的一部分,目前已经正在运行,且状态良好。本方案采用的单片机和网络芯片不但性能良好而且价格低廉,uIP是一个性能优良的免费小型TCP/IP协议栈,因此本系统运行速度快、稳定可靠且价位较低。本方案可广泛应用于远程数据采集、传输,远程监控,远程抄表以及信息家电等领域。

声明:本内容为作者独立观点,不代表电源网。本网站原创内容,如需转载,请注明出处;本网站转载的内容(文章、图片、视频)等资料版权归原作者所有。如我们采用了您不宜公开的文章或图片,未能及时和您确认,避免给双方造成不必要的经济损失,请电邮联系我们,以便迅速采取适当处理措施;欢迎投稿,邮箱∶editor@netbroad.com。

相关阅读

微信关注
技术专题 更多>>
研发工程师的工具箱
智慧生活 创新未来

头条推荐

电子行业原创技术内容推荐
客服热线
服务时间:周一至周五9:00-18:00
微信关注
获取一手干货分享
免费技术研讨会
editor@netbroad.com
400-003-2006