版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于嵌入式网络接口的TCPIP协议栈的设计及实现摘要:根据嵌入式系统及其接入网络的特点,对标准TCPIP协议栈进行裁减,设计了一种适用于8位微控制系统的嵌入式TCPIP协议栈。将其移植到UCOSII上并与现有协议栈uIP进行对比测试。证明了其实用性。关键词:TCP/IP协议栈 嵌入式网络接口 UCOSII uIP引言网络化是现代电子设备普遍的特点,嵌入式系统也不例外。使嵌入式设备接入网络,扩宽了设备的通信范围,也使操作者更加便于操控设备。但是,嵌入式系统具有处理能力有限、存储资源少、应用场合单一等特点,标准的TCP/IP协议栈显然不能直接运用于8位的微控制系统中。本文量体裁衣,设计一种精简的T
2、CP/IP协议栈,主要包括ARP、ICMP、IP、UDP等协议。本协议栈的测试平台配置如下:STC12C5A60S2单片机、62256外部RAM存储器、RTL8019AS网络芯片、12M晶振。此协议栈可方便地移植到嵌入式实时操作系统UCOSII上,作为其一个任务,控制网络数据的收发。1 TCP/IP协议的设计图1 TCP/IP分层模型一些常用协议在TCPIP分层模型中所处的位置如图1所示。根据TCPIP协议分层的特点,在编写代码的过程中,可以围绕三个特点来设计:第一,由于协议栈每层都由头部和数据部分组成,而头部又由多个项组成,所以应将各层头部封装成为结构体形式。第二,当网络接口收到数据时,需要
3、向上层传递或者在本层处理,这就需要判断数据包的类型。比如,当硬件接口收到数据时,需要对数据包类型进行判断,如果是IP包,则向上传递给IP层,如果是ARP包则调用处理ARP包的函数。第三,当网络接口发送数据时,数据从协议栈上层到下层,层层封装,最后由硬件接口发送。这就需要有对每层进行封装的函数。最后剩下的是数据的解封装和网络芯片驱动程序,数据的解封装相对简单,可在一个统一的函数中完成,而网络芯片驱动程序根据使用的芯片类型设计初始化、发送、接收数据三个函数即可。1.1 ARP协议在以太网中,一个主机要和另一个主机进行直接通信,除了要知道对方的IP地址外,还必须要知道目标主机的MAC地址。它就是通过
4、地址解析协议获得的1。在通用计算机系统中,ARP高速缓存一般设计成双向数据链的形式,这样整个缓存便可动态增减。但是在这种非线性的链表进行表项匹配查找时比较费时,所以这种形式并不适用于嵌入式系统。因此 ARP的地址缓存采用了线性数组的形式,它在内存中是连续线性存储的,查找速度快。由于嵌入式网络接口的通信节点一般不多,其ARP高速缓存容量不需要很大,因此可将其高速缓存设计成固定大小。ARP协议主要实现的结构体和函数为:ARP头部结构体ARPHDR、判断是否为ARP包的函数is_arp()、对ARP数据进行封装的函数make_arp()。1.2 IP协议IP协议是TCP/IP协议簇中最为核心的协议,
5、提供不可靠的无连接的数据报传送服务。TCP、UDP、ICMP等上层协议的数据包都要以IP数据报的格式传输。标准的IP协议包括分段和重组等功能,实现起来比较复杂。在嵌入式控制系统中,数据大都是少量而独立的,所以实现分段和重组不是必须的。本协议栈从两个方面对IP协议进行简化:第一,对接收到的IP数据报首先判断是否是自己的数据报,若不一致则丢弃该数据报;否则进行IP校验和的验证,当数据报无误后,去掉头部,将IP数据提交上层处理。第二,负责对UDP、ICMP等报文进行封装,交给数据链路层进行装帧。IP协议主要实现的结构体和函数为:IP头部结构体IPHDR、判断是否为IP数据报的函数is_ip()、对上
6、层数据进行IP数据报封装的函数make_ip()。1.3 ICMP协议ICMP协议是IP网络内为控制、测试、管理功能而设计的协议。ICMP的报文类型很多, 不同类型的报文由类型和代码字段共同决定。在嵌入式系统中,控制管理等功能并不是必须的,为了能够使用户了解设备是否可达,只要能够识别来自其他客户的回显请求并发送回显应答就可以了。ICMP协议主要实现的结构体和函数为:ICMP头部结构体ICMPHDR、判断是否为ICMP数据报的函数is_icmp()、对ICMP数据进行封装的函数make_icmp()。1.4 UDP协议本协议栈采用UDP作为传输层协议。从理论上看,TCP的可靠性是以许多复杂措施及
7、由此而增加的开销为代价换来的。TCP提供面向链接的、可靠的服务,而UDP是面向无连接的。由于UDP没有可靠性的保证机制,因此能够充分发挥物理通信设备的速度,全速地进行数据通信。又因为UDP没有点对点接入的要求,可以实现“一对多”、“多对多”的数据传输。UDP协议的开销很小,传输率比TCP高,实时性强。所以嵌入式TCP/IP协议中采用UDP协议作为运输层协议不失为明智之举。嵌入式系统中也可能存在对数据传输可靠性要求很高的情况。由于UDP协议没有超时重传、流量控制、应答确认、紧急数据加速等机制, 因此为了弥补它的缺陷,在应用层协议中加入相应的措施, 如给数据报加上顺序标识、定时等待、超时重传机制、
8、应答确认机制等辅助性的措施,确保数据能够正确安全地传输。从应用的角度看,本协议栈主要是应用于家用电器上网。对于温度、烟雾和湿度传感器 等的每秒一次地集中监控来说,发送频繁,包较小,只需前端设备向网络中广播实时状态等数据即可,因此选用UDP较为合适。UDP协议主要实现的结构体和函数为:UDP头部结构体UDPHDR、判断是否为UDP数据包的函数is_udp()、将数据封装成UDP包的函数make_udp()。2 协议栈处理流程协议栈接收数据包的过程就是解析数据包的过程,处理流程如图2所示。首先当一个数据帧到达时,网络接口控制程序将其读入缓冲区,并返回其长度。其次,主程序判断接收数据包的类型(IP或
9、ARP包)调用响应的解包代码进行处理。如果是ARP包,则解析ARP包,做更新ARP缓存或回应ARP请求等事宜。 若为IP包,则进一步判断数据包类型(ICMP或UDP包)调用相应的解包代码处理。若为ICMP包,判断是否为ICMP回显请求,如果是制作回显包并发送。如果是UDP包,解析出数据交由应用层处理。图2 协议栈处理流程3 协议栈的测试及应用本协议栈可方便地移植到各种嵌入式操作系统上,如UCOSII、RT-Thread,作为其一个任务或者线程,管理网络接口数据的收发。下面分两方面对本协议进行测试并与uIP协议进行对比,测试主机为连接在局域网上的PC机。3.1 数据发送接收测试3首先使用ping
10、命令对简化协议栈链接情况测试,测试情况见图3所示,其中(a)是不带系统的协议栈测试结果,(b)是协议栈作为UCOSII一个任务的测试结果2,(c)是uIP1.0协议栈的测试结果。这3副图表明本协议的速度与uIP协议相差无几。图4是进行数据的发送接收测试,上方是网络嗅探软件MiniSniffer,左下方是串口调试助手,右下方是网络调试助手。测试过程如下:串口调试助手首先发送0-9的数字给目的主机,并将发送的数据显示在自己的接收发送缓冲区域。此时网络调试助手收到0-9的数据,并显示在接收区域。然后,网络调试助手发送“hello”到开发板,经过协议栈处理后,通过串口发送给PC机,并显示在串口调试助手
11、的发送接收缓冲区域。而这两次网络数据的发送接收均被网络嗅探软件记录,并将数据的内容显示出来。这表明本协议栈能够正常工作。(a)(b)(c)图3 简化协议栈链接情况测试图4 数据接收测试3.2 丢包率测试4接下来,测试协议栈的可靠性。测试方法如下:每隔1秒、0.1秒和全速发送一个100字节的UDP数据包,共发送1000包,测试十次,计算平均丢包率。测试情况如表1所示。由表可知,当数据发送速率较低的情况下,几乎不丢包。但是随着数据发送速率的增加,丢包的现象越来越严重。然而在嵌入式控制系统中,数据随频繁发送但不需要高的速率和大的数据量。此外,如果加入上层确认机制或超时重传等机制,即使有丢包的情况,数据也能够被安全的被送达。在全速传送100字节UDP数据包情况下,数据速率可达14.7K/S。本设计已实际应用于以太网转串口的项目中。结束语由于本协议栈设计思路清晰,代码简短(1.7K RAM,7K ROM),所以很容易修改及移植。本协议栈探索了如何在嵌入式系统中编写一个精简的TCP/IP协议栈,未深究协议栈内存管理以及操作系统中对协议栈的影响,仍有需要改进和完善的地方。参
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度爱奇艺体育赛事赛事直播内容制作合同:股票投资回报保障协议3篇
- 二零二五年度环保型渣土运输船租赁合同3篇
- 二零二五年电子商务平台运营咨询合同2篇
- 二零二五年度桉树木材加工节能减排合同3篇
- 二零二五版医疗扶贫公益项目合同3篇
- 二零二五版股份收购项目风险评估及控制合同3篇
- 二零二五版生态旅游区建设项目招标合同及生态保护协议3篇
- 二零二五版数据中心电梯紧急抢修及日常维护合同3篇
- 二零二五年度房产交易居间服务合同12篇
- 二零二五版国际农业劳务输出与管理合同3篇
- 2024年电信综合部办公室主任年度述职报告(四篇合集)
- 购销合同电子版完整版
- 福建省福州市延安中学2023-2024学年八年级上学期期末物理模拟试卷+
- 2024年度医院肝胆外科实习生带教计划课件
- 微机原理与接口技术考试试题及答案(综合-必看)
- 劳务投标技术标
- 研发管理咨询项目建议书
- 转钱委托书授权书范本
- 一种配网高空作业智能安全带及预警系统的制作方法
- 某墓园物业管理日常管护投标方案
- 苏教版六年级数学上册集体备课记载表
评论
0/150
提交评论