(通信与信息系统专业论文)lwip在μcosⅡ平台上的移植与应用.pdf_第1页
(通信与信息系统专业论文)lwip在μcosⅡ平台上的移植与应用.pdf_第2页
(通信与信息系统专业论文)lwip在μcosⅡ平台上的移植与应用.pdf_第3页
(通信与信息系统专业论文)lwip在μcosⅡ平台上的移植与应用.pdf_第4页
(通信与信息系统专业论文)lwip在μcosⅡ平台上的移植与应用.pdf_第5页
已阅读5页,还剩71页未读 继续免费阅读

(通信与信息系统专业论文)lwip在μcosⅡ平台上的移植与应用.pdf.pdf 免费下载

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

文档简介

摘要 摘要 随着计算机技术的发展,嵌入式系统已经广泛应用于国防、工业、交通、能 源、信息技术以及日常生活等各个领域,并成为近年来新兴的研究热点,网络化 是主要趋势之一。在实际应用中,嵌入式系统的网络化,根据自身的不同特点和 需要,采用不同的方案。l w l p 是开源的t c p - i p 协议栈,l w l p 实现的重点是在保 持t c p i p 协议栈主要功能的基础上减少对r a m 的占用,这使l w l p 协议栈适合 在嵌入式系统中使用。l a c o s i i 是堪称最著名的实时开源操作系统,但毕竟只是 一个实时的任务调度及通信内核,缺少对外围设备和接口的支持,如没有文件系 统、网络协议、图形界面。因此选择采用p c o s i i 与免费的t c p d p 协议栈l w l p 相结合的方法实现嵌入式系统的网络化功能。 本文首先介绍了嵌入式t c p d p 协议栈的发展趋势,综合比较几种主要的嵌入 式t c p i p 协议栈,选择了l w l p 协议栈作为研究和开发的切入点。并对l w l p 协 议栈的框架结构,实现方法,进程模型,内存管理以及应用接口的设计作了简要 的分析。其中,l w i p 协议栈高效的内存管理机制是该协议栈设计的精髓所在。紧 接着对“c o s i i 的特点和内核机制进行了一个简要的介绍,然后阐述了p c o s i i 在华恒m c f 5 2 2 3 5 e v b 上的移植过程和l w l p 在p c o s 1 1 系统上的移植过程,在 上述基础上设计并完成了一个基于l w l p 的串口以太网协议转换器,包括基于 l w l p 的w e b s e r v e r 的实现,串口以太网协议转换器功能模块的实现,转换器在线 配置功能的实现。最后在文章的测试章节中对i a c o s i i 和l w l p 的移植进行了验 证,证明了移植的正确性,同时也对转换器的功能进行了验证,结果表明该转换 器能在串口设备和网络设备之间进行简单的数据传输。 关键词:l w l p 协议栈,l a c o s 一1 i ,移植,w 曲服务器,协议转换器 a b s t r a c t a b s t r a c t w i t ht h ed e v e l o p m e n to fc o m p u t e r , e m b e d d e ds y s t e mh a sb e e nu s e di nn a t i o n a l d e f e n s e ,i n d u s t r y , t r a f f i cc o n t r o l ,e n e r g ys o u r c e s ,i n f o r m a t i o nt e c h n o l o g ya n dc i v i ll i v i n g , a n db e c o m ear e s e a r c h i n gf o c u sw i t ho n eo ft h e h o tt r e n d si sm a k i n gi tn e t w o r k i n g i nt h e p r a c t i c a la p p l i c a t i o n s ,m a k i n ge m b e d d e ds y s t e mn e t w o r k i n gs h o u l dc h o o s ed i f f e r e n t p r o j e c t sb a s e do nt h e i rc h a r a c t e r i s t i c sa n dn e e d s l w l pi sa no p e ns o u r c et c p l ps t a c k w h o s ed e s i g ne m p h a s i si st ou s ea sl i t t l er a ma sp o s s i b l ew h i l em a i n t a i n i n gm o s t f u n c t i o n s o ft c p i ps t a c k s ol w l ps t a c ki sv e r ya p p r o p r i a t ei nt h ee m b e d d e ds y s t e m a p p l i c a t i o n r t c o s i ii af a m o u so p e ns o u r c er t o s ,b u t i to n l yc o n s i s t so fr e a lt i m et a s k s c h e d u l ea n dc o m m u n i c a t i o nk e r n e l ,l a c k i n gs u p p o r tt op e r i p h e r a le q u i p m e n ta n d i n t e r f a c e ,s u c ha sf i l es y s t e m ,n e t w o r kp r o t o c o l ,a n dg r a p h i ci n t e r f a c e s oi ti st h eb e s t c h o s et ot r a n s p l a n tt h eo p e ns o u r c et c p l ps t a c k l w l pt 0 1 t c o s ,i is y s t e ma n dr e a l i z e t h en e t w o r kc o n n e c t i o ni ne m b e d d e ds y s t e m i nt h i sp a p e r , f i r s t l yt h ed e v e l o p m e n to fe m b e d d e dt c p l ps t a c ki si n t r o d u c e d c o m p a r i s o no f s e v e r a lm a j o re m b e d d e dt c p l ps t a c k ,l w l pi sc h o s e na st h ee n t r yp o i n t f o rr e s e a r c ha n dd e v e l o p m e n t ,t h e r ei sap a r t i c u l a ra n a l y s i sf o rt h ep r o c e s sm o d e l ,t h e m a n a g e m e n to fb u f f e ra n dm e m o r y , t h ea p io fl w l p , t h ee f f i c i e n tm e m o r ym a n a g e m e n t m e c h a n i s mo ft h el w l pi st h ed i s t i l l a t i o no fd e s i g n s e c o n d l y , t h ek e r n e lo fe m b e d d e d r t o sp c o s - 1 1i sa n a l y z e da n dt h ep r o c e s so fh o wt ot r a n s p l a n ti a c o s - i it ot h e m c f 5 2 2 3 5p l a t f o r mi s 埘m a r ye x p a t i a t e do n t h i r d l y , t h ei m p l e m e n to fl w l ps t a c ka n d h o wt ot r a n s p l a n tl w l ps t a c kt o l t c o s 一1 is y s t e ma r ee x p a t i a t e do n b yt h ew o r ka b o v e , w ei n t r o d u c ean e wd e s i g nt h a tc a nb eu s e di nt h ec o n v e r s i o no ft h es e r i a ls i g n a la n d n e t w o r kd a t a ,e m b e d d e ds y s t e mr e a l i z e sn e t w o r kc o n n e c t i o n a tl a s t ,w ep r o v e dt h e c o r r e c t n e s so ft r a n s p l a n to ft t c o s 1 ia n dl w l p , b u ta l s ot h ef u n c t i o no ft h ec o n v e r t e ri s v a l i d a t e d ,t h er e s u l t ss h o wt h a tt h ec o n v e r t e rc a ni m p l e m e n tt h ed a t at r a n s f e rb e t w e e nt h e s e r i a ld e v i c ea n dn e t w o r k e q u i p m e n t k e y w o r d s :l w l p , p c o s 一1 1 ,t r a n s p l a n t ,w e bs e r v e r , p r o t o c o lc o n v e h o r 图表目录 图表目录 图2 1l w i p 协议的各个模块5 图2 2l w l p 协议的数据收发6 图2 3p b u fp o o l 的结构9 图2 4p b u fr a m 的结构10 图2 5p b u fr a m p b u fr e f 的结构l1 图3 1m c f 5 2 2 3 5 e v b 实物图1 4 图3 2m c f 5 2 2 3 5 开发板硬件资源1 4 图3 3l a c o s i i 的软硬件体系结构1 6 图3 4o sc p u h 中数据类型定义二1 7 图3 5 状态寄存器s r :18 图3 6 新建任务的堆栈2 0 图4 1 邮箱链表结构2 5 图4 2 申请邮箱节点2 6 图4 3 释放邮箱节点一2 6 图4 4 邮箱申请函数流程一2 7 图4 5l w l p 协议栈与底层网络对接2 9 图4 6 网络模块的初始化一:3 0 图4 7l w l p 协议栈的初始化3 0 图4 8 网络抽象层初始化3 2 图4 9m c f 5 2 2 3 x f e ei n i t 函数执行流程3 5 图4 1 0 网卡驱动缓冲区3 7 图4 1 1 接收中断处理流程3 9 图4 1 2 发送数据的中断处理4 0 图4 1 3m a c 帧格式4 1 图4 1 4 接收线程4 2 图4 15 发送线程4 3 图5 1w e b 服务器的框架结构4 4 图5 2w e b 浏览器、服务器与c g i 程序的关系4 6 图5 3 嵌入式w e b 服务器模块划分i 4 6 图5 4 初始化流程4 8 图5 5 应答处理流程4 9 图5 6 消息收发页面5 0 图5 7 在线配置页面5 0 图5 8u a r t 数据帧格式51 图5 9 串e l 以太网转换器的主要功能一5 3 图5 1 0 串1 3 以太网转换器的设计流程图5 4 v 图表目录 图5 11 串e l 以太网转换器的数据流图5 5 图6 1i a c o s i i 跟踪调试5 7 图6 2 任务调度测试5 8 图6 3p c o s i i 的任务调度:5 8 图6 4p i n g 测试图5 9 图6 5w e b 测试页面6 0 图6 6 测试平台实物图6 1 图6 7 转换器测试拓扑图一6 1 图6 8 串口发送界面一6 2 图6 9 浏览器接收界面6 2 图6 1 0 浏览器发送界面6 3 图6 1 1 串口接收界面6 3 图6 1 2 配置界面6 4 图6 13 在线配置结果一:一6 4 表3 - lc o d e w a r r i o r 编译器c 标准数据类型位数定义1 7 v l 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作 及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地方 外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为 获得电子科技大学或其它教育机构的学位或证书而使用过的材料。与 我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的 说明并表示谢意。 躲一吼叶年川日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁盘, 允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文的全 部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描 等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:弛垒! 熊 导师签 日期: 第一章绪论 第一章绪论 本章将介绍了课题的研究背景和研究意义。根据当前嵌入式t c w i p 的发展趋 势提出了选题意义,给出作者在课题中主要完成的工作,最后对各章内容作出简 单概括。 1 1t c m p 协议栈在嵌入式领域的发展 嵌入式i n t e m e t 指的是把嵌入式模块来作为一个桥梁来实现非网络设备的网络 化,是近几年发展起来的一项新兴概念和技术。通过把t c p 1 p 协议嵌入到设备的 m c u 中,在设备和以太网之间建立通信链路,通过i n t e m e t 共享嵌入式设备的信 息,实现设备的远程访问、控制和管理,对接入到网络上各个节点的设备实时监 控。国外许多大公司为了将嵌入式i n t e m e t 的标准和相关的开发技术标准化,特此 成立了一个嵌入式i n t e r n e t 联盟。嵌入式i n t e m e t 产品的开发和应用,将影响着系 统重构、远程监控、数据采集等领域的发展【l j 。 在国外的很多嵌入式操作系统如w i n d o w sc e ,e m b e d d e dl i n u x 等嵌都己具有 支持网络的功能,就目前国内的硬件和软件发展水平而言,现在研究的主要内容 是对嵌入式操作系统和嵌入式协议栈发展的研究。目前国内的嵌入式操作系统大 致可以分为两大类型:一类是基于l i n u x 的操作系统,另一类是自主版权的操作系 统。国内的嵌入式l i n u x 取得了一定的发展,虽然它们大部分已经具备了成熟的网 络功能,但大多数都是商业系统,并不能被广泛地了解和掌握。在自主版权的操 作系统方面,国内有桑夏2 0 0 0 操作系统和d e l t a o s 操作系统等。目前由于嵌入式 实时操作系统p c o s i i 的开放性和成熟性,它已成为各大企业及各个高校都研究 的重点。 嵌入式系统的处理能力以及存储资源都相对有限,因此把标准的t c p i p 协议 栈应用在嵌入式i n t e m e t 环境里是不合适的。为了在实现网络功能的同时节省系统 的资源,就需要对协议栈进行针对性的裁减。所以对t c p i p 协议的简化研究已成 为目前研究的重点和热剧2 】1 3 】。在各种嵌入式芯片上实现简化的t c p i p 协议栈也 成为目前研究的一个主流方向1 4 1 。 电子科技大学硕士学位论文 1 2 几种开源t c p i p 协议栈的比较 1 、b s d t c p i p 协议栈 大多数商业t c p i p 协议栈的起点都是b s d 栈。b s d 栈为大多数t c p i p 协议 栈提供了一个专业的雏形。b s d 是最早提出广域网中拥塞控制和避免的t c p i p 协 议栈,b s d 的代码量相对其他协议栈而言较为庞大,并且在裁剪方面存在着一定 的难度。 2 、l a c 1 p i u c i p 是免费的t c p i p 协议栈,它拥有强大的网络功能,代码容量空间在 3 0 - - 6 0 k b 之间,并可在此基础上进行裁减优化。g c i p 协议最初是针对l a c o s 设 计,具有一定的系统局限性,p c i p 对网络应用支持不足。 3 、l w l p l w l p 是瑞士计算机科学院开发的一套用于嵌入式系统的开放源代码t c p i p 协议栈。l w l p 是l i g h tw e i g h t ( 轻型) i p 协议的缩写。l w l p 适合在低端嵌入式系统 中使用,它可以在操作系统提供的系统服务支持上运行,也可以在没有操作系统 的情况下运行。l w l p 很少r a m 的占用空间来实现t c p 协议主要功能。l w l p 支 持支持i c m p 协议,多网络接口下的l p 转发,用户数据报协议,传输控制协议和 阻塞控制等t c p i p 的主要功能,除此之外为了提高应用程序性能,它还为网络应 用支持提供了可选性专门的r a w a p i 。 4 、p i p l a l p 是一个代码量非常小的t c p i p 协议栈,完全用c 编写,仅能提供a r p 、 t c p 、i c m p 和i p 这几种基本的协议。它具有良好的可移植性,但是它的应用场所 有一定的局限性,若对可靠性要求较高或需要大容量数据传输的应用,它是不能 给予支持的。 5 、t i n y t c p t i n y t c p 是t c p i p 协议栈的一个非常微型的实现,它是为了烧入r o m 设计的。 它不能支持较高要求场合下的应用。 通常从协议栈与硬件平台的相关性,协议栈需要调用的系统函数接口构造的 难易度,对应用的支持程度,占用的系统资源的大小这四个方面来选择需要的协 议栈。根据对以上列举的几种开源式t c p i p 协议栈中的分析,从应用和开发角度 看,l w l p 更适合本文的选择。 2 第一章绪论 1 ,3 论文的选题意义及框架 1 3 1 本文的选题意义 随着互联网的快速发展,人们对网络的需求也越来越广泛,利用p c 机上网来 查阅和发布各类信息等对于网络的日常应用已经不能满足人们的需求,通过 i n t e m e t 对家用电器等非网络设备进行远程控制已经成为现在主流的研究方向。p c 机及现有的i n t e r n e t 技术可以实现部分的要求,其成本费用较高而且可靠性和期望 值还有一定的差距,故这种方案还没有被广泛的接收和使用。由于嵌入式设备具 有低成本高性能的有点,再加上目前对嵌入式系统的开发研究已经进入到一个较 成熟的阶段,如果能将嵌入式系统和网络相结合来实现非网络系统的网络控制, 那么嵌入式设备的低成本和网络的广泛应用将为我们的生活带来翻天覆地的变 化。嵌人式系统与网络的结合的关键技术是在嵌入式实时操作系统中引入t c p d p 协议栈,支持嵌人式设备接入网络。目前,嵌入式t c p d p 协议栈的实现主要分为 以下三种【6 】: o 利用具备协议栈结构的m p u 芯片。在嵌入式系统开发时,利用具有协议 栈结构的微控制器和p h y 来实现网络接口。这类芯片提供商还提供相应 的软件包,设计者只需要调用软件包中的函数就可以了。这种方法的优点 是软件设计简单,缺点是价格比较昂贵。 以软件的形式在微处理器内部构建t c p i p 协议栈。这种方法通过编写或 移植协议栈来实现嵌入式t c p f l p 技术。 通过专用的w e b 服务器实现。不要求每个设备都直接连接到i n t e m e t 上, 用户可以利用l n l e m e t + 轻量级网络的方式实现嵌入式t c p i p 技术网。 本项目采用高性能、低开销、可移植的嵌入式t c p 1 p 协议栈l w l p 与嵌入式 实时操作系统l a c o s i i 相结合的方法,在华恒m c f 5 2 2 3 5 e v b 上实现嵌入式系统 的网络连接。 1 3 2 本文的框架 本人在项目中的主要工作如下: 移植嵌入式实时操作系统l a c o s i i 到飞思卡尔m c f 5 2 2 3 5 处理器上 移植嵌入式t c p f l p 协议栈l w l p 到嵌入式实时操作系统l a c o s i i 上 在对嵌入式t c p i p 协议栈l w l p 分析移植的基础上,设计并实现了一个 3 电子科技大学硕士学位论文 微型嵌入式w e bs e r v e r 完成了一个基于l w l p 的串v i 以太网数据转换器的设计与实现 。 对嵌入式实时操作系统p c o s i i 系统的移植,嵌入式t c p i p 协议栈l w l p 的移植,基于l w l p 的串v i 以太网数据转换器进行了单元和集成测试 本论文的后续章节安排如下: 第二章对嵌入式t c p 1 p 协议栈l w l p 做了一个简要的介绍,特别是对它的进 程模型,缓冲与内存管理及接口设计进行了一个较为详细的介绍。 第三章对嵌入式实时操作系统l a c o s i i 的特点和内核模式做了一个简要的介 绍,接下来详细阐述了l a c o s l i 在m c f 5 2 2 3 5 开发板上的移植工作。 第四章从操作系统模拟层,接口初始化,网络驱动这3 个方面详细介绍了嵌 入式t c p i p 协议栈l w i p 在嵌入式实时操作系统l a c o s i i 上的移植工作。 第五章设计并实现了一个嵌入式服务器,编写了u a r t 的驱动,并在此基础 上设计实现了一个基于l w l p 的串口以太网数据转换器。 第六章对对嵌入式实时操作系统g c o s 1 1 系统的移植,嵌入式t c p i p 协议栈 l w l p 的移植,基于l w i p 的串1 3 以太网数据转换器进行了单元和集成测试,测试 结果表明i a c o s i i 的移植和l w l p 的移植是成功的,基于l w i p 的串口以太网数 据转换器在功能上达到了设计目标。 第七章对整个论文工作做出了总结,并对下一步工作做出了一些展望。 本章主要介绍了课题的研究背景和研究意义。介绍了嵌入式t c p i p 的概念和 发展现状,并对几种常见的开源t c p i p 协议栈进行比较。最后给出了作者在课题 中所做的工作,并介绍了论文各章内容的安排。 4 第二章l w l p 协议栈的介绍 第二章l w l p 协议栈的介绍 本章将对l w l p 协议栈作简要的介绍。其中,重点是l w l p 协议栈的内存管理 部分。 2 1l w l p 协议栈的框架 l w l p 是瑞士计算机科学院开发的一套用于嵌入式系统的开放源代码t c p i p 协议栈。l w l p 是l i g h tw e i g h ti p 协议的缩写,它在最大限度保持t c p 协议主要功 能的基础上减少对r a m 的占用。一般来说它只需要占用非常少的r a m 和r o m 空间就可以运行,这使l w l p 协议栈得到更多人的青睐,在低端嵌入式系统中被广 泛使用1 5 j 。 l w l p 协议栈的主体是t c p i p 协议功能的实现。如图2 】所示l w l p 协议栈通 过一个简单的任务管理器对不同的协议模块进行来统一的管理和调度。除此之外, l w l p 还包括操作系统模拟层、缓冲与内存管理子系统、网络接口函数等相关的支 持模块。 图2 1l w l p 协议的各个模块 设计者对l w l p 中的主要t c p i p 协议模块都进行了一些适当的裁剪,使其更 适合于低端嵌入式设备的使用。 u d p 模块:该模块是一个实现在两个不同进程间进行多路转发数据包的简单 协议。 t c p 模块:该模块是一个传输层协议,对应用层提供一个可靠的字节流服务。 t c p 是l w l p 中最复杂的协议,它占总代码量的一半。 5 电子科技大学硕士学位论文 i c m p 模块:该模块帮助发送方测试连接性或发现故障,与i p 模块协同工作。 i p 模块:该模块实现i p 发送、接收和转发数据包的最基本的功能,但不能发 送和接收分片的l p 数据包以及处理带选项的数据包。 a r p 模块:该模块的主要功能是完成目的i p 地址和m a c 地址的映射,维护 一个常用的目的地址的a r p 高速缓存表以用于提高网络传输速度和效率。 2 2l w i p 协议栈的实现方法 l w l p 协议栈的实现方法通过对l w i p 协议栈源码的分析,将l w i p 在数据收发 上的实现方法总结如下: 图2 2 l w i p 协议的数据收发 如图2 2 所示,在数据接收过程中,应用层会在初始阶段对进行调用,紧接着 t c p _ e n q u e u e o 会将t c p _ w r i t e o 交付给它的函数进行处理,如果数据的长度过长 t c p _ e n q u e u e o 就会将它们进行分割,同时把这些分割后大小适当的t c p 段放到相 应的一个传输队列中。在上述工作完成后,t c p就会被调用去判断接收器output() 窗口和阻塞窗口是否足够大,如果二者都满足条件, i p 及 i f ( ) 就r o u t e ( )i p o u t p u t 会进行发送数据的操作。 在接受数据的初始阶段,数据包由网络接口层交付给给i p _ i n p u t o ,i p _ i n p u t ( ) 6 第二章l w l p 协议栈的介绍 在数据的i p 头后将t c p 段传递给给t c p _ i n p u t 0 。t c p _ i n p u t ( ) 会对接受的数据的进行 初始完整性检查,然后对这个t c p 段所属的t c p 连接做一个判定。t c p 必要的状 态转换都会在t c p _ p r o c e s s o i 蚕t 数里实现。如果t c p 段是属于正处于接收网络数据 的连接状态,t c p e c e i v e ( ) 就会被调用完成对网络数据的接收过程。如果这个t c p 段是处于等待应答确认数据的连接状态,t c p _ o u t p u t ( ) 瑟t 数将会被调用。 2 3l w l p 协议栈的进程模型 l w l p 采用的进程模型是将所有协议独立于操作系统内核之外,驻留在同一个 进程的方式。应用程序既可以使用一个单独的进程,也可以驻留在l w l p 的进程中。 应用程序与l w l p 协议栈一般使用一下两种方法进行通信,如果应用程序驻留在 l w l p 的进程中,一般采用函数调用的方法,另一种是使用a p i 。 将l w l p 独立于操作系统内核之外,是为了让它能具有良好的可移植性。l w l p 开发的初衷是为了在内存有限的小系统里使用,所以它不支持虚拟内存和进程换 出。因此也就不会产生因l w l p 进程的一部分被交换或分页到磁盘上,进程因等待 磁盘激活而造成延时的问题。不过在获取一个偶然发生的服务请求之前因任务调 度产生的等待延时依然是一个问题,但在l w l p 的设计中,这并没有妨碍它以后在 操作系统内核实现【7 】【8 】。 2 4l w l p 协议栈的内存管理 2 4 1 嵌入式t c p i p 协议栈对内存管理的要求 当在本地嵌入式设备和远程主机进行数据交互的过程中,用户数据以数据块 的形式在各层之间进行传递,必然要经过各层协议对消息的封装、去封装和增加 和删除操作操作1 9 。通常将数据放在一段连续的内存区内,会给数据的传递带来下 述的缺陷: 。 1 当数据从上往下传递时,下层协议需要对上层所交付的数据进行封装,而上 层在申请内存进行数据传递的时候不会考虑下层的需要,这样下层在进行数据处 理的时候需要重新申请内存,从而影响程序的效率。 2 当数据从上往下传递时,上层协议对下层的专有数据结构是不了解的,故也 需要重新申请内存进行数据的拷贝。 7 电子科技大学硕士学位论文 3 随着数据的逐层处理,其内容是动态变化的,而使用连续内存来处理这种动 态的数据增删是有一定难度的。 由于l w l p 是应用在低端嵌入式操作系统上的,因此它需要相应的内存管理机 制来减少对内存的需求。 2 4 2l w i p 协议栈中p b u f 介绍 l w i p 使用p b u f 链表结构来进行数据的传递。p b u f 用来是保存在应用程序和 网络接口间互相传递的用户数据。l w i p 的p b u f 是从协议栈所管理的存储器区域中 分配的,根据分配特点和使用对象将它们归为下述分为四种类型。 p b u fp o o l :装载数据的容量大小是固定的,分配速度较快,主要应用在底 层网络设备的驱动中。 p b u fr a m :装载数据的容量大小是可变的,在事先划分好的内存堆中分配, 主要应用于应用程序发送动态产生的数据。 p b u fr o m p b u fr e f :装载数据的容量大小是固定的,对数据进行保护, 与应用程序管理的存储区域密切相关,主要应用于当应用层有大批量的静态数据 需要发送时1 5 】i7 1 。 l w i p 的具体内存管理机制将在下一节作详细的介绍。 2 4 3l w l p 内存管理的实现 在运行t c t i p 协议栈的嵌入式系统中,一般把整个系统的存储区域分为协议 栈管理的存储区域和应用程序管理的存储区域两个部分。 2 4 3 1 协议栈内部的存储管理 t c p i p 协议栈能够进行管理的内存区域,一般用于装载即将发送和待接收 的网络数据分组。当有新的数据分组到来时或者有新的数据分组即将要进行发送 时,t c p i p 协议栈就会为上述数据分组分配缓存进行管理,当从网络上接收到 的数据分组已经成功传递给应用程序,或者应用程序交付给的数据分组已经经过 封装发送到了网络上,那么t c p i p 协议栈就会对之前分配的缓存进行一个回收 操作,为下一次缓存的分配做好准备。 在t c p i p 协议栈为新的数据分组分配缓存之前,会在它管理的内存中初始 化了一个p b u f 池,从中分配得到p b u f 具有相同的尺寸,多个p b u fp o o l 链接成 一个链表,用来数据分组的存储。一般来讲一个分组需要占用几个p b u fp o o l 8 第二章l w l p 协议栈的介绍 组成的链表。p b u f p o o l 分配的速度很快,特别适合在中断处理中使用,这样可 以将中断处理带来的时延减到最低限度。因此p b u f p o o l 类型的p b u f 主要应用 于网络设备的驱动中,为收到的数据分组分配缓存。p b u f p o o l 的具体结构如图 2 3 所示: n e x tn e x t n e x t p a y l o a dp a y l o a dp a y l o a d t o t a l t e n g t ht o t a l l e n g t h t o t a i _ l e n g t h l e n g t hl e n g t hl e n g t h f l a gf l a gf l a g r e fr e fr e f r o o mf o ri i n kh e a d e r r o o mf o rl i n kh e a d e rr o o mf o rl i n kh e a d e r r o o mf o ri ph e a d e rr o o mf o ri ph e a d e r r o o mf o ri ph e a d e r r o o mf o rt c ph e a d e rr o o mf o rt c ph e a d e r r o o mf o rt c ph e a d e r u s e rd a t a u s e rd a t au s e rd a t a 图2 3p b u f _ p o o l 的结构 p b u fr a m 在l w i p 管理的的内存堆中分配。它一般在应用程序发送动态产 生的数据时被分配使用。如图2 4 所示,每个被分配的存储块都有了一个小结构 对它进行进行管理和说明,如果标识位u s e d 被设置为1 就表示该内存块已经被分 配,如图中阴影部分,如果u s e d 被设置为0 就表示该内存块目前还没有被占用能 够被申请使用。当分配的内存块被使用完后被释放,一般会将相邻的而且未被占 用的内存块进行合并,这样做的目的是为了防止碎片的产生从而形成对内存的浪 费。 p b u f r a m 和p b u fp o o l 都可以根据需要动态地从协议栈管理的存储器中 分配,这种分配机制又称为动态存储器分配机制。当数据在不同层之间进行传递 的时候,不可避免地要对数据进行封装去封装的操作,这样数据的长度就会发生 变化,如果采用分配数组的方式对数据进行存储管理,那么数据的长度每发生变 化一次,就要为数据的存储重新分配一个新的足够大的数组,对与本身资源就很 有限的低端嵌入式设备而言,这样的内存的浪费是极为可怕的,当应用程序将数 据交付给协议栈后,数据在层与层之间进行传递的时候,应用程序所交付的数据 本身是不会改变的,即它的长度是固定的,真正发生改变的是数据的格式,换种 说法数据的格式体现的就是各层协议的首部,因此当数据在各层之间进行交付的 时候,只要对相应的首部进行动态地添加和移去,就可以达到目的。动态存储器 9 电子科技大学硕士学位论文 分配机制能分别为为应用程序交付给协议栈的数据和各层协议的首部的分别分配 存储空间1 5 】【7 1 。 图2 一p b u f r a m 的结构 2 4 3 2 协议栈与应用程序之间的存储管理 应用程序进行管理、操作的存储区域被称做应用程序管理的存储器。应用程 序为即将发送的数据分配的缓存都是从这个区域内获得的。虽然该存储区域划分 为协议栈和应用程序分别进行管理的两个区域,但是在没有进行严格分层的协议 栈中,应用程序所管理的存储区域需要协议栈所管理的存储器协同工作,才能更 好地利用低端嵌入式设备有限的的内存空间。为节省内存,l w l p 并没有采用传统 的将数据分组进行完全拷贝进行传递的模式,而是通过指针的方式来对数据进行。 这样做的好处是能够节省前一种做法为数据的传递特地分配的存储空间。当应用 程序将要发送的数据交付给协议栈l w i p 后,l w l p 就不允许对应用程序交付的数 据进行改动的,因此应用程序交付给l w i p 的数据被认为是静态的,永远不能被修 改的。这一点和r o m 的特性符合p b u fr o m 的命名就是这样得来的,顾名思 1 0 第二章l w l p 协议栈的介绍 义,p b u fr o m 所装载的数据被认为是经过保护的不能被随意修改的。 p b u f r a m 图2 5p b u f r a m p b u f r e f 的结构 如图2 5 所示,p b u fr o m 的数据指针p a y l o a d 指向外部存储区。外部存储 区指不受t c p i p 协议栈控制管理的存储区域,可以是应用程序管理的存储区域, 也可以是r o m 区域。由于由应用程序交付给协议栈的的数据是被认为静态的不能 被改动,我们就用p b u fr o m 来装载这些受保护的数据。p b u fr a m 可以由协 议栈管理的存储区域动态分配,而且它装载数据的长度是可变的,因此用它来装 载数据的格式即协议的首部。然后将装载可变协议首部的p b u f r a m 和装载不可 变数据的p b u fr o m 连接到一起,构成了一个完整的数据分组。这样当数据在层 与层之问传递的时候,改变的仅仅是p b u fr a m 里面所装载的数据,而 p b u fr o m 所装载的数据是固定的不变的,这样的方式让内存得到了最大范围内 的节约。 图2 5 中的p b u fr o m 在一般情况下是可以用p b u fr e f 替换。p b u fr e f 和p b u fr o m 的都可以实现数据的零拷贝。但是如果当待发送的分组需要在a r p 队列中排队时,如果为这些分组分配的类型是p b u fr o m ,那么该它里面所装载 的位于应用程序管理的存储区域在分组被处理之前都是不能被释放的,也是一种 对内存的浪费,这个时候应该使用的p b u f 是p b u fr e f ,它能将应用程序管理的 存储的数据拷贝到分配的缓存中,这样被引用数据的存储区域就能被释放,另作 他用1 5 1 。 电子科技大学硕士学位论文 2 5l w l p 协议栈的接口设计 2 5 1 应用程序接口 在对网络应用程序进行编写的时候,可以直接调用t c p 与u d p 模块的函数或 者使用l w l p 提供的a p i 函数。 t c p 与u d p 模块提供网络服务的一个基本接口,该接口基于函数回调技术, 因此使用该接口的应用程序可以不用进行连续操作。不过,这会使应用程序编写 难度加大且代码不易被理解。 l w i p a p i 是在充分利用l w l p 的内部结构上专为l w l p 设计的。它的操作相对 简单,a p i 不需要在协议栈和应用程序之间进行数据复制,因为应用程序可以直接 地对内部缓冲区进行处理。因为b s ds o c k e t a p i 比较常见而且易于理解,它的开 发己经比较成熟了,所以l w l p 保留了一个b s ds o c k e t 兼容层,开发者可以使用 l w l pa p i 来重写b s ds o c k e t 函数i 习j 2 5 2 底层网络的接口 为了使网络接口驱动和协议层彼此保持独立,l w l p 在协议层和网络接口驱动 中间额外定义了一个设备抽象层。l w i p 支持多个网络接口,其中每一个网络接口 都有一个n e t i f 的结构体与之相对应,这个n e t i f 的结构体包含了与之相对应的网络 接口属性和应用于收发函数的指针。网络接口驱动和协议层之间的通信通过相应 的a p i ,比如当网络接口驱动准备好向协议层发送数据时,驱动程序将统一调用 个a p i 函数n e t i fi n p u t ( ) ,将数据传给协议层。这种独立性屏蔽了底层网络的差异 性,使得操作变得更加简便。 2 6 小结 本章主要对l w i p 协议栈的框架结构,实现方法,进程模型,内存管理以及应 用接口的设计作了简要的介绍。其中,l w l p 协议栈的内存管理部分是该协议栈设 计的精髓,在本章做较为详细的分析。 第三章p c o s i i 的特点以及在m c f 5 2 2 3 5 上的移植 第三章l x c o s i i 的特点以及在m c f 5 2 2 3 5 上的移植 本章将对一个微内核的嵌入式实时系统l a c o s i i 和华恒m c f 5 2 2 3 5 e v b 的背 景知识进行一个简要介绍。在此基础上,提出了一种在m c f 5 2 2 3 5 处理器上移植 r t c o s 1 i 的详细的方法。 3 1p c o s i i 操作系统的介绍 一般的前后台系统不能满足本设计的复杂程度,复杂的嵌入式操作成本太高, 所以本文采用嵌入式实时操作系统l a c o s i i

温馨提示

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

评论

0/150

提交评论