基于ARM的嵌入式TCP_IP协议栈的实现_第1页
基于ARM的嵌入式TCP_IP协议栈的实现_第2页
基于ARM的嵌入式TCP_IP协议栈的实现_第3页
基于ARM的嵌入式TCP_IP协议栈的实现_第4页
基于ARM的嵌入式TCP_IP协议栈的实现_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、王原丽等:基于ARM的嵌入式TCP IP协议栈的实现基于ARM的嵌入式TCP IP协议栈的实现王原丽,王丽(武汉理工大学信息工程学院湖北武汉430070)摘要:嵌入式系统是一种将底层硬件,主要趋势之一。本文以SamsungS3C44BOX芯片为核心的ARM,件平台,针对C OSIP协议栈进行了分析,II内核中不支持TCP IP协议栈,本文首先对标准的TCPTCP IP协议栈方案。关键词:;A OII104:B文章编号:1004373X(2005)2210403ImplementationofEmbeddedTCP IPProtocolBasedonARMWANGYuanli,WANGLi(In

2、formationEngineeringCollege,WuhanUniversityofTechnology,Wuhan,430070,China)Abstract:Theembeddedsystemisacustomizationcomputingsystemwhichisintegratewithhardware,realtimeoperatingsystemandapplicationsoftware,itisoneofhottrendsmakingtheembeddedsystemnetworking1ThispapermakestheSamsungS344B0XARMboardas

3、thehardwareplatformandC OSIIsystemassoftwareplatform1InordertoresolvethelackofTCP IPIIsystem1stackinC OSIIkernel,thispaperfirstanalyzesstandardTCP IPstack,thenpresentsasimplifiedschemetoimplementanewembeddedTCP IPstack,whichisbasedonARMprocessorandC OSKeywords:embeddedsystem;TCP IP;ARM;C OSIIkernel随

4、着嵌入式系统与网络的日益结合,越来越多的嵌入式设备实现Internet网络化。在嵌入式实时操作系统中引入TCP IP协议栈,以支持嵌入式设备接入网络,已成为嵌入式领域重要的研究方向。多C OSII是一种占先式、任务、移植性强的免费公开源代码的实时操作系统,然而他只是一个实时的任务调度及通信内核,系统内核本身并没有集成TCP IP协议栈,所以不能满足嵌入式设备联网的需要。为了使基于ARM和C OSII的嵌入式系统能如以太网协议(ETH)、光纤分布式数据接口协议(FDDI)、点到点链路协议(PPP)等。这些协议由硬件(如网络适配器)和软件(如网络设备驱动程序)共同实现,完成主机与各种网络的数据交换

5、。实现网络化,必须使用外挂的TCP IP协议栈或者根据硬件平台和实际应用重新设计实现新的协议栈。由于TCPIP协议比较复杂,而目前嵌入式系统中大量应用低速处理器,受内存和速度限制,实现完整的TCPIP协议较为困难,有必要将TCP IP协议简化。1TCP IP协议分析计算机网络是一个层次结构,其各层及其协议的集合,称为网络的体系结构。Internet上使用的参考体系是TCP IP体系结构,结构如图1所示,他包括应用层、传输层、网络层和主机到网络接口4层。最底层为主机到网络接口层,他包括多种网络协议,收稿日期:20050726图1TCP IP体系结构第2层为网络层,他只有一个网际协议(IP)。IP

6、的主要功能是为不同网络的主机之间发送数据报的操作序列提供无连接服务。ARP(地址转换协议)是IP协议的一个附属协议,他将IP地址转换为这个网络的链路层地址。ICMP(网际控制报文协议)总是与IP协议配置在一起,他运行在IP协议之上,发送一些控制信息,帮助Internet处理差错。第3层为传输层,他包括2个主要协议:传输控制协议(TCP)和用户数据报协议(UDP)。TCP提供一种面向连接的、可行的、有序的字节流服务。UDP提供不可行4的数据报传送信息,并通过校验和来确保消息的正确性,但他没有流量控制,也不保证可行的、有序的传输。第4层为应用层,包含所有应用协议如Telnet(远程登陆),FTP(

7、文件传输),FFTP(普通文件传输协议),SMTP(电子邮件),DNS(域名服务),HTTP(超文本传输协议)等。TCP IP的层次结构中,各层实现对等层之间通信协之间提供动态映射。嵌入式系统中仅响应ARP请求,发送ARP回答包。请求者广播出包含ARP请求的以太帧、目的以太网地址为全1的广播地址。本机收到后,由目的IP地址发现自己是目的主机,发送一个ARP回答。UDP协议是一种不可靠的传输协议,目前多用于语音和视频传输等流媒体应用中,考虑到嵌入式设备在工业控制等专用领,其传输的可行性可以通过,UDP协议。 IP该层实现了TCP IP协议栈与底层网络驱动程序模块的隔离,使得TCP IP协议栈的实

8、现与底层硬件无关。一方面使得系统移植到其他硬件平台时只需对底层的中断控制系统进行修改而不需对TCP IP协议栈进行修改,减少移植工作量;另一方面使得系统增加网络新功能时只需对TCP IP协议栈进行修改而不需对底层的中断控制系统进行修改。该模块包含以太网初始化、数据包的接收和发送3个函数。(1)voidEtherDevInit()议,彼此是相互独立的,上层仅能通过接口知道下层提供的服务,而不知道下层的具体实现,因而用户数据是逐层依次复制给下层完成网络通信的。2协议裁减方案标准的TCP比较高,然而,有限,在这些嵌入式系统中实现标准的TCP IP协议栈将占用大量系统资源,因此嵌入式TCP IP必须进

9、行简化和优化,尽可能做到代码精简、降低存储开销。211IP协议IP协议是TCP IP的基础,为不同网络的主机之间发送数据报的操作序列提供无连接服务。通过在数据报前添加IP协议头,使每个数据报具有寻址能力。嵌入式系统只把IP作为传输工具,进行简化以完成主要的操作。得到IP包后,检验IP头部的版本、目的地址、校验和正确否,解析出协议类型字段,由此交给相应的高层协议处理。发送IP包时,将缓冲区内的源地址与目的地址互换,设置校验和,然后交给下层协议处理。若不符合要求,则将此包丢弃。IP包最大可以为65kB,可以分段传输,而在嵌入式系统里根本无法容纳如此大的数据包,因此一般不支持分段传输,对于分段的功能

10、可以裁减不要。所以限制MCU发送和接收数据包的方式以避免分段传输,从而减少程序复杂度。212ICMP协议ICMP协议用于报告在数据报过程中的错误,IP协议以太网初始化函数,负责实现网络接口层、以及下层的物理设备驱动程序的初始化,数据结构的初始化。(2)BOOLEtherOutput()以太网发送函数,根据上层类型、源MAC地址及目的MAC地址组成以太网发送数据包,调用网卡发送函数将该数据包发送到网卡控制芯片中。(3)voidEtherInput()以太网接收函数,根据帧类型字段选择将该帧交给哪个上层协议模块处理。312ARP协议以太网的数据通信依赖于硬件MAC地址,因而需要系统实现IP地址到M

11、AC地址的转换功能。ARP协议使得网络上的每个主机动态地建立一张IP地址和链路地址之间的映射表。在协议中使用结构体SARPEntry来保存地址映射。structSARPEntryIP_ADDRIPAddr;BYTEEtherAddrETHER_ADDR_LEN; 3超时表示该地址无效,将地址映射从表中删除3 WORDtime;是无连接的,他无法将报文和错误信息传到最初的主机,ICMP将状态信息和错误信息发送到发报文的主机。因此予以采用。213TCP协议在TCP协议中采用停止等待算法代替滑动窗口算法。这一方面是由于数据量小,对网络拥塞不会产生太大影响,从而可以裁减TCP的流量控制功能;另一方面则

12、是因为数据量小时,采用停止等待算法的传输效率和滑动窗口算法的效率差不多,因此采用简单停止等待算法代替复杂的滑动窗口算法,不但减少了实现难度,提高了处理速度,同时取消了TCP发送缓存区和接收缓存区,从而减少了占用存储空间。214其他协议ARP协议为32位IP地址到对应的48位以太网地址协议中的函数声明如下,注意函数返回指针作为操作对象,即在协议内部实现零拷贝:voidARPInit()structSMemHeadDATA3ARPQuery()structSMemHeadDATA3ARPInput()voidARPAddEntry(structSARPPacketDATA3ARPPacket)5王

13、原丽等:基于ARM的嵌入式TCP IP协议栈的实现息,该结构体定义如下:typedefstructSTCBstructSTCBDATA3pNext;BYTETCPState; 3连接标识3 WORDPortScr;WORDPortDest;IP_ADDRIPScr;IP_ADDRIPDest;Seqine;3;ndM;is;3重传计时器3imer;3重传次数3ERetrantimes;3是否需要发送确认分组3BOOLbNeedAck;3延时确认计时器3WORDDelayAckTimer;3最后确认计时器3WORDLastAckTimer;3回调函数3void(CODE3accept)(stru

14、ctSTCBDATA3pNewTCB);void(CODE3recv)(voidDATA3buf,WORDsize)void(CODE3close)(structSTCBDATA3pSocket)socketBOOLARPFind(BYTEEtherAddr,IP_ADDRIPAddr)voidARPTimer()函数ARPInit()负责ARP协议的初始化,当进行以太网封装时,调用ARPFind()查找本地ARP表,如果表中没有该记录,则调用ARPQuery()函数发出ARP请示报文;ARPInput()则对输入的ARP报文进行处理。ARPAddEntry()负责对ARP表添加记录。定时器A

15、RPTimer()负责对ARP表项的更新工作。定时器每隔一段时间就把表项的ttl减1,当值为负时,则将该表项删除。313IP协议IP协议主要完成2个功能IP计过程中,对UD以确定是ICMP包,然后根据数据包的类型进行相应的处理。主要函数如下:WORDCheckSum(WORDDATA3buff,WORDsize,DWORDInSum)校验函数,负责对IP包头的首部校验和进行处理。voidIPInput(structSMemHeadDATA3MemHead)4基于S3C44BOX处理器的ARM硬件平台对于TCP IP网络接入的嵌入式系统的研究,实验室采用以Samsung公司的S3C44B0X为核

16、心的ARM系统开发平台。开发板上主要配置包括8MBSDRAM,2MBFLASH;输入输出设备包括RART以及串口、以太网口、在USB等。实现TCP IP协议栈过程中,都存在一个或多个与紧缩结构体相关的宏。ARM作为32位的处理器,并不支持非对齐字节的传输。一旦C语言中使用了32位的指针操作一个非4字节对齐的数据,ARM将陷入一个异常。只要解决4字节的对齐问题,协议栈就能在ARM开发板正常运行。一般情况下C语言的结构体struct是4字节对齐的,但是在处理数据包的时候一定要在定义struct的时候使用_packed关键字,让编译器放弃struct的字节对齐:#definedefinedefine

17、definePACK_PACK_PACK_PACK_STRUCT_FIELD(x)x_attribute_(packed)STRUCT_STRUCT_attribute_(packed)STRUCT_BEGINSTRUCT_ENDIP接收函数,根据协议类型,提交上层协议处理。BOOLIPOutput(structSMemHeadDATA3MemHead)IP发送函数,他包括生成IP报头,调用以太网发送函数将IP包发送给以太网接收模块。314ICMP协议ICMP协议主要用于报告在数据报过程中的错误和传送控制信息。ICMP报文封装在IP数据包的数据段部分进行传送,其实现比较单一。使用单一的函数对I

18、CMP报文进行处理。voidICMPInput(structSMemHeadDATA3MemHead)315TCP协议传输数TCP协议数据传输可分为3个阶段:建立连接、据和断开连接。他的实现过程可以用状态机来描述。建立连接有2种方法:主动打开和被动打开。服务器端是一种被动打开,他一直在侦听连接请求;而客户端是一种主动打开,他发送连接请求以建立连接。研究发现,如果TCP层的上层实现服务器端的应用,可以将标准TCP状态机建立连接过程中客户端建立连接的状态机部分简化掉。同理,如果应用是基于客户端的,可以将服务器端建立连接的状态机部分简化掉。断开连接有两种方式:主动断开连接和被动断开连接。被动断开连接

19、的处理较为简单,但标准TCP协议的主动断开连接的状态机部分过于复杂。经过实验发现,在需要主动断开连接的时候,发送一个Fin数据报;接收到对Fin数据报的确认后,再发送一个Reset数据报,即可顺利完成一次主动断开连接。本文定义一个传输控制块STCB来保存TCP的状态信65基于C OSII的网络平台C OSII是一种占先式、多任务、移植性强的免费公开源代码的实时操作系统,内核属于抢占式,最多可以管理60个任务。目前嵌入式设备上TCP IP方案有很多种,但面向低端应用的开源嵌入式网络平台还较少。C OSII系统内核本身没有集成TCP IP协议栈。为了使基于ARM和C OSII的嵌入式系统实现网络化

20、,从而重新设计实现了上面所讲述新的协议栈。协议栈实现的过程中对于操作系统应注意的2个问题:(下转第9页)识,更有利于学生创新能力的培养。为了使学生能够系统地掌握嵌入式系统开发的基本知识,对复杂实用的外围接口模块开发、嵌入式操作系统C OSII和CLinux移植有一个全面的了解,在实验平台上设计了如下实验内容。实验的第一阶段主要要求熟悉软硬件开发环境,熟练使用这些开发环境和各种开发软件,掌握基本的软硬件调试方法,为后面的实验打下基础。设计的主要实验有:集成开发环境使用;简单的嵌入式系统应用程序开发;ARM指令的编程。实验的第二阶段主要是基础技能性实验,掌握嵌入式平台的软件调试,结构;LED实验;

21、LCD;D;C OSII微处理器为核心的、完整的嵌入式系统教学的实验体系。学生不仅能够系统地掌握嵌入式系统开发的基本知识,而且对复杂实用的外围接口模块开发、嵌入式操作系统移植有一个全面的了解。在实验内容的设置及ARM7实验教学系统的开发过程中,针对计算机专业学生的特点,改进了目前嵌入式系统教学实验平台的不足,注重他们硬件设计能力的培养,。,A12004C1北京:北京航空航天大学出版社,2004,9:828412周立功1关于嵌入式系统教学的建议A12003年全国单操作系统移植实验;操作系统移植实验。实验的第三阶段主要是实用性及针对性极强,代表了当今电子应用先进主流技术发展方向的实验,使得学生能尽

22、快地成为市场需要的人才。设计的主要实验内容有:USB接口电路模块及软件设计;以太网接口电路模块及片机学会年会发言材料12003,10,3朱一成,崔寅鸣,张建功1基于MetroTRK的龙珠嵌入式系统实验平台J1实验技术与管理,2004,(6):919414田泽1嵌入式系统开发与应用实验教程M1北京:北京航空航天大学出版社,200415北京微芯力科技有限公司1基于ARM的嵌入式系统教学实软件设计;GPRS技术应用实验;GPS技术应用实验。4结语以ARM7实验教学系统为硬件平台,建立了以ARM验开发平台WS701J1中国现代教育装备,2004,(4)16李曦,周亦男,周学海1嵌入式系统设计系列课程建设J1教育与现代化,2004,(4):48511作者简介黄廷辉男,1970年出生,硕士,讲师。主要从事操作系统及嵌入式系统方向的研究。(上接第6页)(1)消息6结语本文首先对标准的TCP IP协议栈进行了分析,提出了协议栈裁减方案,在此

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论