基于嵌入式TCP/IP软件体系结构的优化设计与实现

来源 :电子产品世界 | 被引量 : 0次 | 上传用户:lijingbo1985
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:本文提出一种基于嵌入式TCP/IP软件体系结构的优化设计和解决方案,通过分析在嵌入式系统上实现TCP/IP的速度、程序结构、内存需求等特点,优化设计了清晰的TCP/IP和应用层接口、防止多余的内存拷贝和实现数据包整序重发/窗口控制。最后给出了嵌入式TCP/IP的性能评价。
  关键词:嵌入式系统;TCP/IP;软件体系结构;优化设计
  2006年9月24日收到本文。廖日坤:博士,从事下一代网络、EPON接入网、嵌入式VolP研究。
  国家高技术研究发展计划(NO.2004AAl22110)、国家杰出青年科学基金(No.60325104)、教育部科学技术研究重大项目资助计划项目(NO.0215)支持。
  


  随着计算机网络技术和电子信息技术的迅猛发展,Internet的普及,接入Internet的非PC设备越来越多,各类电子设备像Web个人数字助理、Web可视电话、TV机顶盒接入Internet的需求也越来越大,嵌入式TCP/IP的Internet网络化将成为网络发展的趋势。
  嵌入式系统中大量存在的是8/16位低速处理器,在进行Internet接入时,嵌入式TCP/IP对于计算机存储器、运算速度要求比较高,占用大量系统资源,因而常嵌入TCP/IP协议簇的子集或用UDP代替TCP实现。
  本文提出一种基于嵌入式TCP/IP软件体系结构的优化设计和实现方案,从实现相应的功能又节省系统资源角度出发,对嵌入TCP/IP优化设计,实现嵌入式的Internet接入。
  
  嵌入式TCP/IP接入方法
  
  嵌入式电子设备接入Internet有多种解决方案:在低速微处理器运行剪裁的TCP/IP协议栈;使用一些ASIC实现TCP/IP的芯片如ADI的Internet Modem;也可以使用嵌入式操作系统自带的完整的TCP/IP协议栈。在某些对网络速度要求不高的领域,可以精简的TCP/IP实现;在对性能要求高的场合,则可以选择后两种方案。嵌入式设备接入Internet网络常用的方案比较如表1所示。
  


  但以上接入方法一般专门为某种微处理器设计,不具有通用性,而且效率较低或功能不够全面。本文提出的经过优化设计的嵌入式TCP/IP适合移植到各种嵌入式处理器中,如单片机、ARM或ARM+FPGA多核嵌入式处理器中,具有较小的代码量、RAM使用量和较高的效率,同时支持套接字形式的多个TCP连接和多个网络设备连接,支持通过网关发送数据包和数据包转发,支持TCP包的整序、重发和窗口控制流量控制等等。
  
  嵌入式TCP/IP的软件体系结构与优化设计
  
  嵌入式TCP/IP软件体系结构
  与PC TCP/IP协议相似,嵌入式TCP/IP采用协议分层的结构:应用层、TCP层、IP层和网络设备接口层。图1描述了嵌入式TCP/IP输入和输出数据包流程以及调用的函数。
  其中,Timer()函数调用TCPTimer()处理TCP数据包重发,以及调用每个接口的In—put()函数接收到达的数据包。Timer()函数必须在短时间(一般<20ms)内被调用一次,否则接收数据包和TCP定时等功能将停止。
  输出时,TCP层先查看unsend队列,发现非空,将数据包插入队列;发现为空,则查看对方窗口是否够大能够接收这个数据包,然后填写TCP头部信息。IP层选择网络设备接口,目的IP和该接口的子网掩码相与是否等于子网掩码。然后调用这个接口的Output函数来发送。
  输入时,Timer()函数调用每个接口的In—put函数。IP层判断IP版本、IP校验和、判断是否应该转发数据包,然后根据IP头部的protocol字段将包传给相应的高层处理。TCP层,需要判断TCP校验和,然后在现有的套接字中查找,判断是否有套接字可以接收这个数据包,判断TCP序号是否为希望的,然后更新这个连接的状态(包括释放被应答的数据包和TCP状态机的转化等),调用该套接字的回调函数recv。
  图2程序主流程是一个大循环,在循环中处理发送数据包等应用层协议同时查询变量bTimeOut,在定时中断中将bTimerOut设置为真,应用层在程序流程中反复查询bTimerOut是否为真,真则调用Timer(),然后置bTimerOut为假。
  
  嵌入式TCP/IP设计优化
  


  因为网络中数据非常多,如果把所有的数据都读到内存中再判断是否应该丢弃帧显然效率不高。所以边读取数据边判断而没有一开始就把整个帧全部读到内存中,同时在程序里定义帧中各个部分的相对地址,可以方便的对帧的各个字节寻址。这样的设计是基于提高访问速度考虑的。
  为了减小RAM使用量,当数据包需要重新发送时,如果能够重新产生数据包所需的数据,可以不存储需要被应答的TCP包。图3给出了嵌入式CPU中TCP/IP的内存划分,以及内存中帧的各个字节的定义和相对位置,其中PacketRAM为存放帧的首地址。
  发送TCP/IP过程中主要的运算量集中在三个部分:应用程序将数据拷贝到RAM、计算TCP校验和、将RAM中的数据包拷贝到网络设备的发送缓冲区。对每一个字节数据,两次拷贝大致共使用12×2=24个指令周期;计算TCP校验和使用为16个指令周期。为提高速度可采用快速CPU或提高晶振频率。例如采用12M晶振时,网络传输速度为25K字节/s;而在高频PCB电路板使用233M晶振时,网络传输速度能达到为384K字节/s。
  另外,TCP/IP一般采用C语言或者混合汇编,而使用可重入函数和一般指针(genericpointer)使得程序代码增大,运行速度变慢.所以使用函数指针时,应手动重建调用树(Calltree),或将函数指针调用的函数设置为可重入函数,同时使用“指定存储类型”的指针(memory—specific pointer),防止数据包的不必要的拷贝以及优化计算校验和和内存拷贝函数。另外,Reentrant类型的函数比一般函数速度要慢很多,但是某些时候为了程序结构的需要必须使用Reentrant,这就需要在速度和结构之间作一个选择。
  
  嵌入式TCP/IP的实现
  
  TCP/1P的嵌入式实现一般通过以软件方式嵌入到ROM中,然后通过轻网络通讯技术与专用嵌入式网关连接,在嵌入式处理器中运行TCP/IP协议,提供TCP/IP到用户的轻型网络的连接和路由功能。
  
  内存管理方法和无多余数据包拷贝的实现
  嵌入式TCP/IP的内存管理可以用链表方 法,即根据数据包大小分配相应大小的内存块。如图4所示,链表将内存块链接起来,used字段表示该内存块是否正在使用,pS start和pEend则表示数据部分有效数据的开始地址和结束地址。搜索内存链表找到一个没有分配的比所需空间大的内存块,截取所需的大小。该内存块被截取以后可能还有较多剩余,这时将剩余部分从原内存块中分离出来,成为一个新的内存块,并插入链表。释放时,将used值置为假,如果pNext或者pPre指向的链表单元也是空闲的,则将其和自己合并,以防止内存分片。在协议层之间传送数据包只需传送内存块的起始地址。这种内存管理方法,空间浪费小但是运算量相对较大。
  
  整序、重发和窗口控制的实现
  对于嵌入式TCP/IP系统,可以使用队列缓存的方式来实现整序、重发和窗口控制。队列的一个元素指向一个数据包,队列的最大长度没有限制。
  对于整序,使用ooSeq队列,如果发现接收的TCP包序号并不是期望的,但序号在接收窗口内,此时不能立刻接收这个包也不应丢弃,可先将这个包放入ooSeq队列。当期望TCP包被接收后,再查看ooSeq队列现在是否有TCP包成为了期望的数据包,如果有则将其取出并处理。
  对于重发,使用unacked队列,每一个需要被应答的TCP数据包发送以后都要放入unacked队列,等到被应答以后才从队列中删除。TCP重发定时只针对unacked队列第一个TCP包,如果定时超出,重新发送,重发次数超出规定值,则报错。
  对于窗口控制,使用unsend队列,如果发现对方的窗口过小无法接收这个数据包,则只发送部分数据,将多余部分放入unsend队列,等待对方发来TCP包通知新的窗口大小时,再次判断是否可以发送。如果在unsend队列不为空的情况下,需要发送的数据包都应插入unsend队列。
  
  嵌入式TCP/I P的性能分析
  图5给出了将优化设计后的TCP/IP移植到ARM9处理器、CS8900A网络控制器中,时钟频率为133MHz下,与Internet连接的情况。
  系统支持最大发起连接数约为380,最大并发连接率约为170cps。随着呼叫数的增加,平均分组到达也随之增加,导致网络传输数据的增加,从而最大建立时间变长。但最小的建立连接时间基本保持不变,说明系统具有良好的性能。
  图6给出了随建立时间变化的接通率。图中存在一个临界点,成功的连接率随着TCP连接尝试数目增加而减少,直至为0,而响应时间也急剧上升,这是由嵌入式处理器的处理能力有限造成的。
  
  结语
  
  本文从实现相应的功能又节省系统资源角度出发,对嵌入式TCP/IP协议簇进行优化设计,可以在各种嵌入式处理器上实现Internet接入。
  经过优化设计的嵌入式TCP/IP支持套接字形式的多个TCP连接、支持多个网络设备、支持通过网关发送数据包和数据包转发功能,以及支持TCP包的整序、重发和窗口控制流量控制。实践证明,这种设计方式灵活,能按用户需求实现复杂的功能。
  参考文献:
  1.Bilek J,Ruzicka IP.Evolutionary trends of embedded systems.IEEE InternationaI Con—ference on lndustrial Technology,2003.2(3):901—905.
  2.Perry.DE.Software engineering andsoftware architecture.In:Feng Yu-fin.Beijing:Electronic lndustry Press,2000.
  3.Batory D.O'Malley S.The design and implementation of hierarchical software sys—tems with reusable components.ACM Trans.on Softwa re Engineer and Methodology.1 992,1(4):355-398.
  4.Hutchinson N,Peterson L.The x-kernel:Architecture for implementing network proto—cols.IEEE Trans.0n Software Engineering.19911 7(1 J:64-76.
  5.Postel J.Internet Official Protocol Stan—dards,RFC 1 720.Network Working Groupf_996.
  6.Rastofer U,Bellosa F.Component-basedsoftware engineering for distributed embed—ded real-time systems Softwa re.1EE Proceed-ings,2001,148(3):99—1 03.
  7.Swaminathan V.Chakraba rty K.Nef-work flow techniques for dynamic VOltage scal·ing in ha rd real—time systems.1EEE Trans.onComputer-Aided Design of Integrated Circuitsand Systems,2004,23(10):1385—1398.
  8.Schmidt DC,Box DF,Suda T.Adaptive:A dynamically assembled protocol transfor—marion,integ ration and evaluation environ—ment.Concu rrency:P ractice and Experi-ence,1993,5(4):269-286.
  9.周立功:ARM嵌入式系统基础教程,北京航空航天大学出版社,2005.1
  1O.Douglas E.comer,David L.stevens:用TCP/IP进行网际互连,电子工业出版社,2000.8
其他文献
引言    现场可编程门阵列(FPGA)市场在过去的几年中发生了很大的变化。硅芯片工艺技术的进步推动了FPGA密度和速率的增长。结果,以前面向ASIC或者ASSP的大量高性能商业应用现在可以在FPGA中成功实现,并且效率很高,非常经济。为达到目标性能,FPGA设计工程师采用了新的时钟规范(通过时钟复用设计方案),而传统的FPGA时序分析工具很难分析其设计接口(例如源同步时钟)。  本文介绍FPGA
期刊
编者按:ITU(国际电信联盟)的世界电信展有“电信业的奥运会”的美誉,全球电信业的巨头们济济一堂。与往届不同的是,今年2006年12月4日—8日的世界电信展的举办地是中国香港,首次在瑞士日内瓦以外的城市举办,这不由得让人浮想联翩。同时,在全球电信业整合的浪潮下,这届电信展也被赋予了格外的意义。除了电信运营商、设备商,手机制造商,同样关注通信领域的半导体公司也携手合作伙伴频频展出新的芯片方案。
期刊
今年我国电子信息产业低开高走    在一季度我国电子信息产业增长放缓、效益下滑后,信息产业部预计,随着重大项目投资相继启动和新市场开拓,电子信息产业将在下半年出现恢复性增长,使全年呈现“低开高走”发展态势。尽管年初电子信息产业受产品结构调整、市场竞争加剧影响,总体状况不够理想,但是进入二季度后,奥运建设进入关键阶段,新一代移动通信系统建设即将启动,数字电视转播也将逐步推广,从去年至今各地引进的大型
期刊
FPGA设计工具面临的挑战与发展趋势    根据Gartner Dataquest的分析报告显示:2005年ASIC和FPGA/PLD的增长率分别为3.9%和5.8%,而2006年,两者的增长率分别达到8.3%和13.4%。可以看到FPGA的发展速度明显高于ASIC。随着两大FPGA巨头Xilinx和Altera争相推出65nm工艺FPGA芯片Virtex-5以及StratixⅢ系列,FPGA迎来
期刊
ispLEVER是Lattice公司的一个完整的FPGA和CPLD设计软件,能帮助用户完成从概念到完成产品的设计。ispLEVER包含许多有力的开发工具,用于设计输入、项目管理、IP集成、器件映射、布局和布线,以及在系统逻辑分析等。  ispLEVER(Windows)包含Latace公司的合作伙伴Synplicity和Mentor Graphics的第三方工具,这些工具用于综合和仿真。ispLE
期刊
美国微芯科技公司(MicrochipTechnology Inc.)宣布推出MCP73833和MCP73834单节大电流(1A)锂离子/锂聚合物电池充电管理控制器,为确保对高容量锂离子/锂聚合物电池的可靠充电,这些全集成充电管理控制器在一个单芯片上集成了一些关键的标准充电管理和安全功能。MCP73833/4充电器采用小型MSOP和散热快的3mm3 mm DFN封装,有助于实现更加智能、快速和安全的
期刊
今后五年内,基于FPGA的系统设计将增长30%。现在是个设计的时代,软件开发是FPGA应用成败的重要因素之一。一些FPGA硬件供应商提供开发工具,特点是主要用于该公司的FPGA,这种方式主要由亚洲国家采用。如果在FPGA开发中需要来自不同公司的FPGA,进行复杂的设计就需要借助专业的EDA工具厂商提供的工具一这种方式在欧美流行。  本刊编辑部邀请了众多FPGA器件/工具厂商,畅谈FPGA开发工具的
期刊
基于不同技术或来自不同厂家的MOSFET,即使RDS(ON)和BVDSS值相接近,也可能在耐雪崩(Avalanche)/UIS能力方面存在很大差异。耐雪崩/UIS能力是许多不同参数的复杂函数,主要取决于裸片尺寸,但也受其它参数影响。大多数产品资料都采用EAS值来表示UIS能力,但EAS值本身并不是比较UIS能力的好方法。有些器件的参数是在额定电流下测量的,另一些则是在额定电流的几分之一情况下测量的
期刊
Altera设计工具    当前FPGA开发工具的发展趋势  “工欲善其事,必先利其器。”要做好PLD的设计没有工具的支持是无法想象的。PLD设计魅力在于此:就像爱因斯坦把质量和速度相结合,得出E=mc2样,PLD设计把硬件和软件相结合,释放出巨大的能量。展望未来,可以看出FPGA工具有如下发展趋势:高性能(Performance)和高生产力(Productlv-ity),当前PLD软件开发工具都
期刊
概述    过去几年,人们对无线局域网(WLAN)硬件的需求有了显著的增长,无线局域网很快从新奇的技术发展成为生活必需品。2005年WLAN芯片组出货量突破1亿套大关,比2001年不足1000万套增长了10多倍,这些数字说明WLAN市场正在快速扩张。  Wi-Fi普及率的提高有助于这项技术拓展到电脑以外,进入互联网电话、音乐流播、游戏、甚至照片欣赏和家庭视频传送等消费电子应用。加速这一发展趋势的还
期刊