精简TCP/IP协议簇在单片机中的应用

2013-11-06 09:08郭耀泉闽西职业技术学院电气工程系福建龙岩364021
长江大学学报(自科版) 2013年25期
关键词:精简校验以太网

郭耀泉 (闽西职业技术学院电气工程系,福建 龙岩 364021)

精简TCP/IP协议簇在单片机中的应用

郭耀泉 (闽西职业技术学院电气工程系,福建 龙岩 364021)

为了能够在单片机系统中采用计算机网络传输相关数据,使系统能够远程采集数据、传输数据,对TCP/IP协议簇的组成进行分析。采用TCP/IP协议簇,删除无关协议,并对具体协议根据功能需要进行精简,使单片机系统能够使用TCP/IP协议簇进行数据传输。对精简的TCP/IP协议簇进行PING命令验证,表明精简后的TCP/IP协议簇能够进行正常工作,通信效果良好。

单片机;TCP/IP协议;数据传输

单片机系统需要解决数据的传送任务,即实现数据发送与接收(包括数据的封装、拆包、编码、解码);同时单片机系统的外部设备需要同步控制,依靠这些外部设备来实现数据的测量和外设的控制任务[1]。由于上述过程只需要利用TCP/IP协议簇的部份功能,因而必须对其进行精简以适应单片机系统的要求。此外,精简后TCP/IP协议簇占用的系统资源少,可以有效增加单片机的处理效率。下面,笔者对精简TCP/IP协议簇在单片机中的应用进行了研究。

1 TCP/IP协议簇的精简

图1 TCP/IP协议簇

TCP/IP协议簇包含有多种协议(见图1),其中TCP和UDP是2种常用的网络传输协议,两者作为传输层的应用协议都可以为应用层提供所需的服务[2]。TCP提供面向数据流的传输服务和可靠的虚电路服务,数据包的传输可靠而有序。TCP服务通过可靠的进程间通信机制能够在分组发生丢失、破坏、重复、延迟或者失序的情况下自动纠正差错。此外,TCP的可靠性以复杂措施和增加处理器开销作为前提[3]。UDP也可以为应用程序发送和接收数据报文,并依靠IP来传送报文,其服务不进行流量控制、不对报文进行排序、不用确认,同时会出现丢失、重复、失序等现象[4],因而UDP的可靠服务必须由应用层来完成。

保证传输率和数据传输的可靠性是单片机系统编程设计中经常面临的特殊要求,这就需要在编程过程中加以分析。考虑到单片机执行效率比较低,存储器的容量比较小,在编程时使用UDP作为传输控制层协议同时增加应用层的可靠性代码,从而满足测控系统的要求。因此,在单片机嵌入系统中可以将TCP删除,只由UDP来完成数据传输过程。

根据单片机系统的特点,在UDP中去除了建立连接和等待确认以加快数据的传输。为了保证数据传输的正确性,在UDP校验中与来自IP的字段一起参与校验。虽然上述构成破坏了严格的分层结构和加大了协议的复杂性,但保证了数据的可靠性。

IP(因特网协议)是网络层的主要协议,同时为TCP和UDP提供服务,其提供全网通用的地址格式,并在统一管理下进行地址分配,保证一个地址对应一台主机,并对物理地址的差异进行屏蔽。

ICMP(因特网控制消息协议)是IP协议的一部份,必须包含在每一个IP实现中。ICMP数据报通过IP送出,其包括多种类型并提供多种服务。错误报文和其他重要信息也是由IP通过ICMP协议来与其他主机或路由器进行交换。地址解析服务由ARP协议进行,包括IP和网络接口层使用的地址信息的转换。

IP协议使用IP地址来传输数据,以太网通过唯一的48位MAC地址完成数据包的收发,为了将上述地址统一起来,可以通过ARP(地址解析协议)请求广播、ARP应答接收、ARP响应等操作,从而能够在IP地址和MAC地址之间进行相互转换。

数据包的发送和接收(包括数据包的形成、校验、编码、解码等)任务选用现有的网络芯片来完成,减轻了MCU的负担。由于处理器减少了数据发送和接收校验工作,其主要任务是数据采集和过程控制,由此提高系统的实时性。同时,使用现成的网络接口芯片还可以缩短开发时间并降低开发成本。

2 实例分析

PIC18F97J60 微控制器是MICROCHIP公司推出专为单片机嵌入式系统开发而优化的以太网通信外设。PIC18F97J60符合 IEEE802.3 标准,集成了介质访问控制器 MAC,在物理层集成了物理层收发模块(PHY)和RAM收发缓冲器。数据包的传送和接收通过芯片集成的 10BASE-T MAC 和 PHY能够可靠实现,PIC18F97J60符合以太网标准;数据包的存储、检索和修改都使用RAM缓冲器进行操作,大大降低了单片机嵌入式系统RAM容量的要求。

图2 硬件电路结构图

2.1硬件电路设计

精简后的TCP/IP协议簇使用如图2所示的电路进行ping命令验证。HR911105A是HanRun 公司开发的RJ-45 网络接口电路。介质的电磁干扰和共模噪声的抑制、信号滤波都通过内部集成的耦合变压器完成。此外,网络连接/活动状态与网络速度状态分别用2个自带的LED灯来显示。

2.2软件设计

图3 流程图

协同式多任务处理(Cooperative Multitasking)是Microchip TCP/IP 协议栈使用的新技术,这种多任务处理机制使TCP/IP 协议的各层不仅在上层要求时提供服务,在数据包超时或新数据包到达时也能完成相关的任务[5]。在这个处理系统中,多个工作任务同时存在,每个任务在执行时获得系统的控制权,任务完成后自动交回。这种控制权的转移保证下一任务的顺利进行。协同式多任务处理的特点是:在任务中各参数采用全局变量进行传递;任何任务都禁止循环等待;任务的执行使用状态机进行确定和跟踪;所有任务的优先级相同;任务的执行和当前的硬件结构无关。

介质访问控制模块(MAC)、物理层收发模块(PHY)都集成在PIC18F97J60的硬件中。以太网驱动程序内包含了相关的函数,上层协议只需要使用设计好的MAC初始化、缓冲区发送、接收的函数就可以完成数据包的发送、接收任务,并通过以太网驱动程序的二次开发来实现系统的新功能(见图3)。

Stack_Task()函数用来对协议簇进行管理,其主要任务如下:数据包的接收与校验;数据包的类型判断、存储、处理;对协议进行应答;丢弃无关的数据报。Stack_Task()函数在接收到新的数据包后将对数据进行解码,并转入到相关函数进行下一步处理。

Stack_App()函数为ARP协议服务,其主要任务如下:建立Socket接连;接收数据;对数据进行处理后转移到缓冲区进行发送;发送完成后关闭Socket连接。

3 应用结果

将生成的hex文件写入单片机内,单片机系统与PC机使用网络线连接。利用ping命令进行验证(见图4)。从图4可以看出,没有数据包丢失现象,数据包发送与接收数量相同;ARP应答能够返回正确的MAC地址。上述现象表明单片机嵌入式系统网络状态良好,与上位机的连接是正常的,能够准确进行数据信息的传输。因此,精简的TCP/IP簇能够与上位机进行正常工作,可以胜任单片机嵌入式系统的工作要求。

图4 对精简的TCP/IP协议簇进行ping命令验证

[1]王田苗.嵌入式系统设计与实例开发[M].北京:清华大学出版社,2002.

[2]陈智,李莉.计算机网络基础教程[M].北京:中国电力出版社,2008.

[3]朱长清,崔少辉.单片机网络的组成与控制[J].计算机自动测量与控制,2000,16(8):22-24.

[4]谢希仁.计算机网络第五版[M].北京:电子工业出版社,2008.

[5]蒋理.计算机网络理论与实践[M].北京:中国水利水电出版社,2003.

[编辑] 李启栋

TP393.04

A

1673-1409(2013)25-0053-02

2013-06-14

郭耀泉(1974-),男,硕士,讲师,现主要从事计算机控制方面的教学与研究工作。

猜你喜欢
精简校验以太网
基于区域分割的多视角点云精简算法
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
时常精简多余物品
炉温均匀性校验在铸锻企业的应用
一种面向应用的流量监测精简架构设计
谈实时以太网EtherCAT技术在变电站自动化中的应用
结合抓包实例分析校验和的计算
一种90W高功率以太网供电系统的设计
浅谈EPON与工业以太网在贵遵高速公路中的应用
大型电动机高阻抗差动保护稳定校验研究