欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    基于ARM的嵌入式TCP_IP协议栈的实现.pdf

    • 资源ID:74680018       资源大小:197.20KB        全文页数:4页
    • 资源格式: PDF        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于ARM的嵌入式TCP_IP协议栈的实现.pdf

    1994-2010 China Academic Journal Electronic Publishing House.All rights reserved.http:/基于ARM的嵌入式TCP?IP协议栈的实现王原丽,王丽(武汉理工大学 信息工程学院湖北 武汉430070)摘要:嵌入式系统是一种将底层硬件、实时操作系统和应用软件相结合的专用计算机系统,网络化是嵌入式系统的主要趋势之一。本文以Sam sung S3C44BOX芯片为核心的ARM开发板作为硬件平台,以C?OSII实时操作系统作为软件平台,针对C?OSII内核中不支持TCP?IP协议栈,无法适应嵌入式设备网络化需要的问题,本文首先对标准的TCP?IP协议栈进行了分析,然后提出了简化实现一个基于ARM和C?OSII的嵌入式TCP?IP协议栈方案。关键词:嵌入式系统;TCP?IP;ARM;C?OSII内核中图分类号:TN 915104文献标识码:B文章编号:1004373X(2005)2210403I mplementation of Embedded TCP?IP Protocol Based on ARMWAN G Yuanli,WAN G L i(Information Engineering College,W uhan U niversity of Technology,W uhan,430070,China)Abstract:The embedded system is a custom ization computing system which is integrate w ith hardware,realti me operatingsystem and application software,it is one of hot trends making the embedded system networking1This paper makes the Sam sungS344B0X ARM board as the hardware platform andC?OSII system as software platform1In order to resolve the lack of TCP?IPstack inC?OS II kernel,this paper first analyzes standard TCP?IP stack,then presents a si mplified scheme to i mplement a newembedded TCP?IP stack,which is based on ARM processor andC?OSII system1Keyw ords:embedded system;TCP?IP;ARM;C?OSII kernel收稿日期:20050726随着嵌入式系统与网络的日益结合,越来越多的嵌入式设备实现Internet网络化。在嵌入式实时操作系统中引入TCP?IP协议栈,以支持嵌入式设备接入网络,已成为嵌入式领域重要的研究方向。C?OSII是一种占先式、多任务、移植性强的免费公开源代码的实时操作系统,然而他只是一个实时的任务调度及通信内核,系统内核本身并没有集成TCP?IP协议栈,所以不能满足嵌入式设备联网的需要。为了使基于ARM和C?OSII的嵌入式系统能实现网络化,必须使用外挂的TCP?IP协议栈或者根据硬件平台和实际应用重新设计实现新的协议栈。由于TCP?IP协议比较复杂,而目前嵌入式系统中大量应用低速处理器,受内存和速度限制,实现完整的TCP?IP协议较为困难,有必要将TCP?IP协议简化。1TCP?IP协议分析计算机网络是一个层次结构,其各层及其协议的集合,称为网络的体系结构。Internet上使用的参考体系是TCP?IP体系结构,结构如图1所示,他包括应用层、传输层、网络层和主机到网络接口4层。最底层为主机到网络接口层,他包括多种网络协议,如以太网协议(ETH)、光纤分布式数据接口协议(FDD I)、点到点链路协议(PPP)等。这些协议由硬件(如网络适配器)和软件(如网络设备驱动程序)共同实现,完成主机与各种网络的数据交换。图1TCP?IP体系结构第2层为网络层,他只有一个网际协议(IP)。IP的主要功能是为不同网络的主机之间发送数据报的操作序列提供无连接服务。ARP(地址转换协议)是IP协议的一个附 属协议,他将IP地址转换为这个网络的链路层地址。ICM P(网际控制报文协议)总是与IP协议配置在一起,他运行在IP协议之上,发送一些控制信息,帮助Internet处理差错。第3层为传输层,他包括2个主要协议:传输控制协议(TCP)和用户数据报协议(UDP)。TCP提供一种面向连接的、可行的、有序的字节流服务。UDP提供不可行4嵌入式技术王原丽等:基于ARM的嵌入式TCP?IP协议栈的实现 1994-2010 China Academic Journal Electronic Publishing House.All rights reserved.http:/的数据报传送信息,并通过校验和来确保消息的正确性,但他没有流量控制,也不保证可行的、有序的传输。第4层为应用层,包含所有应用协议如Telnet(远程登陆),FTP(文件传输),FFTP(普通文件传输协议),SM TP(电子邮件),DNS(域名服务),HTTP(超文本传输协议)等。TCP?IP的层次结构中,各层实现对等层之间通信协议,彼此是相互独立的,上层仅能通过接口知道下层提供的服务,而不知道下层的具体实现,因而用户数据是逐层依次复制给下层完成网络通信的。2协议裁减方案标准的TCP?IP协议栈对计算机处理器、存储器要求比较高,然而,嵌入式系统的计算资源和存储资源都非常有限,在这些嵌入式系统中实现标准的TCP?IP协议栈将占用大量系统资源,因此嵌入式TCP?IP必须进行简化和优化,尽可能做到代码精简、降低存储开销。211IP协议IP协议是TCP?IP的基础,为不同网络的主机之间发送数据报的操作序列提供无连接服务。通过在数据报前添加IP协议头,使每个数据报具有寻址能力。嵌入式系统只把IP作为传输工具,进行简化以完成主要的操作。得到IP包后,检验IP头部的版本、目的地址、校验和正确否,解析出协议类型字段,由此交给相应的高层协议处理。发送IP包时,将缓冲区内的源地址与目的地址互换,设置校验和,然后交给下层协议处理。若不符合要求,则将此包丢弃。IP包最大可以为65 kB,可以分段传输,而在嵌入式系统里根本无法容纳如此大的数据包,因此一般不支持分段传输,对于分段的功能可以裁减不要。所以限制MCU发送和接收数据包的方式以避免分段传输,从而减少程序复杂度。212ICM P协议ICM P协议用于报告在数据报过程中的错误,IP协议是无连接的,他无法将报文和错误信息传到最初的主机,ICM P将状态信息和错误信息发送到发报文的主机。因此予以采用。213TCP协议在TCP协议中采用停止等待算法代替滑动窗口算法。这一方面是由于数据量小,对网络拥塞不会产生太大影响,从而可以裁减TCP的流量控制功能;另一方面则是因为数据量小时,采用停止等待算法的传输效率和滑动窗口算法的效率差不多,因此采用简单停止等待算法代替复杂的滑动窗口算法,不但减少了实现难度,提高了处理速度,同时取消了TCP发送缓存区和接收缓存区,从而减少了占用存储空间。214其他协议ARP协议为32位IP地址到对应的48位以太网地址之间提供动态映射。嵌入式系统中仅响应ARP请求,发送ARP回答包。请求者广播出包含ARP请求的以太帧、目的以太网地址为全1的广播地址。本机收到后,由目的IP地址发现自己是目的主机,发送一个ARP回答。UDP协议是一种不可靠的传输协议,目前多用于语音和视频传输等流媒体应用中,考虑到嵌入式设备在工业控制等专用领域中在网络传输的是重要的数据和命令,其传输的可行性可以通过TCP协议来保证,因此裁掉UDP协议。3嵌入式TCP?IP协议栈的实现311以太网接口协议该层实现了TCP?IP协议栈与底层网络驱动程序模块的隔离,使得TCP?IP协议栈的实现与底层硬件无关。一方面使得系统移植到其他硬件平台时只需对底层的中断控制系统进行修改而不需对TCP?IP协议栈进行修改,减少移植工作量;另一方面使得系统增加网络新功能时只需对TCP?IP协议栈进行修改而不需对底层的中断控制系统进行修改。该模块包含以太网初始化、数据包的接收和发送3个函数。(1)void EtherDevInit()以太网初始化函数,负责实现网络接口层、以及下层的物理设备驱动程序的初始化,数据结构的初始化。(2)BOOL EtherOutput()以太网发送函数,根据上层类型、源MAC地址及目的MAC地址组成以太网发送数据包,调用网卡发送函数将该数据包发送到网卡控制芯片中。(3)void EtherInput()以太网接收函数,根据帧类型字段选择将该帧交给哪个上层协议模块处理。312ARP协议以太网的数据通信依赖于硬件MAC地址,因而需要系统实现IP地址到MAC地址的转换功能。ARP协议使得网络上的每个主机动态地建立一张IP地址和链路地址之间的映射表。在协议中使用结构体SARPEntry来保存地址映射。struct SARPEntryIP_ADDR IPA ddr;BYTE EtherA ddrETHER_ADDR_L EN;?3 超时表示该地址无效,将地址映射从表中删除3?WORD ti me;协议中的函数声明如下,注意函数返回指针作为操作对象,即在协议内部实现零拷贝:void ARP Init()struct SM emHead DA TA3ARPQ uery()struct SM emHead DA TA3ARP Input()void ARPA ddEntry(struct SARPPacket DA TA3ARPPacket)5现代电子技术2005年第22期总第213期?嵌入式与单片机?1994-2010 China Academic Journal Electronic Publishing House.All rights reserved.http:/BOOL ARPFind(BYTE EtherA ddr,IP_ADDR IPA ddr)void ARPT i mer()函数ARP Init()负责ARP协议的初始化,当进行以太网封装时,调用ARPFind()查找本地ARP表,如果表中没有该记录,则调用ARPQuery()函数发出ARP请示报文;ARP Input()则对输入的ARP报文进行处理。ARPAddEntry()负责对ARP表添加记录。定时器ARPTimer()负责对ARP表项的更新工作。定时器每隔一段时间就把表项的ttl减1,当值为负时,则将该表项删除。313IP协议IP协议主要完成2个功能。分别是对接收的IP数据包首部进行校验和检查以及对IP数据包进行解析。由于在设计过程中,对UDP协议进行了裁减,因此IP层只需要识别以确定是ICM P包还是TCP包,然后根据数据包的类型进行相应的处理。主要函数如下:WORD CheckSum(WORD DA TA3buff,WORDsize,DWORD InSum)校验函数,负责对IP包头的首部校验和进行处理。void IP Input(struct SM emHead DA TA3M emHead)IP接收函数,根据协议类型,提交上层协议处理。BOOL IPOutput(struct SM emHead DA TA3M emHead)IP发送函数,他包括生成IP报头,调用以太网发送函数将IP包发送给以太网接收模块。314ICM P协议ICM P协议主要用于报告在数据报过程中的错误和传送控制信息。ICM P报文封装在IP数据包的数据段部分进行传送,其实现比较单一。使用单一的函数对ICM P报文进行处理。void ICM P Input(struct SM emHead DA TA3M emHead)315TCP协议TCP协议数据传输可分为3个阶段:建立连接、传输数据和断开连接。他的实现过程可以用状态机来描述。建立连接有2种方法:主动打开和被动打开。服务器端是一种被动打开,他一直在侦听连接请求;而客户端是一种主动打开,他发送连接请求以建立连接。研究发现,如果TCP层的上层实现服务器端的应用,可以将标准TCP状态机建立连接过程中客户端建立连接的状态机部分简化掉。同理,如果应用是基于客户端的,可以将服务器端建立连接的状态机部分简化掉。断开连接有两种方式:主动断开连接和被动断开连接。被动断开连接的处理较为简单,但标准TCP协议的主动断开连接的状态机部分过于复杂。经过实验发现,在需要主动断开连接的时候,发送一个Fin数据报;接收到对Fin数据报的确认后,再发送一个Reset数据报,即可顺利完成一次主动断开连接。本文定义一个传输控制块STCB来保存TCP的状态信息,该结构体定义如下:typedef struct STCBstruct STCB DA TA3pN ext;BYTE TCPState;?3 连接标识3?WORD PortScr;WORD PortDest;IP_ADDR IPScr;IP_ADDR IPDest;DWORD SeqM ine;DWORD SeqH is;?3 希望接收的数据包序列号3?WORD W ndM ine;WORD W ndH is;WORD RetranT i mer;?3 重传计时器3?BYTE Retranti mes;?3 重传次数3?BOOL bN eedA ck;?3 是否需要发送确认分组3?WORD DelayA ckT i mer;?3 延时确认计时器3?WORD L astA ckT i mer;?3 最后确认计时器3?3 回调函数3?void(CODE3accept)(struct STCB DA TA3pN ewTCB);void(CODE3recv)(void DA TA3buf,WORD size)void(CODE3close)(struct STCB DA TA3pSocket)socket4基于S3C44BOX处理器的ARM硬件平台对于TCP?IP网络接入的嵌入式系统的研究,实验室采用以Sam sung公司的S3C44B0X为核心的ARM系统开发平台。开发板上主要配置包括8MBSDRAM,2MBFLASH;输入输出设备包括RART以及串口、以太网口、U SB等。在实现TCP?IP协议栈过程中,都存在一个或多个与紧缩结构体相关的宏。ARM作为32位的处理器,并不支持非对齐字节的传输。一旦C语言中使用了32位的指针操作一个非4字节对齐的数据,ARM将陷入一个异常。只要解决4字节的对齐问题,协议栈就能在ARM开发板正常运行。一般情况下C语言的结构体struct是4字节对齐的,但是在处理数据包的时候一定要在定义struct的时候使用_packed关键字,让编译器放弃struct的字节对齐:#define PACK_STRUCT_F IELD(x)x_attribute_(packed)#define PACK_STRUCT_STRUCT_attribute_(packed)#define PACK_STRUCT_BEGI N#define PACK_STRUCT_END5基于C?OSII的网络平台C?OSII是一种占先式、多任务、移植性强的免费公开源代码的实时操作系统,内核属于抢占式,最多可以管理60个任务。目前嵌入式设备上TCP?IP方案有很多种,但面向低端应用的开源嵌入式网络平台还较少。C?OSII系统内核本身没有集成TCP?IP协议栈。为了使基于ARM和C?OSII的嵌入式系统实现网络化,从而重新设计实现了上面所讲述新的协议栈。协议栈实现的过程中对于操作系统应注意的2个问题:(下转第9页)6嵌入式技术王原丽等:基于ARM的嵌入式TCP?IP协议栈的实现 1994-2010 China Academic Journal Electronic Publishing House.All rights reserved.http:/识,更有利于学生创新能力的培养。为了使学生能够系统地掌握嵌入式系统开发的基本知识,对复杂实用的外围接口模块开发、嵌入式操作系统C?OSII和CL inux移植有一个全面的了解,在实验平台上设计了如下实验内容。实验的第一阶段主要要求熟悉软硬件开发环境,熟练使用这些开发环境和各种开发软件,掌握基本的软硬件调试方法,为后面的实验打下基础。设计的主要实验有:集成开发环境使用;简单的嵌入式系统应用程序开发;ARM指令的编程。实验的第二阶段主要是基础技能性实验,要求扎扎实实掌握嵌入式平台的软件调试,理解嵌入式软件的程序特点和结构。设计的主要实验内容有:串行接口通信实验;键盘及LED实验;LCD驱动控制实验;UDP通讯实验;C?OSII操作系统移植实验;CL inux操作系统移植实验。实验的第三阶段主要是实用性及针对性极强,代表了当今电子应用先进主流技术发展方向的实验,使得学生能尽快地成为市场需要的人才。设计的主要实验内容有:U SB接口电路模块及软件设计;以太网接口电路模块及软件设计;GPRS技术应用实验;GPS技术应用实验。4结语以ARM 7实验教学系统为硬件平台,建立了以ARM微处理器为核心的、完整的嵌入式系统教学的实验体系。学生不仅能够系统地掌握嵌入式系统开发的基本知识,而且对复杂实用的外围接口模块开发、嵌入式操作系统移植有一个全面的了解。在实验内容的设置及ARM 7实验教学系统的开发过程中,针对计算机专业学生的特点,改进了目前嵌入式系统教学实验平台的不足,注重他们硬件设计能力的培养,使他们尽快成为一名合格的嵌入式系统开发人才。参考文献1张福炎,俞建新1 漫谈当前的嵌入式系统教学A 12004年全国第五届嵌入式系统学术交流会论文集C 1 北京:北京航空航天大学出版社,2004,9:828412周立功1 关于嵌入式系统教学的建议A 12003年全国单片机学会年会发言材料12003,10,3朱一成,崔寅鸣,张建功1 基于M etro TRK的龙珠嵌入式系统实验平台J 1 实验技术与管理,2004,(6):919414田泽1 嵌入式系统开发与应用实验教程M 1 北京:北京航空航天大学出版社,200415北京微芯力科技有限公司1 基于ARM的嵌入式系统教学实验开发平台W S701 J 1 中国现代教育装备,2004,(4)16李曦,周亦男,周学海 1 嵌入式系统设计系列课程建设J 1 教育与现代化,2004,(4):48511作者简介黄廷辉男,1970年出生,硕士,讲师。主要从事操作系统及嵌入式系统方向的研究。(上接第6页)(1)消息C?OSII没有对消息队列中的消息进行管理,因此不能直接使用,必须在C?OSII基础上重新实现。为了实现对消息的管理,定义了以下结构体:typedef structOS_EV EN T3pQ;void3pvQ EntriesMAX_QU EU E_EN TR IES;stack_mbox_t;在以上结构中,包括OS_EVENT类型的队列指针(pQ)和队列内的消息(pvQEntries)两部分,对队列本身的管理利用C?OSII自己的OSQ操作完成,然后使用C?OSII中的内存管理模块实现对消息的创建、使用、删除回收,两部分综合起来形成了协议栈的消息队列功能。(2)创建新线程在C?OSII中,没有线程的概念,只有任务。他已经提供了创建新任务的系统AP I调用OSTaskCreate封装一下,就可以实现创建新线程,但实现时要由用户事先为协议栈中创建的线程分配好优先级。6结语本文首先对标准的TCP?IP协议栈进行了分析,提出了协议栈裁减方案,在此基础上实现了一个嵌入式TCP?IP协议栈。作者已设计了一个简单的W eb Server,通过客户端浏览器访问ARM开发板来实现对嵌入式TCP?IP栈的验证。参考文献1 Douglas E Comer1 用TCP?IP进行网际互联 卷1:原理、协议与结构M 1 林瑶,蒋慧,等译1 北京:电子工业出版社,20011 2美 Jean L abrosse J1 嵌入式实时操作系统 C?OSIIM 1第2版1 邵贝贝译1 北京:北京航空航天大学出版社,200313周立功1ARM嵌入式系统基础教程M 1 北京:北京航空航天大学出版社,200314胥静1 嵌入式系统设计与开发实例详解基于ARM的运用M 1北京:北京航空航天大学出版社,20051作者简介王原丽武汉理工大学信息工程学院,副教授。主要从事光纤通信方面的研究工作。王丽武汉理工大学信息工程学院,硕士研究生。研究方向为计算机网络通信。9现代电子技术2005年第22期总第213期?嵌入式与单片机?

    注意事项

    本文(基于ARM的嵌入式TCP_IP协议栈的实现.pdf)为本站会员(qwe****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开