基于嵌入式网络接口的精简TCPIP协议栈的设计及实现.docVIP

基于嵌入式网络接口的精简TCPIP协议栈的设计及实现.doc

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于嵌入式网络接口的精简TCPIP协议栈的设计及实现

基于嵌入式网络接口的TCP/IP协议栈的设计及实现 摘要:根据嵌入式系统及其接入网络的特点,对标准TCP/IP协议栈进行裁减,设计了一种适用于8位微控制系统的嵌入式TCP/IP协议栈。将其移植到UCOSII上并与现有协议栈uIP进行对比测试。证明了其实用性。 关键词:TCP/IP协议栈 嵌入式网络接口 UCOSII uIP 引言 网络化是现代电子设备普遍的特点,嵌入式系统也不例外。使嵌入式设备接入网络,扩宽了设备的通信范围,也使操作者更加便于操控设备。但是,嵌入式系统具有处理能力有限、存储资源少、应用场合单一等特点,标准的TCP/IP协议栈显然不能直接运用于8位的微控制系统中。本文量体裁衣,设计一种精简的TCP/IP协议栈,主要包括ARP、ICMP、IP、UDP等协议。本协议栈的测试平台配置如下:STC12C5A60S2单片机、62256外部RAM存储器、RTL8019AS网络芯片、12M晶振。此协议栈可方便地移植到嵌入式实时操作系统UCOSII上,作为其一个任务,控制网络数据的收发。 1 TCP/IP协议的设计 图1 TCP/IP分层模型 一些常用协议在TCP/IP分层模型中所处的位置如图1所示。根据TCPIP协议分层的特点,在编写代码的过程中,可以围绕三个特点来设计:第一,由于协议栈每层都由头部和数据部分组成,而头部又由多个项组成,所以应将各层头部封装成为结构体形式。第二,当网络接口收到数据时,需要向上层传递或者在本层处理,这就需要判断数据包的类型。比如,当硬件接口收到数据时,需要对数据包类型进行判断,如果是IP包,则向上传递给IP层,如果是ARP包则调用处理ARP包的函数。第三,当网络接口发送数据时,数据从协议栈上层到下层,层层封装,最后由硬件接口发送。这就需要有对每层进行封装的函数。最后剩下的是数据的解封装和网络芯片驱动程序,数据的解封装相对简单,可在一个统一的函数中完成,而网络芯片驱动程序根据使用的芯片类型设计初始化、发送、接收数据三个函数即可。 1.1 ARP协议 在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。它就是通过地址解析协议获得的。 图2 协议栈处理流程 3 协议栈的测试及应用 本协议栈可方便地移植到各种嵌入式操作系统上,如UCOSII、RT-Thread,作为其一个任务或者线程,管理网络接口数据的收发。下面分两方面对本协议进行测试并与uIP协议进行对比,测试主机为连接在局域网上的PC机。 3.1 数据发送接收测试[3] 首先使用ping命令对简化协议栈链接情况测试,测试情况见图3所示,其中(a)是不带系统的协议栈测试结果,(b)是协议栈作为UCOSII一个任务的测试结果[2],(c)是uIP1.0协议栈的测试结果。这3副图表明本协议的速度与uIP协议相差无几。图4是进行数据的发送接收测试,上方是网络嗅探软件MiniSniffer,左下方是串口调试助手,右下方是网络调试助手。测试过程如下:串口调试助手首先发送0-9的数字给目的主机,并将发送的数据显示在自己的接收发送缓冲区域。此时网络调试助手收到0-9的数据,并显示在接收区域。然后,网络调试助手发送“hello”到开发板,经过协议栈处理后,通过串口发送给PC机,并显示在串口调试助手的发送接收缓冲区域。而这两次网络数据的发送接收均被网络嗅探软件记录,并将数据的内容显示出来。这表明本协议栈能够正常工作。 (a) (b) (c) 图3 简化协议栈链接情况测试 图4 数据接收测试 3.2 丢包率测试[4] 接下来,测试协议栈的可靠性。测试方法如下:每隔1秒、0.1秒和全速发送一个100字节的UDP数据包,共发送1000包,测试十次,计算平均丢包率。测试情况如表1所示。 表1 测试环境 1秒/包 0.1秒/包 全速 UCOSII下 0% 97.9% 61.0% 无操作系统下 0% 97.6% 58.5% 由表可知,当数据发送速率较低的情况下,几乎不丢包。但是随着数据发送速率的增加,丢包的现象越来越严重。然而在嵌入式控制系统中,数据随频繁发送但不需要高的速率和大的数据量。此外,如果加入上层确认机制或超时重传等机制,即使有丢包的情况,数据也能够被安全的被送达。在全速传送100字节UDP数据包情况下,数据速率可达14.7K/S。本设计已实际应用于以太网转串口的项目中。 结束语 由于本协议栈设计思路清晰,代码简短(1.7K RAM,7K ROM),所以很容易修改及移植。本协议栈探索了如何在嵌入式系统中编写一个精简的TCP/IP协议栈,未深究协议栈内存管理以及操作系统中对协议栈的影响,仍有需要改进和完善的地方。 参考文献 [1] [2] LABROSSE J J.嵌入式实时操作系统uC/OS-Ⅱ[M].2版.

文档评论(0)

f8r9t5c + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档