引言
随着信息技术的不断发展,以及人们对日常生活舒适度、方便度要求的提高,信息家电、智能仪表等产品越来越频繁的出现在我们的生活当中;人们也越来越热衷于把家电、仪表等设备连接到Internet 中,从而可以方便、及时的对它们进行远程察看、远程控制。把这些设备接入Internet ,就需要考虑TCP/IP 网络协议的实现。
MSP430 系列单片机是由TI 公司开发的16 位单片机,其突出特点是超低功耗,非常适合于各种功率要求比较低的场合,该系列已经应用在智能仪表、医疗设备和保安系统等方面。本文给出了在MSP430F149 硬件平台上移植TCP/IP 协议的方案,实现了终端设备到Internet 的接入。
嵌入式TCP/IP 协议栈uIP
TCP/IP 是一个协议族,它是一个四层网络协议模型,分别包含应用层、传输层、网络层、网络接口层。应用层定义清晰的会话过程,平常所用的协议如HTTP、FTP、SMTP、Telnet 等都属于应用层。传输层提供端对端的通信,该层协议有传输控制协议(TCP) 和用户数据协议(UDP) 。网络层负责数据打包和逻辑寻址,这一层的协议有IP、ICMP、ARP 等协议。网络接口层负责在源和目的节点间的线路上进行无差错的传送数据,并且具有流量控制等功能。
在嵌入式系统中,应用TCP/IP 协议是主要为了完成数据采集和数据传输,不需要实现网页浏览、文件传输等功能,同时,MSP430 芯片也没有足够的空间资源实现所有的TCP/IP协议,所以在本文的方案中,采用了UIP TCP/IP 栈。它是瑞士计算机科学院的Adam Dunkels 等开发的一种免费公开源代码的小型TCP/IP 协议栈,它专门为8 位和16 位MCU 编写。uIP 代码的大小和RAM的需求比其它一般的TCP/IP 栈要小得多。
UIP实现了TCP/IP 协议组的四个基本协议:ARP(地址解析协议) ,IP(网际协议) ,ICMP(因特网信息控制协议) 和TCP(传输控制协议) 。链路层协议例如PPP 等可以由UIP 下面的设备驱动实现;应用层协议例如HTTP、FTP、SMTP、Telnet 等可以由uIP 之上的应用程序实现。
ARP 协议
ARP 协议把目标IP 地址解析为相应的以太网MAC 地址。当一个IP 包要在以太网上发出时,先查询ARP 表,找出包要发送去的MAC 地址。如果在表里找不到对应的IP 地址,就会广播ARP 请求包,以获取给出IP 地址所对应的MAC地址。目的主机收到请求包后发出一个ARP 回应包,给出自己的MAC 地址和IP 地址。
当ARP 表中没有对应的地址条目时,就会发送ARP 请求包时,同时该请求包会覆盖掉发出请求的IP 包,以节省储存器。ARP 表每十秒更新一次。