微波EDA网,见证研发工程师的成长!
首页 > 测试测量 > 测试测量技术文库 > 基于SF0020芯片的嵌入式TCP/IP协议族设计与实现

基于SF0020芯片的嵌入式TCP/IP协议族设计与实现

时间:08-11 来源:互联网 点击:

1、 引言
TCP/IP起源于60年代末美国政府资助的一个分组交换网络研究项目,到现今已发展成为计算机之间最常应用的组网形式。尽管标准的TCP/IP协议族在数据传输的可靠性与数据流量的控制上作的很好,但是8位微控制器性能的限制下,标准的TCP/IP协议族的实现占用大量系统资源是实际应用所不允许的。因此要在不改变TCP/IP协议族标准的前提下对其进行裁剪,使其实时性提高同时保证可靠性以满足嵌入式系统的要求。
SF0020是NEC公司推出的兼容80C51的8位微控制器芯片。根据系统在网络监控系统控制终端应用的需要,外部接25MHz晶体,内部倍频至50MHz。该芯片内嵌有10M/100Mbps的MAC模块并提供MII界面,可与外部的Ethernet PHY芯片方便连接。芯片有256字节内部数据存储器,外部可扩充至512K字节。具备的DMA通道实现了在RAM中和在MAC与RAM之间进行快速数据传输的功能;支持校验和模块,在实现TCP/IP时可以节省控制器运算开销。指令周期为4个时钟周期(标准80C51为12时钟周期/指令周期)。其性能满足实现嵌入式TCP/IP协议族的基本要求。
2、 协议族总体框架设计与裁剪策略
为了实现在局域网环境中作为客户端控制前端监控设备(硬盘录像机、编码器、解码、视频服务器等)的应用要求,必须在有限的硬件资源的条件下保证数据传输的可靠性和实时性。因此数据链路层采用目前应用最为广泛的以太网协议;上层利用TCP/IP的实现采用在运输层直接采用可靠的TCP协议,然后对其进行适当裁剪的方法。这是因为考虑到通用性、兼容性和通信的可靠程度,而没有使用在应用层加入控制策略运输层使用简单UDP协议的方案。本地数据的流动要实现向应用程序提供可靠的数据,与底层以太网驱动程序交互数据报功能。
协议族系统结构框架如下图1所示,其中虚线部分是本文所要完成的,包括socket子层、运输层的TCP协议、网络层的IP和ICMP协议、ARP协议和以太网子层。



图1 协议族系统框架
2.1 接口子层实现
以太网子层提供了与以太网驱动程序的接口,其实现驱动程序存储空间和协议空间之间数据搬移的功能;以及数据报流入的分路和流出的封装处理。
Socket(插口)子层向上层提供了创建一个socket描述符,将本地的IP地址与端口号绑定到一个socket上,TCP连接的建立、断开,数据的接收与发送的功能。
2.2 网络层实现
网络层实现包括IP协议(Internet Protocol网际协议)和基于IP协议的ICMP协议(Internet Control Messages Protocol控制报文协议)。图1中该层下部的ARP(Address Resolution Protocol 地址解析协议)为IP提供动态地址解析服务。
IP是TCP/IP协议族中最为核心的协议。所有的网络层和运输层数据都以IP数据报格式传输。为了减小TCP/IP协议族的负担,接收时首先要检查数据报的正确性,其次还要过滤目的地址不是本机的报文;此外如果收到被IP分片的数据报立即丢弃。最后判断协议交给TCP或ICMP协议处理。因为禁止IP层分片可以提高通信的效率和可靠性,根据以太网最大传输单元(MTU)的限制,socket子层控制了用户每次传输分组的最大字节数。同样服务端也对IP分片加以限制使IP无需把有限的系统资源消耗在IP报文重装上,这正是丢弃被分片的IP数据报的原因。
ICMP提供主机或路由器报告差错或提供查询信息的服务。ICMP报文可以分成两类:差错和查询。查询报文是用一对请求和回答定义的。ICMP差错报文通常包含了引起错误的IP数据报的第一个分片的IP首部(和选项),加上该分片数据部分的前8个字节。由于运输层仅仅使用TCP协议,ICMP也进行了裁剪。协议支持ping命令请求回显应答,用于检查协议族的运行状况;差错控制全部交给运输层TCP协议处理。
ARP协议为IP地址和硬件地址之间提供映射。ARP报文分为请求和应答两种报文,通过这两种报文实现ARP缓存的更新。ARP高速缓存在它的运行过程中非常关键。由于微控制器硬件资源限制ARP高速缓存只定义了8组,因此查找采用线性搜索的方法对最终性能并没有影响。缓存只包含以下4项既可以实现ARP协议又可以节省硬件资源:IP地址、MAC地址、写入时间、标志位。
2.3 运输层实现
运输层仅仅实现了TCP(Transfer Control Protocol传输控制协议)。该协议提供了全双工高可靠性的通信,因此应用层和网络层可以忽略相关细节。TCP是TCP/IP体系中面向连接的运输层协议,它所做的工作包括把应用程序交给它的数据分组交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。
每当本地发出连接建立请求后,创建一个对应的传输控制模块TCB(Transmission Control Block).它存储了该连接中的重要信息。和ARP高速缓存一样其数据保存在片内数据存储区来提高协议的运行效率。本文中TCB的实现只包含以下内容:IP地址、双方端口号、双方序列号、对方应答序号、当前连接状态、定时器、指向下一个有效数据区的指针、窗口大小。此外通过对TCP首部的选项字段的配置,即保证在局域网内部传输时IP层传输时不会分片使MMS(Maximum Segment Size 最大报文段长度)尽可能大,可以提高TCP传输效率。 同时考虑到作为客户端应用,在不影响正常工作的前提下TCP有限状态机实现中去掉了服务端的两个状态LISTEN(监听)、SYN_RCVED(接收SYN状0态)如下图2所示。

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

网站地图

Top