基于和欣嵌入式操作系统的构件化网络协议栈

发布者:WanderlustGaze最新更新时间:2013-10-26 来源: eefocus关键字:CAR构件技术  操作系统  TCPIP  协议栈 手机看文章 扫描二维码
随时随地手机看文章
嵌入式Internet是随着嵌入式系统的广泛应用和计算机网络技术的发展而产生的一种新概念和技术。嵌入式系统以应用为中心,以计算机技术为基础,且软硬件可裁剪,现已赢得了巨大的市场。随着 Internet的发展,各种设备都产生了连接性的需求,从冰箱到电表,似乎所有电器都需要连入互联网。通过为现有嵌入式系统增加因特网接入能力来扩展其功能,以Internet为介质实现信息交互,从而产生了嵌入式Internet 技术。要实现嵌入式设备的网络化,需要实现TCP/IP网络协议栈,但由于Internet上各种通信协议对计算机存储器、运算速度等的要求比较高,使得嵌入式系统协议栈的开发实现并不顺利。

目前有两个关键因素影响网络协议栈的开发,一是性能和效率,二是开发调试方便。传统的操作系统一般只能顾及其中的一个方面。例如在Linux、FreeBSD中,网络协议栈作为系统内核的一部分实现,通常具有较高的通信效率,但是不方便用户添加实现新的用户协议及根据特殊需要对协议的实现细节调整,同时对协议代码的维护、调试和开发也不方便。这个缺点在嵌入式领域表现得尤为突出。

由于嵌入式设备的多样性和通信需求的多样性,嵌入式领域的网络协议栈的复用率非常低。本文将构件技术引入网络协议栈的开发,并在国产和欣操作系统上实现了一个构件化的网络协议栈,很好地解决了开发与效率的问题。

1 和欣嵌入式操作系统和CAR构件技术

1.1 和欣嵌入式操作系统

和欣操作系统基于微内核,服务动态加载。内核包括硬件驱动(串口、USB、以太网卡、无线通信模块)、内存管理等系统基本服务,如图1所示。TCP/IP协议栈完全由构件实现,是运行在构件平台之上的一个服务构件。底层网卡、串口等设备得到数据之后将数据交上层服务构件处理。

和欣嵌入式操作系统是基于构件化软件模型,构件化软件设计思想贯穿了整个系统的设计与实现,系统实现本身就是构件模式。除内核中最底层控制部分外,所有系统功能都以构件接口形式提供。另外,操作系统对构件化软件模型提供了必要的运行环境,来源不同的构件可以在该环境上实现互操作。系统提供了构件自动寻址/自动加载机制,用户不必知道调用的构件程序是本地的还是来自于网上,即构件运行环境对用户透明。构件化系统的实现,使得操作系统本身具有高度的灵活性和扩展性。和欣采用了CAR构件技术。


1.2 CAR构件技术

  CAR构件技术是在总结面向对象编程、面向构件编程技术的发展历史和经验的基础上,为更好地支持面向以Web服务为代表的下一代网络应用软件开发而发明的。CAR(Component Assembly Runtime)构件技术定义了一套网络编程时代的构件编程模型和编程规范,它规定了一组构件间相互调用的标准,使二进制构件可自描述并能够在运行时动态链接。

CAR构件技术通过二进制的封装及动态链接技术解决软件的动态升级和软件的动态替换问题。面向构件技术对一组类的组合进行封装,并代表完成一个或多个功能的特定服务,同时为用户提供多个接口。整个构件隐藏了具体的实现,只用接口提供服务。这样,在不同层次上,构件均可以将底层多个逻辑组合成高层次上粒度更大的新构件。构件之间通过约定的接口进行数据交换和信息传递,构件的位置相互透明,可以在同一个或不同的用户进程空间、不同的机器甚至不同的构件上用不同的语言编写,只要其符合事先约定的构件规范。

2 和欣操作系统上的TCP/IP协议栈的特点与实现

2.1 和欣嵌入式操作系统上TCP/IP协议栈的特点

由于嵌入式系统在硬件资源的占有量以及处理器的处理能力等方面的限制,使得TCP/IP协议的嵌入式实现与其在通用操作系统中的实现有很大不同。首先,由于嵌入式处理器的时钟频率低,地址、数据总线窄,导致嵌入式系统对一个通用IP 包的处理要花费更多的处理机时间,从而影响其他任务的执行。因此需要对庞大复杂的TCP/IP协议栈进行裁剪,使之具有简单、高效的特点。同时在设计嵌入式TCP/IP协议栈时要合理控制中断处理程序的大小,使得中断处理程序的运行时间尽可能短;同时把那些无实时性要求和费时的工作移到主程序中执行,从而保证协议的正确执行。具体来说,就是把TCP/IP协议的处理工作放到主程序中,对网络接口的控制芯片采用循环查询方式,在其他中断任务的执行间隙处理TCP/IP协议,以牺牲系统的响应时间换取系统的可靠性。再者由于嵌入式系统的存储空间有限,一般情况下只能开辟几KB字节的缓存区接收数据包,并且其存储空间固定,不是动态分配的。因此,在遇到大数据包时就会出现缓冲区溢出的错误。通常,嵌入式系统接收的数据包类型仅为系统状态配置包、控制动作命令包、通信控制包等,这些包容量较小。由实时数据或网页向网络发送的数据包比较长,但可以通过设计格式加以控制。

和欣操作系统是基于微内核的操作系统,其上的TCP/IP协议栈既可以运行在用户态,也可以运行在内核态,具有通用接口和方便的框架,方便用户开发适合自己领域或特殊需要的网络协议栈。因为和欣操作系统提供了高效的进程上下文切换功能和进程间通信,所以整个网络协议栈作为一个用户态进程提供服务。使用前先创建网络构件实例,然后向操作系统注册服务。此后用户就可以使用网络编程接口了。如果用户对网络协议栈有更高的效率要求,则可以将该协议栈加载到内核态。[page]

2.2 和欣嵌入式操作系统TCP/IP的实现

根据和欣嵌入式TCP/IP协议栈的特点,在实现嵌入式TCP/IP协议栈时只需要用到下述四个基本协议:TCP协议、ICMP协议、IP协议、ARP协议。其余的链路层协议如PPP协议需要在嵌入式TCP/IP协议栈下面的设备驱动程序中实现;而像HTTP、FTP这样的应用层协议则要在嵌入式TCP/IP协议栈上面的应用层中实现。

2.2.1 地址转化协议ARP

ARP协议为IP地址和以太网MAC地址建立一个映射表。这个协议对于以太网的TCP/IP协议的操作是必不可少的。为了节省空间,一个IP地址的ARP请求覆盖即将发送的数据包。该ARP请求就是因为要发送这个包而发送的。这种方法在假设上层会重发被覆盖的数据时采用。每隔十秒钟,表就会刷新一次,旧的记录被丢弃。在嵌入式TCP/IP协议栈中,记录的有效时间为1 秒。

2.2.2 网际协议IP

在嵌入式TCP/IP中,IP协议执行两项功能:(1)封装来自上层的TCP数据包或ICMP数据包,计算IP数据包的检验和;(2)解析IP缓存中的数据包,检查数据包的协议字段,以判断该数据包应该交给ICMP协议还是TCP协议处理。基于嵌入式Web服务器与客户端通信的信息量很小,数据包的大小不会超过链路层的MTU(最大传输单元),嵌入式IP没有引入数据包分片和重组功能。标准的IP协议有选路功能,可以选择较短路径传送数据包,在嵌入式IP中,为了减少代码规模,未引入选路功能。

2.2.3 网际控制报文协议ICMP

在嵌入式TCP/IP协议栈中,只处理一种ICMP消息类型:ICMP回送消息。ICMP回复消息经常被用来调用ping程序测试对方主机是否在线。在嵌入式TCP/IP协议栈中,ICMP回送消息用一种十分简单的方式实现,即将ICMP类型的字段由“echo”类型改变为“echo reply”类型。改变IP首部的IP地址,将数据包送回发送者。

2.2.4 传输控制协议TCP

TCP协议是面向连接的、端到端的可靠通信协议。它采用了许多机制保证传输可靠性,应用于嵌入式系统显得过于复杂。在嵌入式TCP/IP协议栈中,为了减少存储空间的占用,没有引入发送和接收数据的可靠窗口机制。通常,嵌入式Web服务器处于被动服务状态,所以可以将标准TCP有限状态机的主动创建连接的SYN SENT状态、主动关闭连接的FIN WAIT1、FIN WAIT2、CLOSING、TIME WAIT状态裁剪。设计中还去掉了LISTENING状态,使它在CLOSED状态下就处于侦听状态,监听客户端的连接请求。这样避免了主动或被动打开及关闭的操作,使嵌入式TCP/IP协议栈更精简。嵌入式TCP/IP中到达TCP段的数据不被缓存,应用程序必须立即处理它。当然,这并不阻止应用层缓存数据。每次连接在发送数据时,无法同时处理多于一个的TCP 段。TCP协议的实现原理比较复杂,在嵌入式TCP/IP协议中,实现TCP 协议是一个最关键的问题。

2.2.5 构件化的协议栈

采用构件化方法实现网络协议栈的关键是:

(1)如何划分构件的粒度。需要根据用户的需要决定,如果用户是开发一个新的协议栈,可以采用大粒度的构件划分方式(如图2所示),即把整个网络协议栈作为一个大的构件,继承预先定义的构件。

(2)如何设计构件接口。要实现(1)所提到的构件的自由替换,必须设计良好的构件接口。所有的构件实现应该继承该接口。设计接口的原则是尽量保持接口的通用性和简洁性。当有新的功能添加时,可以通过继承实现新的接口方便地加入原有的框架,从而实现软件的无缝升级。

(3)提高网络通信的效率。一个高效的通信协议需要满足:①上下文切换和定时器的轻型完成;②多个协议具有统一的使用界面;③在网络设备,核心层和用户层之间有高效的缓冲机制,避免不必要的拷贝。

如果操作系统提供了快捷的上下文切换及高效的进程间通信,则整个网络协议栈便可以作为一个用户态进程对用户进程提供服务。如果进程上下文切换比较复杂,则整个网络协议栈可以作为动态链接库链入用户进程地址空间,但需要对多进程共享的数据加锁,进行同步访问控制。另外一种选择是将网络协议栈装入内核空间,也可以避免频繁的进程上下文切换带来的系统开销。

因为采用了通用的SOCKET编程接口作为最终提供给用户使用的接口,从而使多个协议具有统一的使用界面。同时,在采用细粒度构建的网络协议栈中,各层协议之间的接口也是精心构造的统一接口。为了避免大量数据的拷贝,需要设计良好的数据结构,同时采取“共享内存”的方法。在网络协议各层次间尽量以指针方式传递数据。

构件化的网络协议栈具有以下优点:
(1)针对不同网络应用的需求,能最大限度地利用领域相关知识进行调整,提高了性能。
(2)底层构件可以在不影响顶层使用的情况下进行修改。
(3)方便用户添加及开发调试新的协议。

该文采用上海科泰公司的CAR构件技术在和欣操作系统上实现了一个构件化的网络协议栈。该网络协议构件既可以加载在内核态,也可以加载在用户态,方便开发调试,有利于开发新的网络协议栈。其他开发者采用构件的方法开发出了高效或者针对某特定领域的网络协议栈,可以方便地替换和欣操作系统上原有的网络协议栈。使用构件化的方法开发网络协议栈也可以推广到其他支持构件的操作系统上。

关键字:CAR构件技术  操作系统  TCPIP  协议栈 引用地址:基于和欣嵌入式操作系统的构件化网络协议栈

上一篇:基于VxWorks的双端口网卡智能双冗余驱动
下一篇:实时嵌入式操作系统VxWorks设备驱动程序的设计

推荐阅读最新更新时间:2024-05-02 22:49

国产操作系统COS在京发布
    北京时间1月15日消息,上海联彤与中科院软件研究所在北京联合发布具有自主知识产权的操作系统COS(China Operating System),该操作系统可应用于个人电脑、智能掌上终端、机顶盒、智能家电等领域为解决安全性问题,COS操作系统是一个不开源的系统。 在用户界面方面,据悉COS拥有原生应用以及HTML5应用,同时也能加载虚拟机运行JAVA应用。在设备支持上可以实现手机、平板等手持设备与家电、机顶盒、个人电脑等家用、商用设备的无缝拓展。目前COS可以运行的应用程序已经超过十万个。 不过,这并不是中国的科技厂商在操作系统层面的第一次尝试,诸如银河麒麟,阿里OS等,但是最后都没有像口号那样的超越微软打败苹果。COS不
[手机便携]
外国人眼中的中国自主手机操作系统COS
    最近几天,“自主知识产权系统智能手机”不仅在国内引起轩然大波,让一众喜欢Cosplay的少男少女惊叫不已;也引得业内人士进行扒皮,包括COS的最大支持者HTC在内,一起来了一个大起底。这不,由中国自主开发,号称要挑战iOS以及Android系统的智能手机系统在德国也引发了关注——德国镜报(网络)科技版特地用《中国OS:中国开发自主手机系统》(China OS:Chines enentwick elneigenes Betriebssystem)作为头条,而德国网民也纷纷发表留言。鉴于今天网络时断时续,虎嗅君只好无聊地跑去国外找素材(明明就是偷懒吧喂)!   所以我们先来看看这件事,德国媒体怎么报。只不过与国内铺天盖地的质疑
[手机便携]
面向动态应用的灵活操作系统
利用赛灵思 FPGA 的动态重配置功能,同构多线程执行模型可同时兼得软件灵活性和硬件性能。 一台在未知的土地上行进的自动机器人;一部能够根据信号强度改变解压缩格式的视频解码器;一套宽带电子对抗系统;一种用于机动车辆的自适应图像跟踪算法……这些都属于大量涌现的随环境瞬变做出快速响应的新兴嵌入式或者关键任务应用。在过去,静态决策最坏情况分配曾为严格的实时约束提供了解决方案,而现在灵活性也成为一项要求。法国某研究项目建议使用的解决方案是一种分布在 FPGA 资源上,对软硬件线程进行管理的操作系统。 我们的目标是设计一种支持新的系统分区类型的架构,让软/硬件组件遵循同一执行模型。这就要求高度灵活的可扩展操作系统。 近年来,特别是
[工业控制]
面向动态应用的灵活<font color='red'>操作系统</font>
操作系统
操作系统 - 计算机管理控制程序 操作系统是管理计算机硬件资源,控制其他程序运行并为用户提供交互操作界面的系统软件的集合。操作系统是计算机系统的关键组成部分,负责管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本任务。操作系统的种类很多,各种设备安装的操作系统可从简单到复杂,可从手机的嵌入式操作系统到超级计算机的大型操作系统。目前流行的现代操作系统主要有Android、BSD、iOS、Linux、Mac OS X、Windows、Windows Phone和z/OS等,除了Windows和z/OS等少数操作系统,大部分操作系统都为类Unix操作系统。 基本信息 操作系统 操作系
[嵌入式]
<font color='red'>操作系统</font>
基于TCP/IP的浮标网络通信系统设计
水声信道匹配基础研究是建立在水声学、海洋物理声学以及现代信号处理技术基础上的新兴研究领域。为满足研究需要而构建的局部海域水声信道测量平台(图 1),能够实现环境信息和信道参量的系统采集和实时传递,对信道宽容匹配方法的可行性进行检验。 浮标系统以它的灵活、高效、自身干扰小等特点,在水声信道研究中发挥着其它设备不可替代的作用。现有的浮标系统大多采用直接序列扩频电台直接进行水面通讯,这种方式往往不使用网络协议或使用自定义的网络协议。而采用无线网桥进行水面通讯,以TCP/IP作为网络协议,将大大增强浮标系统网络化。同时由于TCP/IP协议是目前最为成熟的网络协议之一,浮标网络的稳定性、可扩展性都得以提高,甚至通过互联网直接控制浮标系统也成
[单片机]
基于TCP/IP的浮标网络通信系统设计
怎么用MSP432 MCU发挥实时操作系统所具有的优势
当你需要提升产品性能时,你也许会考虑将你现有MSP430 MCU设计移植到TI全新高性能MSP432 MCU平台上。或者,当你需要降低产品功耗时,你也许会考虑将现有的ARM设计移植到我们全新的低功耗MSP432 MCU平台上。用32位ARM系统进行开发时通常需要立即应对多个操作—在这种情况下,实时操作系统 (RTOS) 会派得上用场。 MSP432 MCU提供与数个TI RTOS解决方案(其中包括TI-RTOS和ENergia MT)和第三方RTOS解决方案(其中包括FreeRTOS,ARM CMSIS-RIX和Micrium-OS)的兼容性。 由于无需从头开始创建基本系统软件函数,RTOS的使用可以加快开发进度,并且可以在更
[单片机]
Linux将成为21世纪汽车主流操作系统
    据科技博客ZDNet报道,开源软件组织Linux基金会日前表示,Linux操作系统将成为21世纪汽车产品的主流操作系统。Linux系统不仅支持电 脑服务器产品,还能通过Android运行在用户的智能手机上;此外,在汽车上也能找到它的踪影。当然,没有人在购买汽车产品时考虑它使用了何种操作系 统,但是包括丰田、尼桑、捷豹路虎、福特、马自达、三菱和斯巴鲁等主流汽车品牌在内,它们的车载信息娱乐、显示、车载4G网络、Wi-Fi系统,都离不开 Linux操作系统的支持。 各大软件厂商也都纷纷加入了面向汽车行业的这场移动物联网盛宴当中。Movimento、甲骨文、高通、德仪、UIEvolution和VeriSilicon等软件厂商,
[手机便携]
微软将在Windows 10中引入机器人操作系统,计划管控更多日常机器人
据报道,如今许多人可能都有了生活机器人,比如扫地机器人Roomba、除草机器人或者玩具机器人。但在将来,人们可能会拥有数十个机器人,它们帮助打扫房子、烹饪食物、出行等,让人们的生活变得更容易、更好。这还只是在家中,工厂里也已经有成千上万的机器人,而且每天都有更多的机器人出现。 不过,我们需要能够管理、同步、控制和操作这些机器人的系统。现在,微软愿意提供这种帮助。微软29日悄悄宣布,该公司将在中引入机器人操作系统(ROS)。这是一件大事,因为它允许使用微软集成开发环境Visual Studio的开发人员在开发纯、web、移动和云计算应用的同时,也能开发真实世界的智能机器人和自动化技术。 机器人操作系统是Willow G
[机器人]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved