摘 要:由于计算机科学技术的不断发展,嵌入式系统已经被广泛应用于军事、航空航天、工业、通信以及人们的日常生活等各个领域。近几年来嵌入式系统的Internet网络化已经成为嵌入式应用领域研究的研究热点。而要实现嵌入式系统的Internet网络化首先就必须在嵌入式系统中实现TCP/IP协议栈。
本研究以德国控创科技公司的嵌入式平台AM4140为硬件平台,以美国风河公司的VxWorks操作系统为软件平台,以Wind River Workbench 3.3作为集成开发环境,通过深入研究嵌入式TCP/IP协议原理以及设计思想,自行设计并实现了一个轻型高效的并且符合应用需求的嵌入式TCP/IP协议栈。
本文从介绍嵌入式系统出发,在学习了嵌入式系统的组成原理及特点,深入研究了实时操作系统VxWorks 6.9及其开发环境Wind River Workbench 3.3特点的基础上,仔细研究了风河公司的VxWorks操作系统的组成原理。然后,深入研究了相关TCP/IP协议,学习其设计原理和实现方案,讲述了TCP/IP协议的设计思想及实现方法,针对嵌入式TCP/IP协议的特点和功能需求,设计并实现了一个轻型的同时满足项目需求的嵌入式TCP/IP协议栈。在设计与实现嵌入式TCP/IP协议栈当中,不仅详细划分了需要实现的具体协议的功能模块,对各个功能模块的作用作了详细说明,而且自行设计了嵌入式TCP/IP协议栈内存池,并且将TCP/IP协议栈链接到VxWorks操作系统,最后嵌入式TCP/IP协议栈在硬件平台进行了性能测试,测试结果说明所设计的TCP/IP协议栈能够满足项目需求,并且具有良好的稳定性与可靠性。
关键词:嵌入式TCP/IP协议;实时操作系统;VxWorks;内存池管理
第一章 绪论
21世纪以来,随着计算机科学技术的飞速发展以及人们生活需求的日益增加,微型电子设备已经逐步渗入到了人们生活每一个方面,现如今几乎每人都在使用嵌入式电子设备,嵌入式计算机系统的发展已经逐步进入普适计算机时代。比如人们日常生活使用的手机、车载GPS导航系统、娱乐PDA、数码随身听等消费类电子都应用了嵌入式系统。众所周知,系统精简、功能单一、专用型强、运行速度和效率高、没有标准输入和标准输出组成部分是嵌入式计算机系统的主要特点,所以通常嵌入式系统也不具备通用计算机的综合处理能力。
1.1 研究的背景及意义
近几年来,因为日常生活的需求,越来越多的工程开发人员热衷于把嵌入式设备(比如电视、机顶盒等)接入Internet网络,因为Internet网络通信采用的是通用标准TCP/IP协议,所以要想让嵌入式设备能够接入Internet网络实现网络通信,就必需设计与实现专用的嵌入式TCP/IP协议栈。国外一些专业的嵌入式操作系统提供商为了方便自己的嵌入式系统产品无缝接入Internet网络,默认都会提供TCP/IP网络组件。但是这些网络组件因为平台问题几乎很难在其它的嵌入式环境下直接使用,也就是说这些网络组件的移植性很差,所以在本课题研究当中,设计与实现适合本工程项目应用的嵌入式TCP/IP协议栈,对于完成工程项目具有非常重要的应用价值。
本课题来源于中国科学院计算技术研究所无线通信研究中心的Super base station课题项目,即嵌入式TCP/IP协议栈在Super base station通信系统中的应用,该系统采用32位的PowerPC作为嵌入式系统的微处理器,微处理器接收通信数据并按照嵌入式TCP/IP协议栈将数据发送到以太网中,以太网另一侧是处理通信数据的核心网,因为Super base station系统采用嵌入式VxWorks操作系统,所以必须对TCP/IP协议栈进行精简,定制一种符合工程项目要求的嵌入式TCP/IP协议栈。
1.2 国内外研究概况
根据嵌入式系统特点可知,嵌入式系统就是专门针对某一特定应用而设计的计算机系统。为了满足实际应用需要,在微处理器系统之外通过添加外围设备而实现某种特定功能,所以在嵌入式系统有限的资源条件下无法实现标准TCP/IP协议栈。同时也没有必要完全实现标准的TCP/IP协议栈,只需要根据实际应用需求实现部分TCP/IP协议即可。为了简化协议层数方便编写代码实现功能,而在当前的嵌入式系统当中,嵌入式TCP/IP协议只有四层协议模型,分别是数据链路层、网络层、运输层以及应用层。其中每一层协议由多个具体协议的组合组成。因此嵌入式TCP/IP协议栈是对标准TCP/IP协议族进行删减整合而成的协议集合。
1.2.1 国外研究概况
uC/IP协议栈是由British Columbia Institute of Technology的Guy Lancaster编写的一套基于uC/OS操作系统的TCP/IP协议栈,该协议栈完全开源,提供的网络功能是当时嵌入式系统领域比较完善的微型协议栈,并且该协议栈能够按需裁减以及方便的移植到其它操作系统上,uC/IP协议栈大部分源码是从公开源码BSD发布站点移植过来的。uC/IP协议栈能够很好地支持IP/TCP/UDP协议,甚至还支持PPP协议,只不过该协议是需要身份验证和报头压缩的,同时还具有优化的单一请求/回复交互过程等特点。uC/IP协议栈代码容量空间一般在50-80KB之间。所以它通常被设计为一个带最小化用户接口的网络模块,但是该接口存在很多不足,比如不易应用在文档支持与软件升级上。
uIP协议栈是由著名的瑞典计算机科学学院网络嵌入式系统小组的Adam Dunkels学者研发,目前最新的版本为uIP1.0,该协议栈得到了BSD的授权。该嵌入式TCP/IP协议栈的特点是具有很好的互操作性、严格遵循RFC标准;是专门为8位和16位嵌入式微控制器设计的轻型嵌入式TCP/IP协议栈。uIP协议栈支持ARP协议、IP协议、SLIP协议、UDP协议、TCP协议和ICMP协议,其中TCP和IP协议遵循RFC标准,同时还具有流控制、超时重传以及片断分割等。它最大的优点是源代码占用空间小,RAM占用只有几百字节。但是,该协议栈只能被应用在一些高可靠性的场合下。
Tiny Tcp协议栈是一个非常小的TCP/IP协议栈,它提供FTP客户,Tiny Tcp协议栈的特点就是代码容量小、功能精简,只适用某些特殊场合。
LwIP协议栈是瑞士计算机科学院的Adam Dunkels等在uIP协议栈基础上开发的一套源代码TCP/IP协议栈。LwIP(Light Weight IP)是轻型TCP/IP协议栈,LwIP容量只只有几十K,具有40K左右的ROM就可以运行该协议,并且它可以在没有操作系统的情况下运行,当然该协议也可以嵌入到操作系统内部,作为操作系统的组件使用。
1.2.2 国外研究概况
2004年,伍洲凯,王波(2004)对可配置嵌入式TCP/IP协议栈进行研究,设计了方便在8位微处理器上移植和配置的嵌入式VIP协议栈。该VIP协议栈不仅可配置性好,在8位微处理器上的可靠性也非常好。
2006年,王瑞朋,隆克平(2006)在Linux操作系统下,设计了一种针对低端MCU为核心的嵌入式TCP/IP协议栈,该协议栈能有用于无线环境。
2007年,周海瑞,戴冠中(2007)基于P89C51单片机系统设计了eIP协议栈,将嵌入式TCP/IP协议应用在了中低端单片机上,具有很好的稳定和可靠性。
2008年,陈锋,柯敏毅(2008)在友善之臂S3C2410实验板的硬件平台下实现了能够在ARM体系架构运行的嵌入式TCP/IP协议栈,该协议增加了对IPv6的支持以加强了嵌入式系统的安全。
2010年,王文良,李岩(2010)基于实时操作系统uC/OS-Ⅱ和S3C44B0处理器,研究移植LwIP的方法,开发了具有网络地址端口转换(NAPT)的嵌入式TCP/IP协议栈,弥补了LwIP不具有网络地址端口转换(NAPT)的缺点。
1.3 嵌入式TCP/IP协议栈原则
设计一个嵌入式TCP/IP协议栈必需遵守以下原则:
(1) 较好的移植性。嵌入式系统最大的特点就是移植性差,多种多样的选择导致了嵌入式产品的多样性。所以如果能够在满足需求的基础上,尽量设计一个具有较好移植性的软件是至关重要的,这样也就节省了开发人员的时间,把主要精力都放在应用程序的编写上,节省了劳动成本。
(2) 实现代码简洁。在嵌入式系统有限的资源下,最大限度的精简实现TCP/IP协议栈代码,只要实现基本的功能,把多余的功能删掉,降低嵌入式产品的开发的难度,节省存储空间。
(3) 容易裁剪。因为嵌入式产品是多种多样的,然后嵌入式产品硬件存储器空间十分受限,在对设计的嵌入式TCP/IP协议栈进行裁剪后,还要能够满足嵌入式产品的要求。
1.4 论文研究内容及组织
1.4.1 论文的研究内容
本论文主要做了以下几个方面的研究工作:
(1) 在深入学习美国Wind River公司的嵌入式实时操作系统VxWorks 6.9的之后,学习如何使用系统集成开发环境Wind River Workbench 3.3进行嵌入式TCP/IP协议栈的设计与开发。
(2) 深入研究标准TCP/IP协议栈的设计原理以及开发思路,结合中国科学院计算技术研究所Super base station系统功能要求,按照项目需求设计并实现一个轻型、简洁的嵌入式TCP/IP协议栈。
(3) 研究如何将嵌入式TCP/IP协议栈链接到VxWorks操作系统,使之作为操作系统的一个组件供应用开发人员使用,设计TCP/IP协议栈链接方案。
(4) 系统进行功能测试,验证设计的嵌入式TCP/IP协议栈的正确性和可靠性。
1.4.2 论文的组织格式
第一章,绪论,介绍研究的背景与研究意义,罗列国内外在嵌入式领域TCP/IP协议研究的工作情况与取得的成就,以引出本研究来源以及研究价值。
第二章,介绍VxWorks系统及集成开发环境Wind River Workbench 3.3。首先阐述了嵌入式实时操作系统VxWorks的特点以及VxWorks操作系统在硬件启动过程,然后介绍了集成开发环境Wind River Workbench 3.3相关工具,最后简单介绍了Wind River Workbench 3.3集成开发环境的特点。
第三章,嵌入式TCP/IP网络协议栈分析。首先介绍了嵌入式TCP/IP分层模型以及VxWorks操作系统的网络架构,然后分析了以太网MAC帧数据格式,进而分析了嵌入式TCP/IP协议族中的ARP协议原理、IP协议原理、UDP协议原理、ICMP协议原理,对各个协议数据报格式做了详细的介绍。
第四章,嵌入式TCP/IP网络协议栈的实现。首先介绍嵌入式TCP/IP网络协议栈的整体设计思想,然后根据设计的嵌入式TCP/IP协议栈分层模型介绍了嵌入式TCP/IP协议栈的总体实现流程,最后根据设计的嵌入式TCP/IP协议各个功能模块分别介绍了各个协议模块的实现。
第五章,嵌入式TCP/IP协议栈链接到VxWorks操作系统。首先介绍了嵌入式TCP/IP协议栈链接到VxWorks的方案,然后介绍如何定制VxWorks操作系统内核,最后介绍如何将嵌入式TCP/IP协议栈链接到VxWorks操作系统。
第六章,嵌入式TCP/IP网络协议栈在硬件平台测试。介绍实现的嵌入式TCP/IP网络协议栈在硬件平台的测试结果。
第七章,总结与展望。总结本研究的主要工作内容以及创新点。分析当前研究工作中存在的一些不足,指出了扩展嵌入式TCP/IP协议栈功能一些未来需求。
第七章 总结与展望
7.1 工作总结
本文以中国科学院计算技术研究所工程项目为背景,针对特定的嵌入式硬件平台,研究与实现了满足特定嵌入式硬件平台的嵌入式TCP/IP协议栈。
本课题是根据在嵌入式领域设计开发经验,结合标准TCP/IP协议设计思想,利用计算机信息技术设计的一种能够用于嵌入式平台的嵌入式TCP/IP协议栈,在设计与实现嵌入式TCP/IP协议栈时,除了需要足够了解标准TCP/IP网络通信协议之外,还要对嵌入式平台相关特点有非常准确的认识,同时还需要非常熟悉嵌入式软件开发过程。具体做了以下研究工作:
首先深入研究了标准TCP/IP协议协议及源代码。对协议标准的研究主要是针对RFC791(Internet Protocol),RFC792(Internet Control Message Protocol),RFC826(An Ethernet Address Resolution Protocol)和RFC792(Transmission Control Protocol)等协议进行了较为详细的研究。
在研究标准TCP/IP协议之后,结合嵌入式系统具体环境和实际应用,对标准TCP/IP协议栈进行精简,得出需要实现的嵌入式TCP/IP协议栈包括MAC帧发送与接收模块、IP协议、ICMP协议、ARP协议、UDP协议。
然后根据嵌入式硬件平台特点对该嵌入式TCP/IP协议栈进行了功能测试,测试结果证明本设计的嵌入式TCP/IP协议功能正确,能够满足实际项目应用。
7.2 工作展望
因为研究时间有限,加上本文中设计与实现的嵌入式TCP/IP协议栈具有很强的针对性,没有很好的考虑本课题设计的嵌入式TCP/IP协议栈的可扩展性,所以作为今后本课题的扩展,可以从以下几个方面着手:
(1) 在设计的嵌入式TCP/IP协议栈中添加设计TCP协议模块。
(2) 添加IP协议的数据报分片与报重组机制。
(3) 添加数据传输的安全机制。
原创文章,作者:Editor,如若转载,请注明出处:https://www.diyilunwen.com/lwfw/jsj/2144.html