《I 操作系统中的实现.pdf》由会员分享,可在线阅读,更多相关《I 操作系统中的实现.pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、LwIP 在 uC/0S II 操作系统中的实现 LwIP 在 uC/0S II 操作系统中的实现 罗军宏,谢余强,舒辉,张有为(信息工程大学 信息工程学院,河南 郑州 450002)摘要:本文先给出了嵌入式操作系统的基本概念,然后对嵌入式操作系统 uC/0S II 网络平台做了一些简介,介绍了 TCP/IP 协议 LwIP 开发工具及开发环境,并在此基础上分析了在嵌入式操作系统中如何移植实现 TCP/IP 协议,给出详细的实现方案和测试用例及结果。关键词:TCP/IP;嵌入式系统;uC/0S II;LwIP 中图分类号 TP309.5 文献标识码 A Implementation of Lw
2、IP in uC/0S II LUO Jun-hong,XIE Yu-qing,SHU-Hu,ZHANG You-wei(Institute of Information Engineering,Information Engineering University,Zhengzhou 450002,China)Abstract:In the paper,the author introduces the definition of embedded Operate System,at the base of introducig briefly uC/0S II Internet platfo
3、rm,and simple TCP/IP protocol LwIP and the developing instrument and development environment;author explained the implementation method and development course of embedded TCP/IP protocol in detail,at last author analysed test example and the result.Key words:TCP/IP;Embedded Operate System;uC/0S II;L
4、wIP 0 引言 0 引言 随着嵌入式系统与网络的日益结合,在嵌入式实时操作系统中引入 TCP/IP 协议栈,以支持嵌入式设备接入网络,成为嵌入式领域重要的研究方向。嵌入式系统由于其体积小、成本低、开发方便、应用成熟等优良的特点已经在民用和工业等许多领域得到了广泛的应用。本文给出了基于嵌入式操作系统 uC/0S II 的 TCP/IP 协议的实现方案。1 嵌入式系统 1 嵌入式系统 嵌入式系统是指用于执行独立功能的专用计算机系统。它由微电子芯片(包括微处理器、定时器、序列发生器、控制器、存储器、传感器等一系列微电子芯片与器件)和嵌入在 ROM、RAM 和 FLASH 存储器中的微型操作系统、控
5、制与应用软件开发来实现各种自动化处理任务的电子设备或装置。嵌入式系统以应用为中心,以半导体技术、控制技术、计算机技术和通讯技术为基础,强调软硬件的协同性与整合性,软件与硬件可剪裁,以满足系统对功能、成本、体积和功耗等要求。2 基于C/OS-II 的网络平台简介 2 基于C/OS-II 的网络平台简介 C/OS-II 是专门为单片机和嵌入式应用设计的实时操作系统内核,已被广泛应用到各种嵌入式系统中。它支持 x86、ARM、PowerPC、MIPS 等众多体系结构,其稳定性和可用性是经过实验验证的。C/OS-II 是一个公开源代码的占先式多任务的微内核 RTOS,其性能和安全性可以与商业产品竞争。
6、C/OS-II 的特点可以概括为以下几个方面:公开源代码,代码结构清晰、明了,注释详尽,组织有条理,可移植性好;可裁剪,可固化;内核属于抢占式,最多可以管理 60 个任务,覆盖定时器、信号量、事件标志、邮箱、队列和内存管理,还支持互斥型信号量(Mutual Exclusion Semaphore)。另外C/OS-II 的最小内核可编译至 2KB,这对于嵌入式有限的资源是非常重要的。3 开源 TCP/IP 协议栈 LwIP 的具体实现 3 开源 TCP/IP 协议栈 LwIP 的具体实现 TCP/IP 协议比较复杂,在缺乏功能强大的操作系统支持的嵌入式设备上实现并非易事,对于特定的应用,嵌入式设
7、备往往只需要 TCP/IP 协议中某一小部分即可,这里根据自身的要求,采取了在现有简化的 TCP/IP 协议 LwIP 的基础上对其进行改编。LwIP 是瑞士计算机科学院(Swedish Institute of Computer Science)的 Adam Dunkels等开发的一套用于嵌入式系统的开放源代码 TCP/IP 协议栈。LwIP 的含义是 Light Weight(轻型)IP 协议。LwIP 可以移植到操作系统上,也可以在无操作系统的情况下独立运行。LwIP TCP/IP 实现的重点是在保持 TCP 协议主要功能的基础上减少对 RAM 的占用,一般它只需要几十 K 的 RAM
8、和 40K 左右的 ROM 就可以运行,这使 LwIP 协议栈适合在低端嵌入式系统中使用。3.1 TCP/IP 协议的实现 3.1 TCP/IP 协议的实现 在整个协议的实现方案中,可以把不同部分的功能用不同的任务来完成,由一个简单的任务管理器来统一管理和调度。图 1 任务管理器与各个模块之间的关系图 整个协议被划分为地址解析协议(Address Resolution Protocol,简写 ARP)模块、网际协议(Internet Protocol,简写 IP)模块、互联网控制报文协议(Internet Control Message Protocol,简写 ICMP)模块、用户数据报协议(
9、User Datagram Protocol,简写 UDP)模块和传输控制协议(Transfer Control Protocol,简写 TCP)模块。在 LwIP 的基础上,对各个模块根据相应的需求做适当的裁剪,尽量用最少的代码实现以满足嵌入式系统有限资源的要求。ARP 模块:ARP 模块:该模块的主要功能是完成目的 IP 地址和 MAC 地址的映射,为了提高网络传输速度和效率,维护一个常用的目的地址的 ARP 高速缓存表。IP 模块:IP 模块:该模块实现 IP 的最基本的功能:发送、接收和转发数据包,但不能发送和接收分片的 IP 数据包以及处理带选项的数据包。ICMP 模块:ICMP 模
10、块:该模块帮助发送方测试连接性或发现故障,与 IP 模块协同工作。UDP 模块:UDP 模块:该模块是一个实现在两个不同进程间进行多路转发数据包的简单协议。每一个 UDP 的状态保存在 PCB 结构中,多个 PCB 链接成一个链表,当有 UDP 数据包到达时搜索这个链表。TCP 模块:TCP 模块:该模块是一个传输层协议,对应用层提供一个可靠的字节流服务。TCP 比其它协议复杂,占有总代码量的百分之五十。3.2 LwIP 协议的移植 3.2 LwIP 协议的移植 整个嵌入式应用系统的结构如(图 2)所示.由 MCU、网卡、网络接口驱动、C/OS-操作系统、LwIP 协议栈和应用程序六个部分组成
11、。应用程序(网络或非网络应用)LwIP 协议栈 C/OS-网络接口驱动 1 网络接口驱动 n MCU 网络芯片 图 2 系统示意图 任务管理器 ARP 模块 ICMP 模块 IP 模块 TCP 模块 UDP 模块 3.3 应用程序的接口 3.3 应用程序的接口 应用程序的接口由 API 来实现。API 的实现包括两个部分:一部分 API 作为库来实现与应用程序的连接,另一部分在 TCP/IP 处理中实现,两部分之间使用 ICP 机制进行通信。两部分的关系如图 3 所示。实现 ICP 机制有三种方式:共享内存、消息传递和旗语。基本的设计原则是让尽可能多的工作在应用处理中完成,少部分在 TCP/T
12、P 处理中完成。运行在应用处理上的API和运行在TCP/TP处理上的API之间使用一个简单的通信协议进行数据的传输。在 TCP/TP 处理中的 API 执行的操作和返回值通过消息传递送到应用处理中,消息应该包括被执行的操作类型和操作参数。图 3 API 实现分割原理图 3.4 与物理层的接口 3.4 与物理层的接口 为了使网络接口驱动和协议层彼此保持独立,把网络接口驱动和协议层分开。在 LwIP中可以有多个网络接口,每个网络接口都对应了一个 struct netif,这个 netif 包含了相应网络接口的属性、收发函数。网络接口驱动和协议层之间的通信通过相应的 API,比如当网络接口驱动准备好
13、向协议层发送数据时,驱动程序(驱动程序工作在 IP 协议模型的网络接口层,在驱动中主要实现网络接口的收、发、初始化以及中断处理)将调用一个 API 提供的函数 netif_output(),将数据传给协议层。这种独立性使得加载一个新的协议或接口驱动非常方便。4 LwIP 协议的测试 4 LwIP 协议的测试 为了进行应用程序的测试,首先在C/OS 中初始化 LwIP,创建相应的任务,值得注意的是 LwIP 的初始化必须在C/OS-完全启动之后,也就是在任务中进行,因为它的初始化用到了信号量等与操作系统相关的操作。本系统使用 EVB2107(Evaluation Board2107)评估板进行应
14、用程序的调试,EVB2107以微控制器 MMC2107 为核心,外扩 2MB FLASH 和 1MB SRAM 存储器,用来存放调试过程中所用到的系统软件、用户代码和数据。该评估板不含网卡部分,网卡由自己实现。测试时,可以把网卡的 IP 地址设置为任意值,在 CodeWarrior IDE 的控制台窗口中运行 ping IP 地址 l 2000 t,不间断用长度为 2000 的数据报进行 ping 测试,同时使用tftp 客户端软件给该 IP 地址下载一个几兆的程序,发现一切工作正常,说明 ARP、ICMP、IP、TCP 协议都已正确运行。5 结束语 5 结束语 以太网作为目前应用最为广泛的局
15、域网技术,在工业自动化和过程控制领域得到了越来越多的应用。同时,随着 Internet 的普及,现代通信技术的进步,基于 TCP/IP 和Client/Server 架构的分布式监控技术也日趋成熟。借助以太网和 Internet 技术,把嵌入式系统连接到 Internet 上,已成为嵌入式系统今后发展的一个重要的方向,而且也将成为今后嵌入式系统必须具备的功能之一。参考文献:参考文献:1 Douglas E.Comer.用 TCP/IP 进行网际互联第一卷:原理、协议与结构(第四版)M.电子工业出版社,2001 2JEAN J.LABROSSE.C/OS-II源代码公开的实时嵌入式操作系统M.中
16、国电力出版API 应用程序 API TCP/IP 处理进程ICP社,2001 3马鸣锦,蒋烈辉.基于 MCORE 微控制器的嵌入式系统M.国防工业出版社,2003 4嵌入式系统 TCP/IP 应用层协议,电子工业出版社,【美】M.Tim Jones 著 5嵌入式系统开发圣经,中国青年出版社,探矽工作室著,2002.1 作者简介:作者简介:罗军宏,女,1976 年生,汉族,硕士,讲师,主要研究方向为网络通讯。谢余强,男,1964 年生,汉族,硕士,教授,主要研究方向为网络安全与计算机软件应用。舒辉,男,1974 年生,汉族,博士,副教授,主要从事并行编译与网络安全方面的研究。张有为,男,1975 年生,汉族,硕士,讲师,主要从事嵌入式系统的研究。通信地址:郑州市 1001 信箱 718 分箱 邮编 450002 联系电话:03715019762 电子信箱: