微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > TCP/IP协议在VRS51单片机上的实现

TCP/IP协议在VRS51单片机上的实现

时间:07-30 来源:互联网 点击:
uIP在VRS51L3074上的应用和简单Socket通信   

本硬件平台是网络POS机的一部分,它的工作原理是:由扫描枪采集的数据经串口送入网卡内,然后经网络发送到远端主机。

本系统的软件部分包括网络设备驱动程序、TCP/IP协议栈实现以及简单的Socket通信程序。

CS8900主要包括三个部分:EtherDevInit()函数完成CS8900A网络芯片的初始化,包括初始化寄存器等,使之进入服务状态;EtherDevSend()实现把以太网数据包发送到网络中;EtherDevRecv()完成数据的接受。在CS8900的头文件中设置了MAC地址以及其他的一些参数。   

网络设备驱动程序通过两个全局变量与uIP协议栈进行接口:uip_buf为收发缓冲区,uip_len为数据的长度。EtherDevSend( )函数把uip_buf里的数据发送到网络中,EtherDevRecv( )函数把接受到的数据存储到uip_buf缓冲区中,同时修改uip_len的值。   

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表大小等选项。

VRS51L3074有3个16-bit的定时器,可以选择一个为TCP/IP协议中与事件有关的事件定时。uIP中需要定时的事件有:为uip_periodic( )函数的执行提供基准和ARP表更新。uip_periodic( )函数每0.5秒执行一次,ARP表每10秒更新一次。

添加了必需的模块,进行了正确的配置后,需要编写主程序和应用程序初始化包括定时器初始化、串口初始化、网卡芯片初始化、uIP协议栈初始化、用户应用程序初始化等,主程序初始化完成后,进入不停查询的状态,如果有数据到来,则交给uip_input( )进行处理,如果没有则由uip_periodic( )来处理定时事件。为了将应用程序挂接到uIP中,必须把UIP_APPCALL( )定义为实际的应用 程序函数名,这样每当某个uIP事件发生时,内核就会调用该应用程序进行处理。本应用程序定义 #define UIP_APPCALL socket_appcall。   

结束语   

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top