您好、欢迎来到现金彩票网!
当前位置:盛源彩票app下载 > 构件对象 >

基于和欣嵌入式操作系统实现的一个构件化的网络协议栈设计浅析

发布时间:2019-05-02 14:42 来源:未知 编辑:admin

  rnet是随着嵌入式系统的广泛应用和计算机网络技术的发展而产生的一种新概念和技术。嵌入式系统以应用为中心,以计算机技术为基础,且软硬件可裁剪,现已赢得了巨大的市场。随着 Internet的发展,各种设备都产生了连接性的需求,从冰箱到电表,似乎所有电器都需要连入互联网。通过为现有嵌入式系统增加因特网接入能力来扩展其功能,以Internet为介质实现信息交互,从而产生了嵌入式Internet 技术。要实现嵌入式设备的网络化,需要实现TCP/IP网络协议栈,但由于Internet上各种通信协议对计算机存储器、运算速度等的要求比较高,使得嵌入式系统协议栈的开发实现并不顺利。

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

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

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

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

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

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

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

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

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

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

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

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

  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 协议是一个最关键的问题。

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

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

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

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

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

  (1)针对不同网络应用的需求,能最大限度地利用领域相关知识进行调整,提高了性能。

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

  当初迁移CSDN的博客到OSCHINA的主要原因是CSDN的博客加载速度慢,而且隔三差五的不能写文章...

  根据IEEE(国际电气和电子工程师协会)的定义,嵌入式系统是“控制、监控或者辅助设备、机器和车间运行...

  嵌入式工程师分布在各行各业上面。这其中包括了消费电子、工业电子、汽车电子和军用电子等等。从功能上面看...

  预期原先仅配备在高级汽车中的环景影像(surround view)功能,将会在未来5~6年内被广泛采...

  作为支撑人工智能、物联网和5G 发展,作为连接芯片与应用粘结剂的嵌入式技术也将迎来新的机遇。

  除了智能数字终端领域以外,Linux在移动计算平台、智能工业控制、金融业终端系统,甚至军事领域都有着...

  “我认为中国可能是一个引发点,现在中国嵌入式市场有一个很大的发展,然后辐射到全球的地区。”英特尔首席...

  随着计算机网络技术和电子信息技术的迅猛发展,Internet的普及,接入Internet的非PC设备...

  随着世界经济和我国经济的不断发展,交通运输越来越成为国民经济生活中的一个极其重要、不可缺少的因素,现...

  随着我国城镇化建设进程的加快,城镇的火灾隐患越来越大,每年我国都因为火灾而造成巨大的经济损失。尽管目...

  后PC时代的到来完全依赖于嵌入式技术的诞生与发展,传统的IT设备逐渐转变为嵌入式设备,这是一个大趋势...

  本方法可以让C语言指令进一步接近汇编指令的执行效率,提高单片机、嵌入式系统的速度和稳定性,但编程时应...

  当一个项目做完的时候,如果客户突然又增加需求,增加功能,将导致你的项目周期严重拖延,成本剧烈上升,并...

  设计以MCU为核心的嵌入式系统硬件电路需要根据需求分析进行综合考虑,需要考虑的问题较多,这里给出几个...

  对于嵌入式软件而言,代码尺寸是越小越好。压缩代码以适应受到成本或空间限制的存储子系统已经成为嵌入式系...

  虽然FPGA的传统用户是硬件设计者,但是赛灵思的新型嵌入式设计平台,使得软件开发人员也能够在熟悉的环...

  许多嵌入式应用需要知道时间,以便在特定的时间和日期,或针对时间戳事件,或同时依据两者执行特定的任务。...

  本文介绍了嵌入式操作系统的作用,以及为何将操作系统和应用程序代码同时放在物联网节点中的 microS...

  本节继续讲嵌入式硬件通信接口协议中的另外一个串行通信接口-SPI。相比于UART串口协议,SPI又有...

  智能手机已经成为生活的必须品,甚至是一个「器官」。智能手机所承载的功能,已经足够让我足不出户即可享受...

  在Canalys看来,中国智能手机市场已经步入了寡头竞争的局势,短期胶着并不意味着头部厂商能够在20...

  近公司新招了一个做嵌入式软件开发的同事,该同事是从上海的某一个上市公司出来的,因为我们这边人手不够,...

  Linux和C语言有着很深的渊源,因为Linux本身就是用C语言编写的。同时,在Linux操作系统中...

  小程序开放桌面式入口后,润米咨询董事长刘润评论表示,“微信小程序推出 2 年多,终于摆出了‘应用商店...

  1、MCU的选择选择 MCU 时要考虑 MCU 所能够完成的功能、MCU 的价格、功耗、供电电压、I...

  政府性基金引路,社会资本跟进,江苏南通新一代信息技术产业链“芯片设计”的“缺环”有望加快补齐。两个月...

  单片机应用智能开发平台是为单片机的应用开发提供的一套解决方案,包括有中文开发平台操作系统、基础平台、...

  大多数人定期更换着智能手机,但个人电脑却并非如此。如今个人电脑的平均使用年限长达6年,用户需要采取更...

  以嵌入式计算机为核心的嵌入式系统(Embedded System)是继IT网络技术之后,又一个新的技...

  进一步的工作包括继续优化其通信性能,或者在其基础之上扩展相关安全应用,包括身份认证系统、入侵检测系统...

  几乎所有的新兴存储器出道时都宣称与CMOS工艺兼容,意思是可以做逻辑工艺的嵌入式存储器。

  从苹果官网和一些网络资料来看,斯鲁吉拥有以色列理工学院的计算机科学学士和硕士学位。担任过以色列IBM...

  接口板与用户模板采用串口连接,使用波特率选择开关可选择指定 的7种波特率(9600、19.2K、 3...

  莱迪思半导体公司(NASDAQ: LSCC),客制化智能互连解决方案市场的领先供应商,宣布推出全新的...

  据悉,衡宇科技于2012年2月创立,可为用户提供应用于通讯、消费电子及数据处理行业的闪存主控芯片产品...

  基于STM平台且满足实时控制要求操作系统,有以下5种可供移植选择。分别为μClinux、μC/OS-...

  ARM7比起ARM9,更适合初学者学习。和ARM7相比,应该说ARM9在性能方面有很大提高,但ARM...

  Cortex-M这类微控制器编程通常采用C代码,那么编程人员如何编写代码才能让C编译器产生高质量底层...

  对于消费者而言,体域网络的承诺(BAN,图1)提供了健康综合视图;对于设备制造商而言,BAN代表了新...

  嵌入式系统已成为生活中不可或缺的一部分。嵌入式系统的各种创新开辟了几个新的商机,吸引了行业巨头和创业...

  即使坐在在互联网上最小的设备是黑客试图窃取信息,潜在的目标伪造数据,或者损坏或禁用该设备本身。在人们...

  如今以用户流量为红利的互联网上半场已经接近尾声,而各大科技巨头纷纷在加速往产业互联网方向转型,微软也...

  举个例子,比如有两个订单,A订单是可乐+薯片,B订单是可乐+纸巾,那么其实这两个订单里都有可乐,就需...

  我们知道要入门嵌入式,进行嵌入式的学习,尤其是未来想要从事嵌入式硬件相关的工作,但是做嵌入式并不是只...

  在河图操作系统之上,是旷视科技的各种机器人产品。去年4月,旷视科技宣布全资收购艾瑞思机器人(Ares...

  物联网作为新时代的宠儿,有其独到之处,操作系统是物联网的灵魂,开源操作系统更是集结了各物联网大亨的理...

  嵌入式设计是个庞大的工程,硬件电路设计方面这几个要点需要格外注意。嵌入式的硬件构架中CPU是系统的灵...

  在嵌入式软件开发过程中,一般来说,花在测试和花在编码的时间比为3:1(实际上可能更多)。这个比例随着...

  Linux和C语言有着很深的渊源,因为Linux本身就是用C语言编写的。同时,在Linux操作系统中...

  由于多线程、实时和多任务嵌入式系统的情况纷繁复杂,使我们越来越难以预料微处理器会在什么时候出现问题。...

  越来越多的记录在案的安全漏洞使用物联网(IoT)作为切入点,提高了物联网连接设备的设计社区的安全意识...

  机器人出租车绝对将会在2019年内推出上路。有许多投资方和合资企业都致力于推出这些自动驾驶的车辆,诸...

  同样地在中国,Java 也是最常用的编程语言。我们进一步研究的结果表明,就使用情况来看其他语言与 J...

  全球导航卫星系统 (GNSS) 非常有用,能够定位全球任意位置已正确启用此功能的系统,但仅仅使用 G...

  Jamison将机器人比作交互式语音应答(IVR)系统。我们已经使用IVR 30年或更长时间了,我...

  据麦姆斯咨询介绍,随着这些年将人工智能技术赋能行业的不断深入,商汤科技对智慧城市建设有着更深的理解。...

http://nzrimfire.com/goujianduixiang/88.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有