嵌入式LwIP协议栈的移植与测试研究
2024-10-18
来源:威能网
Vo1.42 No.2 272 计算机与数字工程 Computer&Digital Engineering 总第292期 2014年第2期 嵌入式LwlP协议栈的移植与测试研究 王祖云 杨思国 王建伟。 邓忠华 (1.汕头市华鹰软包装设备总厂有限公司 汕头5150OO)(2.华中科技大学自动化学院武汉430074) 摘要为实现将协议栈移植于资源有限的嵌入式系统,论文讨论了LwIP各模块的工作机制,详细设计了LwIP的 移植过程,最后设计了一个微型的嵌入式Web服务器,测试LwIP的通行功能,测试结果证明移植成功。 关键词嵌入式系统;LwlP;移植 中图分类号TP393 DOI:10.3969/j.issn1672 9722.2014.02.024 Transplant and Test of Embedded LwlP Stack WANG Zuyun YANG Siguo WANG Jianweiz DENG Zhonghuaz (1.Shantou Main Workshop of Huaying Flexible Package Equipment Company,Shantou 515000) (2.School of Automation,Huazhong University of Science&Technology,Wuhan 430074) Abstract For transplanting lightweight TCP/IP stack~LwIP into embedded systems with limited resources。the working mechanism of each module of LwIP iS discussed.The details of the transplant process iS shown.In order to test the communication of transplanted LwIP,a tiny Web server is embedded in the application layer.The test experiments indicate the transplant iS Successful and can be expanded into industrial applications. Key Words embedded system,LwIP,transplant Class Number TP393 1 引言 以及开源成本低廉,本文选择LwIP作为在嵌入式 设备上研究和实现的对象 q]。 工业以太网系统中的嵌人式设备为了能与其 他设备进行信息交互,迫切地需要接入局域网甚至 2 LwIP协议栈分析 Internet。实现嵌入式设备的互联必须要有网络协 2.1 LwIP模块 议的支持。完整的TCP/IP协议族功能强大,但其 TCP/IP协议在理论设计时采用了“分层”的 代码量也十分庞大,移植于资源有限的嵌入式设备 思想,各协议也明确地归属于某一层。但是严格地 上并不合适。这就要求根据应用场合的要求,对一 按照分层实现协议族会造成各层之间通讯繁冗,进 些不必要的功能进行裁剪,嵌人式Internet联盟 而总体性能的下降。因此,大部分的TCP/IP实现 ETI等机构对此进行了积极研究。目前主流的协 在底层协议可进行交叉访问,仅仅在应用层和底层 议栈有uIP、uc/TCP-IP、AVE-TCP、Linux系列 协议层之间进行了严格划分,LwIP采取了类似的 TCP/IP以及LwIP等。LwIP(Light Weight IP) 思路[ ]。LwlP参照TCP/IP的分层模型,把每 是由Adam Dunkels开发,源代码开放的优秀轻量 个协议设计为一个单独的模块,并提供该模块的接 级TCP/IP协议栈[1],该协议栈减小了内存使用 口函数作为此协议的访问人口。主要的模块有 率,因此获得广泛的应用领域,目前的最新版本是 TCP、UDP、IP、ICMP、ARP等。 1.4.1。由于其出色的性能、与工业以太网的匹配 1)TCP模块 *收稿日期:2013年8月7日,修回日期:2013年9月11日 基金项目:广东省省部产学研结合重大专项项目(编号:2012A090300009)资助。 作者简介:王祖云,男,工程师,研究方向:嵌入式控制。杨思国,男,工程师,研究方向:嵌入式控制。王建伟,男,工程 师,研究方向:嵌入式控制。邓忠华,男,博士,教授,研究方向:嵌入式控制。 2014年第2期 计算机与数字 :程 TCP(传输控制协议)为传输层协议,提供面向 对象的、可靠的字节流服务。TCP提供往返时间 ECHO消息由ip—output()发送,其函数调度关系 如图3所示。 估计、超时重传、数据流量控制、网络拥塞控制等核 心功能,设计了窗口机制来动态控制数据的通讯流 量。LwIP中的TCP模块设有六个功能函数,实现 TCP的基本功能,分别是tcp—input()、tcp—process 蓄]icmp_dest_unreachO]謇 网传网络输络接层口 层 ()、tcpreceive()三个输入处理函数和tcp—write ()、tcp enqueue()、tcp.output()三个输出处理函 数。图1展示其调用关系。 层 图1 TCP模块工作流程 2)UDP模块 UDP(用户数据报协议)亦为传输层协议,提供 不可靠的、无连接的数据包服务。底层有UDP数 据报到来则调用udp—input(),该函数检验校验和 分解数据包,移交给应用层;应用层需要发送数据 时,调用udp—send()函数,计算校验和并填充UDP 报头之后,移交给udp—output(),处理流程图如图 2所示。 应用层 Judp—send()I I udp—input()J l Iudp—output()I 传输层 兰 l input0 f .网络层 Inetif2outputO l I IP数据包I 网络接口层 图2 UDP模块工作流程 3)IP模块 IP(网际协议)为网络层协议,LwIP实现了IP 协议的基本功能,如接收、发送、转发数据包,对数 据包分片、重组,满足大部分应用的要求,简化处理 流程亦可参见图1或图2。 4)ICMP模块 ICMP(Internet控制报文协议)为网络层协 议,主要用于探测网络并返回ECHO消息,函数ic— mp—input()实现该功能,主要涉及源地址、目的地 址的调换、ICMP类型修改、和校验和调整,最后 图3 ICMP模块工作流程 5)ARP模块 ARP(地址解析协议)模块比较简单,主要功能 是维护ARP高速缓存表以及IP地址与MAC地 址之间的映射关系。 2.2 LwIP进程模型与接口设计 “进程模型”是指TCP/IP协议栈的运行模式, 主要描述它与上层应用程序和下层实时操作系统 之间的相处关系,大致分为三种模型[6qj:将每个 协议栈的每个协议都作为独立进程存在;将协议栈 驻留在操作系统内核中;将协议栈所有协议封装在 一个进程中,并独立于操作系统内核。LwIP进程 采用模型三,避免过多的上下文切换,同时保证出 色的可移植性。 LwIP为上层应用程序和下层网络驱动设计了 接口函数。对于上层应用程序,一种方式是驻留在 LwIP进程中,这样LwIP与应用程序共用同一进 程,协议栈的函数可供应用程序直接调用。图4即 展示LwIP的进程模型和API接口设计。 应用层 l ● Inetconn …ll l API LIB /一、 应用层消息 应用层消息投递 API—MSG 、 TCP UDP 腿,1 :I开思彳Hq 、 /.上、TCP ,、 接收接收 解析执行回调函数 /IP LwIP 进程 循环取 进程 邮箱 邮箱. 消息 \T/ \J、、 .芪层消 一/ ip输入函数 lp输出函数IP ..——l ● 数据接收进程 I 网络接口输出 图4 LwIP进程模型与API接口设计 而对于下层网络驱动,LwIP设计了操作系统 模拟层(Operating System Emulation Layer),屏蔽 底层差异。 2.3 LwIP内存分配策略和数据缓冲 LwIP常采用两种内存分配策略:内存堆 (HEAP)分配和内存池(POOL)分配。内存堆分 配采取“最快合适(First Fit)”策略,找一个比请 求内存大的空闲块,并从中切割出合适的块,剩 274 王祖云等:嵌入式LwIP协议栈的移植与测试研究 第42卷 余的部分返回到动态内存堆中。内存池分配则 用户应用程序 LwIP协 栈 ¨C/OS.II 网络驱动 改这个接口即可。在 是事先通过链表创建一个内存池所使用的缓冲 区,操作时仅涉及简单的链表操作,分配速度 快。 操作系统中,信号量 和邮箱是最基本的进 程通信机制,本文将 uC/OS-Ⅱ相关函数与 F28M35HX Cortex.M3 两种内存分配策略的合理利用涉及数据包缓 冲(buffer)的实现。“缓冲”指实际的网络数据包在 协议栈中的表示。LwIP设计了结构体pbuf实现 buffer,pbufs即数据包在LwIP协议栈的内部存在 LwlP的需求无缝对 接,设计一种类似于 “PBUF POOL型 图7 LwIP移植 开发示意图 形式,其结构如图5、图6所示。该结构支持动态内 PBUF”的结构,在系统初始化阶段同时建立多个邮 存分配,也支持静态驻留存储区[7]。 pbufl pbuf2 图5 PBUF-RAM和PBUF ROM 指向下一个 pbufl pbuf结构pbuf2 pbuf3 payload payload payload tot 1en 指 tot len tot 1en 1en 向 len len type I flag 数 type}flag type l flag ref 据 ref ref 区 域 图6 pbuf及PBUF POOL池结构 3 LwIP协议栈在 c/os—II的移植  ̄c/os-Ⅱ由美国Micrium公司推出,是一款 开放源码、移植性良好、支持多任务、可剥夺型的实 时操作系统。 ̄c/os-1I专为嵌入式系统应用设 计,主体代码用标准的ANSI C编写而成,可裁剪、 可固化、可免费获取,同时LwIP支持多线程操作, 十分易于移植l6 ]。 本文选取 ̄C/OS-Ⅱ作为底层操作系统平台, 将LwIP移植到uC/OS-1I嵌入式实时操作系统, 提出一种支持任务并发执行的TCP/IP协议栈的 实现,图7为LwIP移植开发示意图。 3.1操作系统模拟层的实现 操作系统模拟层是LwIP为简化移植过程而 设计的,它为LwIP和下层操作系统内核之间提供 了统一接口,移植LwlP时只需要根据开发环境修 箱,每个邮箱设有一个消息队列数组,接收多条消 息,并将这些邮箱通过一个单链表链接起来,便于 访问。单链表的首地址赋给全局变量指针:pst— CurFreeMbox。图8展示这种单链表型邮箱。 Mboxl Mbox2 Mbox3 MboxN MboxNext1 MboxNext 1 MboxNextl pMh MsgbAo rx ay ] hPMMsgbAorx ay p] hMsMgbAorx a3 消息数组 消息数组 消息数组 图8单向邮箱链表示意图 “线程”是操作系统能够进行运算调度的最小 单位,是进程中的实际运作单位。模拟层设有函数 sys—threadnew()建立新的线程,可以利用uC/ 0 Ⅱ中的相应函数实现。 1)模拟层初始化和临界保护函数 操作系统模拟层设计有初始化函数sys—init (),是最先被调用的函数,进行一些基本的初始化 和配置工作,包括为邮箱操作申请内存空间、建立 邮箱链表并初始化1wip—timeouts数组、为某些函 数分配必要的资源等。‘在sys—init()中,直接调用 相应的函数创建即可。 3.2底层网络驱动实现 lethernetif init0 l //\\ lowlevelinit() low level output()l /\ I erhernetifinput() Iemac init0l emac—send—packet() \\ lowlevel input() //\ emacread ̄packet(j get—inpaeket—len() 图9以太网接口函数相互关系 底层网络驱动的实现取决于硬件系统所使用 的网络接口芯片 1 ,这里实现Lw1P已为底层设计 的一组接口函数。这些函数主要的目的是将以太 网传送来的数据包封装为LwIP协议栈熟悉的数 据接口;将LwlP协议栈要发送的数据包封分解为 318 周明明等:基于二次曲面及多面函数的GPS高程拟合研究 第42卷 [2]李秀海,韩冰.基于多面函数模型的GPS高程拟合精度 分析[J].测绘与空间地理信息,20t0,33(1):12—13. I I Xiuhai,HAN Bing.Precision Analysis of GPS Height Fitting Based on Multidimensional Function YAO Jil1.CHU Lili.Method of f itting of GPS geoid [J].Engineering of Surveying and Mapping,2005(12): 23—26. [7]李胜.GPS高程异常拟合研究[D].大连:大连理工大 学,2006:52—53. LI Sheng.The Research on GPS Elevation Abnormal Model[J].Geomatics&Spatial Information Teehnolo— gY,2010,33(1):12—13. [3]陶本藻.GPS测高原理及其算法[J].地矿测绘,1998 (1):7-9. TA()Benzao.The Principle and Calculation Method of Fitting[D].Dalian:Dalian University of Technology, 2006:52—53. [89马洪滨,董仲宇.多面函数GPS水准高程拟合中光滑因 子求定方法[J].东北大学学报(自然科版),2008,29 (8):1176—1178. MA Hongbin,IX)NG Zhongyu.Calculation of Smooth GPS Height Surveying[J].Surveying and Mapping, l998(1):7-9. [4]杨小青,胡伍生,等.GPS高程转换探讨[c]//第三届长 三角科技论坛(测绘分论坛)论文集:275—277. YANG Xiaoqing。HU Wusheng,et a1.Height Conver— Factor in GPS Leve1/E1evation Fitting by Hardy Func— tion[J].Journal of Northeastern University(Natural Science),2008,29(8):1176—1178. sion Discussion[C]//Third Yangtze River Delta Tech— nology Forum(Surveying and Mapping sub-forum)Pro ceedings:275—277. [9]许昌.GPS高程转换的应用研究[J].北京测绘,2007, 30(2):9-11. [5]胡伍生.GPS精密高程测量理论与方法及其应用研究 [D].南京:河海大学,2001:54. HU Wusheng.The Research of the Theory and the Method and the Application of Precise GPS Height XU Chang.Application of GPS Height Conversion[J]. Beijing Surveying and Mapping,2007,30(2):9-11. E10]杨建辉.多面函数法在确定局部似大地水准面中的应 用研究口].全球定位系统,2011,4:65—68. YANG Jianhui.The Application Study in Defining Surveying[D].Nanjing:Hohai University,2001:54. [6]姚吉利,褚丽丽.GPS水准面拟合方法研究[J].测绘工 程,2005(12):23—26. Local Geoid about Multi—faceted Function[J].GNSS World of China,2011,4:65—68. { .币 不 . . 不 彳 不 币 不 . 乔 毋 看 环 (上接第275页) YANG Jun,LV Jianping,XU Fengliu.The Imple— mentation of Embedded WEB Server Based on the uC/ eessor[J].Electric Information and Control Engineer— ing(ICEICE),2011:5598—5601. () 1I and LwlP[J].Journal of Electrical Automation, 2011,33(3):62—64. r9]Tapas Kumar,Kundu,Kolin,Pau1.Android on Mo— bile Devices:An Energy Perspective[J].2010 10 IEEE International Conference on Computer and Infor— mation Technology(CIT),2010:242卜2426. [7]王传启,温栋,金敏.工控系统中嵌入式web服务器的设 计与实现LJ].计算机工程与应用,2002,38(10):227—230. WANG Chuanqi,WEN Dong,JIN Min.The Design and Implementation of Embedded WEB Server in the [1O]Leen G,Heffernan D.TTCAN:a new time-triggered controller area network[J].Microprocessors and Mi— crosystems,2002,26(2):77—94 Industrial Control Systems[J].Journal of Computer engineering and Applications,2002,38(10):227—230. r11]Almeida L,Pedreiras P,Fonseca J A G.The F丌一 [8]Xu Shuaiqing,Wang Yang,Tao Chengjun,et a1. Transplantation of RTOS uC/OS_1I on TriCore Pro— cAN protocol:Why and how[J].Industrial Electron— ics,IEEE Transactions on,2002,49(6):1189—1201.