欢迎来到天天文库
浏览记录
ID:45756905
大小:126.03 KB
页数:9页
时间:2019-11-17
《MSP430上实现tcpip协议栈》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、TCP/IP协议栈在MSP430单片机上的实现TCP/IP协议栈在MSP430单片机上的实现弓I言口随着信息技术的不断发展,以及人们对FI常生活舒适度、方便度要求的提高,信息家电、智能仪表等产品越來越频繁的出现在我们的生活当中;人们也越來越热衷于把家电、仪表等设备连接到Internet中,从而可以方便、及时的对它们进行远程察看、远程控制。把这些设备接入Internet,就需要考虑TCP/IP网络协议的实现。MSP430系列单片机是由TI公司开发的16位单片机,其突出特点是超低功耗,非常适合于各种功率
2、要求比较低的场合,该系列已经应用在智能仪表、医疗设备和保安系统等方面。本文给出了在MSP430F149硬件平台上移植TCP/IP协议的方案,实现了终端设备到Internet的接入。嵌入式TCP/IP协议栈ulPTCP/IP是一个协议族,它是一个四层网络协议模型,分别包含应用层、传输层、网络层、网络接口层。应用层定义清晰的会话过程,平常所用的协议如HTTP、FTP、SMTP、Telnet等都属于应用层。传输层提供端对端的通信,该层协议有传输控制协议(TCP)和用户数据协议(UDP)o网络层负责数据打包
3、和逻辑寻址,这一层的协议有IP、ICMP、ARP等协议。网络接口层负责在源和目的节点间的线路上进行无并错的传送数据,并且具有流量控制等功能。在嵌入式系统中,应用TCP/IP协议是主耍为了完成数据采集和数据传输,不需要实现网页浏览、文件传输等功能,同时,MSP430芯片也没有足够的空间资源实现所有的TCP/IP协议,所以在本文的方案屮,采用了UIPTCP/IP栈。它是瑞士计算机科学院的AdamDunkels等开发的一种免费公开源代码的小型TCP/IP协议栈,它专门为8位和16位MCU编写。ulP代码的
4、大小和RAM的需求比其它一般的TCP/IP栈要小得多。UIP实现了TCP/IP协议组的四个基本协议:ARP(地址解析协议),IP(网际协议),ICMP(因特网信息控制协议)和TCP(传输控制协议)。链路层协议例如PPP等可以由UIP下面的设备驱动实现;应用层协议例如HTTP、FTP、SMTP、Telnet等可以±ulPZ上的应用程序实现。ARP协议ARP协议把目标IP地址解析为相应的以太网MAC地址。当一个IP包要在以太网上发出时,先查询ARP表,找出包要发送去的MAC地址。如果在表里找不到对应的I
5、P地址,就会广播ARP请求包,以获取给出IP地址所对应的MAC地址。目的主机收到请求包后发出一个ARP冋应包,给出口己的MAC地址和IP地址。当ARP表中没有对应的地址条冃时,就会发送ARP请求包时,同时该请求包会覆盖掉发出请求的IP包,以节省储存器。ARP表每十秒更新一次。IP协议UIP的IP协议主要负责验证输入包的IP头的正确性,以及在ICMP和TCP之间复用数据包。IP层没有实现数据包的分段和重组,从而代码得到极大的简化。ICMP协议ICMP中echo和echoreply信息常常用在ping程
6、序里,以检查冃的主机能否连通。在ulP只实现echoo在处理收到的echo信息时,只需要把ICMP类型字段从“echo”类型改变到“echoreply”类型,调整ICMP校验和,并互掉IP数据包头里的目的地址和源地址,把包发冋到发送方。TCP为了减少储存器的使用,在UIP里,TCP不再实现发送和接收数据的窗口调整;不会缓存刚刚收到的TCP段,而是立即由应用程序处理,应用程序可以自己缓冲数据;在输出数据时,在每个连接只能有一个正在传输的TCP段。以上四个协议实现的过程中,极大的简化了代码和处理过程,节
7、省了存储空间和缓存空间。UIP协议栈的接口UIP协议通过一系列接口函数与底层系统和上层应用通信,它内部的协议集合对外部系统来说是透明的,从而增强了该协议的通用性和独立性,可以非常方便地移植到不同系统和应用平台。图1描述了UIP、底层系统和应用程序三者之间的调用关系。其中UIP提供了三个函数给底层系统:UIP_init(),UIP」叩ut(),UIP_periodic()。应用程序向UIP提供一个调用函i:UIP_APPCALL(),在网络事件或计时事件发生时进行调用;同时,UIP也要向血用程序提供一
8、些与协议栈的接口函数,应用程序根据接口函数提供的信息或者状态,执行和应的操作。UIP应用接口UIP使用基于事件的程序模式,应用程序由C语言函数实现。当收发数据、新连接建立或者数据需要重新传输时,UIP都会调用应用程序。同时,应用程序还耍周期查询是否有新的数据收发。因为应用程序只提供了一个回调函数,所以应用程序还要把不同的网络服务映射到不同的端口和连接。UIP在接受到底层传来的数据包后,如果需耍送上层应用程序处理,就调用UIP_APPCALL()0同时,UIP设置结构休
此文档下载收益归作者所有