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

发布者:创意驿站最新更新时间:2011-09-22 关键字:SF0020  TCP  IP协议族 手机看文章 扫描二维码
随时随地手机看文章

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协议处理。[page]

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所示。


 
图2 TCP有限状态机
 
由于网络中数据传输必然会产生数据丢失,TCP错误重传和数据重组尤为重要。错误重传是在发送了需对端确认的报文段后设置重传定时器,如果在定时器时限内未收到ACK该报文段被重发。因此当数据发送之后要等到ACK确认报文才能丢弃。数据重组是基于面向字节的序列号,实现重复数据的丢弃、乱序报文的重组。
 
3、协议族实现关键技术
3.1 协议族定时器的实现
ARP实现需要两个定时器。重传需要一个定时器,如果ARP报文发送后1秒中内没有应答则再次发送,本文实现连续4次重传后ARP将放弃;ARP高速缓存数据存储时间需要一个定时器,缓存内容保存时间为20分钟,同时允许管理员创建永久节点作为代理节点。
TCP实现为当前连接建立了如下六个定时器:连接建立定时器,重传定时器,延迟ACK定时器,持续定时器, FIN_WAIT_2定时器,TIME_WAIT定时器;去掉了保活定时器,因为该定时器仅是TCP连接的可选配置,在监控中的需要有应用程序实现更加严格的连接保持定时。本文根据实际监控网络情况修改了标准协议族定义的超时时间,使实时性得以提高。
3.2 协议族的内存管理策略
传入的分组是保存在内存中并将其传递给适当的协议作进一步处理的。同时,应用程序产生的数据也必须以分组的形式存储在内存中,并最终将其交给网络硬件设备传送出去。因此协议的高效性取决于如何管理保存这些分组的存储空间。本文对内存管理用以下两种方法做到快速分配存储空间,并且避免分组在各层协议之间移动时的数据复制。

[page]

发送数据报时采用大缓冲区方案:即将缓冲区划分的足够大(1514字节),提前留出协议首部字节的大小,能够存储最长的分组。接收数据报时采用链表方案:为了避免内存碎片的产生该缓冲区采用固定大小。链表的特点是允许快速封装而无需数据的复制,也就是说当接收到递交上来的数据报后,就分配一个新缓冲区,填写其中的内容后将新缓冲区插入保存此信息的链接列表中,这样就可以很容易的在某个信息的前面插入附加字节,而无需移动已经存在的数据。采用此方法可以优化TCP数据报的重组。
采用以上两种方法可以最大限度实现TCP/IP协议族内数据公用,无需额外数据搬移。
3.3 协议族数据流程
    如下图3所示,用户待发送的数据首先通过socket接口程序进入TCP/IP协议族,分别进行TCP与IP的数据封装后查询ARP高速缓存,如果存在当前目的IP与硬件地址的映射则填充以太网帧头部信息后拷贝至以太网驱动程序空间立即发送,否则发出ARP查询报文,将当前用户数据拷贝至发送等待缓冲,进入接收状态等待ARP查询报文的应答。
 
                     由于输入操作发生在中断期间,此时设备驱动程序是不能调用任何过程来处理分组,也就是说中断服务程序并不直接调用IP,而是使用了消息传递的方式。当一个IP分组到达之后用消息通知主循环,由主循环调用协议族进行数据处理。如下图4所示,首先通过以太网子层分路到达帧,如果是ARP报文则检查更新ARP缓冲,收到ARP请求立即应答,若是应答报文则检查本地发送等待队列如有数据立即发送;如果是IP报文首先判定其协议类型,ICMP报文中的ping命令请求回显则立即应答,源站抑制报文交给TCP处理;若是TCP协议进入有限状态机进行解析最后将有效数据通过socket接口递交上层。
 
     
图3 协议族数据发送处理框图             图4 协议族数据接收处理框图
 
4、 结论
经过裁剪的嵌入式TCP/IP协议族,结构精简,实时性强,可以在SF0020芯片上稳定运行,基于该协议族的网络监控系统控制终端通过了专项测试达到期望的要求。

 

 

关键字:SF0020  TCP  IP协议族 引用地址:基于SF0020芯片的嵌入式TCP/IP协议族设计与实现

上一篇:C8051 F12X中多bank的分区跳转问题处理
下一篇:基于C8051F005单片机的PZT驱动电路设计

推荐阅读最新更新时间:2024-03-16 12:41

基于TCP/IP协议的全自动电饭煲远程控制系统设计
近年来,随着控制技术、计算机技术和宽带网络技术的快速发展,测控技术和通信领域的结合应用已经成为大势所趋。传统的控制系统都是专用网络,控制设备及软件也是专用的,开放程度不够,给系统维护及升级带来不便 。在因特网遍布全球,各种先进网络技术日新月异的今天,使用网络技术实现远程控制自然成为首选。  本文以全自动电饭煲为例,设计一种基于TCP/IP协议的全自动电饭煲远程控制系统,该系统分为三个部分:一是利用网卡芯片实现网络通信接口与因特网服务器之间的通信;二是红外通信电路的设计,实现网卡芯片与电饭煲微控制器的通信;三是电饭煲的改造,利用微控制器实现电饭煲机电一体化。该系统的实现,为家用电器全面接入因特网进行远程控制奠定了基础。 1设计方
[工业控制]
基于<font color='red'>TCP</font>/<font color='red'>IP协议</font>的全自动电饭煲远程控制系统设计
ARM程序优化及其在嵌入式TCP/IP协议实现中的应用
随着嵌入式技术的发展,人们对系统的智能化、小型化的要求也越来越高。基于ARM结构的微处理器以其高性能、低功耗、低价格等方面的优势被广泛应用于各种电子产品,特别是一些高端的嵌入式控制应用中,例如移动电话、工业控制、网络通信等方面。ARM技术具有很好的性能和功效,其合作伙伴包括许多世界顶级的半导体公司。可以说ARM技术几乎无处不在。 TCP/IP互联网协议族在全世界范围内已经成为开放系统互联的协议,它提供了很好的交互操作能力,可兼容多种网络技术。嵌入式技术与TCP/IP技术的结合已经展现出强劲的发展势头和巨大的市场潜力。如何开发面向 ARM的高效代码,尤其是提高类似于TCP/IP协议栈等基础性的软件模块的执行效率已成为每个从事基于AR
[单片机]
ARM程序优化及其在嵌入式<font color='red'>TCP</font>/<font color='red'>IP协议</font>实现中的应用
8位机嵌入式TCP通信速度的研究
0 引 言 长久以来,串行RS 232和RS 485通信技术一直是自动化仪器、仪表中常用的通信标准。但近年来,随着计算机技术、网络技术、通信技术的发展及其在工业自动化系统中的应用,使得工业自动化系统和仪器、仪表领域加速了向智能化、数字化和网络化方向发展的进程。出现了电力线通信技术、无线红外和蓝牙通信技术、基于USB接口的通信技术、现场总线技术以及嵌入式Internet接入技术等新技术。其中基于嵌入式Internet接入技术的网络化仪器是近年提出的全新概念,它是仪器检测技术与现代计算机技术、网络通信技术、微电子技术深度融合的产物口。检测仪器接入Internet,成为执行测量和控制任务的仪器Web站点,这种网络化仪器可以像普通仪器那
[嵌入式]
基于Linux操作系统下的TCP/IP网络通信研究与应用
1 引言 Linux是一种自由的Unix类多用户,多任务的操作系统,可在运行在Intel 80386及更高档次的PC机、ARMS、MIPS和PowerPC等多种计算机平台,已成为应用广泛、可靠性高、功能强大的计算机操作系统,Linux具有内核小、效率高、源代码开放等优点,还内含了TCP/IP网络协议,很适合在服务器领域使用,而服务器主要用途之一就是进行网络通信,随着计算机办公自动化处理技术的应用与推广,网络的不断普及,传统的纸张式文件传输方式已经不再适合发展的需要,人们更期待一种便捷、高效、环保、安全的网络传输方式。 本文就是考虑到这一现状,结合基于Linux操作系统下的TCP/IP网络通信原理,给出了一种基于TCP/IP编程
[应用]
基于TMS320C64X协处理器TCP的Turbo译码实现
摘要:介绍了TMS320C64X系列DSP内部Turbo码协处理器(TCP)的结构和算法。给出了使用TCP实现符合3GPP协议的Turbo译码的程序流程,实现了一种使用中断服务程序控制的高效处理流程,最后给出了TCP译码性能与处理时延的硬件实现结果,并做出了一定的析。 关键词:TMS320C64X TCP Turbo Decoding 性能 自1993年Turbo编码理论提出以事,有关Turbo码设计及其性能的研究已经成为国际信息与编码理论界最为重要的研究课题之一。Turbo码在低信噪比下所表现出的近Shannon限的性能使得它在深空通信、移动通信等领域中有着广阔的应用前景。由于Turbo码编码方式灵活、译码算法复杂,不适合
[嵌入式]
嵌入式 TCP/IP 协议单片机技术在网络通信中的应用
摘要:介绍了嵌入式TCP/IP协议单片机在网络通信中的数据传输技术。将TCP/IP协议嵌入式单片机中,借助网卡芯片CS8900实现了单片机在局域网内和通过局域网在因特网上的数据传输。用户终端以单片机系统板为媒介,通过网络与远程数据终端实现数据通信。 关键词:TCP/IP协议 单片机 因特网 局域网 网卡芯片 在因特网上,TCP/IP协议每时每刻保证了数据的准确传输。在数据采集领域,如何利用TCP/IP协议在网络中进行数据传输成为一个炙手可热的话题。在本系统中,笔者利用TCP/IP协议中的UDP(用户数据报协议)、IP(网络报文协议)、ARP(地址解析协议)及简单的应用层协议成功地实现了单片机的网络互连,既提高了数据传输的速度,
[工业控制]
源码公开的TCP/IP协议栈在远程监测中的应用
引 言:   目前,随着互联网的发展,越来越多的工业测控设备已经将网络接入功能作为其默认配置,以实现设备的远程监控和信息分布式处理。笔者曾参与某发电机射频监测仪的开发,该设备主要用于诊断和预警发电机早期故障,并通过RS232接口定时输出电平和状态数据,现场专门设一台PC作接收、显示及存储。每年都要有专家到各发电厂对以往数据作检查和诊断,不胜其烦。因此有必要设计一个RS232到 Internet的数据传输模块,以便对发电机的运行状况作远程监测。设计该模块的关键在于如何实现一个嵌入式TCP/IP协议栈,根据以往的经验,自己设计一个协议栈的难度很可能超过应用本身,而采用商业的协议栈似乎又无必要(功能过于复杂),最后笔者选用一种功能简易的
[单片机]
源码公开的<font color='red'>TCP</font>/<font color='red'>IP协议</font>栈在远程监测中的应用
TCP300/400电流测量系统的应用特点及范围分析
TCP300和TCP400系列AC/DC电流测量系列是满足当今电流测量需要的非常先进的电流测量系统。当通过TEKPROBELevelII、TekConnect(使用TCA-BNC)或TekVPI(使用TPA-BNC)接口连接泰克示波器时,电流测量和计算变得轻松简单。 满足当今的AC/DC电流测量应用 TCPA300放大器在与TCP312A、TCP305A或TCP303探头一起使用时,提供了一系列电流测量功能,弥补了小电流测量产品与超高电流测量产品之间的空白。这三个探头提供了30A、50A和150A连续直流电流的电流测量功能。对更高的电流电平,带有TCP404XL电流探头的TCPA400放大器可以测量500A和750A的连续直流
[测试测量]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved