《基于和欣嵌入式操作系统的构件化网络协议栈.pdf》由会员分享,可在线阅读,更多相关《基于和欣嵌入式操作系统的构件化网络协议栈.pdf(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、电子技术应用2 0 0 6年第6期欢迎网上投稿w w w.a e t n e t.c n w w w.a e t n e t.c o m.c n(接上页)L D A P T A/读取B K G D引脚状态N O PN O PN O PL S R A/将读取位移入标志位CL S R AR O L*B D M D A T A/将读取的位存入变量P U L AD E C AB N E _ N E X T B I T R/判断字节是否读取完毕R T S/返回主程序对于硬件命令,命令之间间隔要大于1 5 0个时钟周期;对于固件命令,送出读 命令到 读取 数据 之间要 延迟3 2个时钟周期;写命令后面可紧
2、跟需要写的数据,但与下一条命令之间要间隔3 2个时钟周期。3.2.3测试程序为了测试以上程序的正确性,特用V C 6.0编写了一个计算机端的测试程序。该程序通过串口与J B 8通信,以完成对B 3 2F l a s h的读写和擦除。由于源代码较长,限于篇幅不在此列出。参考文献1F r e e s c a l e.M 6 8 H C 1 2 BF a m i l yD a t as h e e t.R e v.9,2 0 0 42F r e e s c a l e.C P U 1 2R e f e r e n c eM a n u a l.R e v.3,2 0 0 23F r e e s c
3、a l e.AS e r i a l B o o t l o a d e rf o rR e p r o g r a m m i n gt h eM C 6 8 H C 9 1 2 B 3 2F l a s h.E2P R O M,1 9 9 74F r e e s c a l e.M C 6 8 H C 9 0 9 0 8 J B 8/D.R e v.1.0,2 0 0 0(收稿日期:2 0 0 5-1 1-2 0)嵌入式I n t e r n e t是随 着嵌入 式系 统的 广泛应 用和 计算机网络技术的发展而产生的一种新概念和技术。嵌入式系统以应用为中心,以 计算 机技术 为基 础,且软
4、 硬件可裁剪,现已赢得了巨大的市场。随着I n t e r n e t的发展,各种设备都产生了连接性 的需 求,从冰 箱到 电表,似乎所有电器都需要连入互联网。通过为现有嵌入式系统增加因特网接入能力来扩展其功能,以I n t e r n e t为介质实现信息交互,从而产生了嵌入式I n t e r n e t技术。要实现嵌入式设备的网络化,需要实现T C P/I P网络协议栈,但由于I n t e r n e t上各种通信协议对计算机存储器、运算速度等的要求比较高,使得嵌入式系统协议栈的开发实现并不顺利。目前有两个关键因素影响网络协议栈的开发,一是性能和效率,二是开发调试方便。传统的操作系统一
5、般只能顾及其中的一个方面。例如在L i n u x、F r e e B S D中,网络协议栈作为系统内核的一部分实现,通常具有较高的通信效率,但是不方便用户添加实现新的用户协议及根据特殊需要对协议的实现细节调整,同时对协议代码的维护、调试和开发也不方便。这个缺点在嵌入式领域表现得尤为突出。由于嵌入式设备的多样性和通信需求的多样性,嵌入式领域的网络协议栈的复用率非常低。本文将构件技术引入网络协议栈的开发,并在国产和欣操作系统上实现了一个构件化的网络协议栈,很好地解决了开发与效率的问题。1和欣嵌入式操作系统和C A R构件技术1.1和欣嵌入式操作系统和欣操作系统基于微内核,服务动态加载。内核包括硬
6、 件驱 动(串口、U S B、以 太 网 卡、无 线 通 信 模 块)、内存管理等系统基本服务,如图1所示。T C P/I P协议栈完全由构 件实 现,是运 行在 构件 平台之 上的 一 个 服 务 构件。底层网卡、串口等设备得到数据之后将数据交上层服务构件处理。和欣嵌入式操作系统是基于构件化软件模型,构件化软件设计思想贯穿了整个系统的设计与实现,系统实现本身就是构件模式。除内核中最底层控制部分外,所基于和欣嵌入式操作系统的构件化网络协议栈胡代前,陈榕(同济大学 计算机科学与工程系,上海2 0 0 0 9 2)摘要:介绍了和欣嵌入式操作系统的特点以及C A R构件技术,分析了在和欣嵌入式系统
7、上T C P/I P协议栈的特点及其实现。关键词:和欣嵌入式操作系统C A R构件技术T C P/I P协议栈嵌入式技术6 4电子技术应用2 0 0 6年第6期本刊邮箱:e t a n c s e.c o m.c n有系统功能都以构件接口形式提供。另外,操作系统对构件化软件模型提供了必要的运行环境,来源不同的构件可以在该环境上实现互操作。系统提供了构件自动寻址/自动加载机制,用户不必知道调用的构件程序是本地的还是来自于网上,即构件运行环境对用户透明。构件化系统的实现,使得操作系统本身具有高度的灵活性和扩展性。和欣采用了C A R构件技术。1.2C A R构件技术C A R构件技术是在总结面向对
8、象编程、面向构件编程技术的发展历史和经验的基础上,为更好地支持面向以We b服务为代表的下一代网络应用 软件 开发 而发明的。C A R(C o m p o n e n t A s s e m b l yR u n t i m e)构件技术定义了一套网络编程时代的构件编程模型和编程规范,它规定了一组构件间相互调用的标准,使二进制构件可自描述并能够在运行时动态链接。C A R构 件 技 术 通 过 二 进 制 的 封 装 及 动 态 链 接 技 术解决软件的动态升级和软件的动态替换问题。面向构件技术对一组类的组合进行封装,并代表完成一个或多个功能的特定服务,同时为用户提供多个接口。整个构件隐藏了
9、具体的实现,只用接口提供服务。这样,在不同层次上,构件均可以将底层多个逻辑组合成高层次上粒度更大的新构件。构件之间通过约定的接口进行数据交换和信息传递,构件的 位置 相互 透明,可 以在 同一个 或不同的用户进程空间、不同的机器甚至不同的构件上用不同的语言编写,只要其符合事先约定的构件规范。2和欣操作系统上的T C P/I P协议栈的特点与实现2.1和欣嵌入式操作系统上T C P/I P协议栈的特点由 于 嵌 入 式 系 统 在 硬 件 资 源 的 占 有 量 以 及 处 理 器的处理能力等方面的限制,使得T C P/I P协议的嵌入式实现与其在通用操作系统中的实现有很大不同。首先,由于嵌入式
10、处理器的时钟频率低,地址、数据总线窄,导致嵌入式系统对一个通用I P包的处理要花费更多的处理机时间,从而影响其他任务的执行。因此需要对庞大复杂的T C P/I P协议栈进行裁剪,使之具有简单、高效的特点。同时在设计嵌入式T C P/I P协议栈时要合理控制中断处理程序的大小,使得中断处理程序的运行时间尽可能短;同时把那些无实时性要求和费时的工作移到主程序中执行,从而保证协议的正确执行。具体来说,就是把T C P/I P协议的处理工作放到主程序中,对网络接口的控制芯片采用循环查询方式,在其他中断任务的执行间隙处理T C P/I P协议,以牺牲系统的响应时间换取系统的可靠性。再者由于嵌入式系统的存
11、储空间有限,一般情况下只能开辟几K B字节的缓存区接收数据包,并且其存储空间固定,不是动态分配的。因此,在遇到大数据包时就会出现缓冲区溢出的错误。通常,嵌入式系统接收的数据包类型仅为系统状态配置包、控制动作命令包、通信控制包等,这些包容量较小。由实时数据或网页向网络发送的数据包比较长,但可以通过设计格式加以控制。和 欣 操 作 系 统 是 基 于 微 内 核 的 操 作 系 统,其 上 的T C P/I P协议栈既可以运行在用户态,也可以运行在内核态,具有通用接口和 方便的 框架,方便用 户开 发适 合自己领域或特殊需要的网络协议栈。因为和欣操作系统提供了高效的进程上下文切换功能和进程间通信,
12、所以整个网络协议栈作为一个用户态进程提供服务。使用前先创建网络构件实例,然后向操作系统注册服务。此后用户就可以使用网络编程接口了。如果用户对网络协议栈有更高的效率要求,则可以将该协议栈加载到内核态。2.2和欣嵌入式操作系统T C P/I P的实现根据和 欣嵌 入式T C P/I P协 议栈 的特 点,在 实 现 嵌入 式T C P/I P协 议 栈 时 只 需 要 用 到 下 述 四 个 基 本 协 议:T C P协议、I C M P协议、I P协议、A R P协议。其余的链路层协议如P P P协议需要在嵌入式T C P/I P协议栈下面的设备驱动程序中实现;而像H T T P、F T P这样
13、的应用层协议则要在嵌入式T C P/I P协议栈上面的应用层中实现。2.2.1地址转化协议A R PA R P协议为I P地址和以太网M A C地址建立一个映射表。这个协议对于以太网的T C P/I P协议的操作是必不可少的。为了节省空间,一个I P地址的A R P请求覆盖即将发送的数据包。该A R P请求就是因为要发 送这个包而发送的。这种方法在假设上层会重发被覆盖的数据时采用。每隔十秒钟,表就 会刷 新一次,旧的 记录被 丢弃。在嵌入式T C P/I P协议栈中,记录的有效时间为1秒。2.2.2网际协议I P在嵌入式T C P/I P中,I P协议执行两项功能:(1)封装来自上层的T C
14、P数据包或I C M P数据包,计算I P数据包的检验和;(2)解析I P缓存中的数据包,检查数据包的协议字段,以判断该数据包应该交给I C M P协议还是T C P协议处理。基于嵌入式We b服务器 与客 户端通 信的 信息 量很小,数据 包的大 小不 会超 过链路 层 的M T U(最 大传 输 单 元),嵌 入 式I P没 有 引 入 数 据 包 分 片 和 重 组 功能。标准的I P协议有选路功能,可以选择较短路径传送数据包,在嵌 入式I P中,为了 减少 代码 规 模,未 引 入 选路功能。嵌入式技术6 5电子技术应用2 0 0 6年第6期欢迎网上投稿w w w.a e t n e
15、t.c n w w w.a e t n e t.c o m.c n2.2.3网际控制报文协议I C MP在嵌入式T C P/I P协议栈中,只处理一 种I C M P消息类型:I C M P回送消息。I C M P回复消息经常被用来调用p i n g程序测试对方主机是 否在线。在嵌 入式T C P/I P协议栈中,I C M P回送消息用一种十分简单的方式实现,即将I C M P类型的字段由“e c h o”类型改变为“e c h or e p l y”类型。改变I P首部的I P地址,将数据包送回发送者。2.2.4传输控制协议T C PT C P协议是面向连接的、端到端的可靠通 信协 议。它
16、采用了许多机制保证传输可靠性,应用于嵌入式系统显得过于复杂。在嵌入式T C P/I P协议栈中,为了减少存储空间的占用,没有引入发送和接收数据的可靠窗口机制。通常,嵌入式We b服务器处于被动服务状态,所以可 以 将 标 准T C P有 限 状 态 机 的 主 动 创 建 连 接 的S Y NS E N T状 态、主 动 关 闭 连 接 的F I NWA I T 1、F I NWA I T 2、C L O S I N G、T I M EWA I T状态裁剪。设计中还去掉了L I S-T E N I N G状态,使它在C L O S E D状态下就处于侦听状态,监听客户端的连接请求。这样避免了主
17、动或被动打开及关闭的操作,使嵌入式T C P/I P协议栈更精简。嵌入式T C P/I P中到达T C P段的数 据不被 缓存,应用程 序必 须立即处理它。当然,这并不阻止应用层缓存数据。每次连接 在 发 送 数 据 时,无 法 同 时 处 理 多 于 一 个 的T C P段。T C P协议的实现原理比 较复 杂,在嵌 入式T C P/I P协议中,实现T C P协议是一个最关键的问题。2.2.5构件化的协议栈采用构件化方法实现网络协议栈的关键是:(1)如何划 分构 件的粒 度。需 要根 据用户 的需 要 决定,如果用户是开发一个 新的协 议栈,可以 采用大 粒度的构件划分方式(如图2所示),
18、即把整个网络协议栈作为一个大的构件,继承预先定义的构件。(2)如何设计构件接口。要实现(1)所提到的 构件 的自由替换,必须设计良好的构件接口。所有的构件实现应该继承该接口。设计接口的原则是尽量保持接口的通用性和简洁性。当有新的功能添加时,可以通过继承实现新的接口方便地加入原有的框架,从而实现软件的无缝升级。(3)提高网络通信的效率。一个高效的通信协议需要满足:上下文切换和定时器的轻型完成;多个协议具有统一的使用界面;在网络设备,核心层和用户层之间有高效的缓冲机制,避免不必要的拷贝。如果操作系统提供了快捷的上下文切换及高效的进程间通信,则整个网络协议栈便可以作为一个用户态进程对用户进程提供服务
19、。如果进程上下文切换比较复杂,则整个网络协议栈可以作为动态链接库链入用户进程地址空间,但需要对多进程共享的数据加锁,进行同步访问控制。另外一种选择是将网络协议栈装入内核空间,也可以避免频繁的进程上下文切换带来的系统开销。因为采用了通用的S O C K E T编程接口作为最终提供给用户使用的接口,从而使多个协议具有统一的使用界面。同时,在采用细粒度构建的网络协议栈中,各层协议之间的接口也是精心构造的统一接口。为了避免大量数据的拷贝,需要设计良好的数据结构,同时采取“共享内存”的方法。在网络协议各层次间尽量以指针方式传递数据。构件化的网络协议栈具有以下优点:(1)针对不同网络应用的需求,能最大限度
20、地利用领域相关知识进行调整,提高了性能。(2)底层构 件可 以在不 影响 顶层 使用的 情况 下进行修改。(3)方便用户添加及开发调试新的协议。该文采 用上 海科泰 公司 的C A R构 件技术 在和 欣操作系统上实现了一个构件化的网络协议栈。该网络协议构件既可以加载在内核 态,也 可以加 载在 用户态,方便开发调试,有利于开发新的网络协议栈。其他开发者采用构 件的 方法开 发出 了高效 或者 针对 某特定 领 域 的 网络协议栈,可以方便地替换和欣操作系统上原有的网络协议栈。使用构件化的方法开发网络协议栈也可以推广到其他支持构件的操作系统上。参考文献1Wr i g h t GR,S t e
21、v e n sW R.T C P/I PI l l u s t r a t e dV o l 2:T h eI m p l e m e n t a t i o n M.B o s t o nM AU S A,A d d i s o nWe s l e y,1 9 9 52S t e v e n t sW R.T C P/I PI l l u s t r a t e dV o l 1:T h eP r o t o c o l M.B o s t o nM A A,A d d i s o nWe s l e y,1 9 9 43(美)W.R i c h a r dS t e v e n s著,范建
22、华译.T C P/I P详解.卷一:协议 M.北京:机械工业出版社,2 0 0 04(美)G a r yR.Wr i g h t,W.R i c h a r dS t e v e n s,陆学莹译.T C P/I P详解卷二:实现 M.北京:机械工业出版社,2 0 0 05(美)M c C o m b i eB.E m b e d d e dw e bs e r v e r sn o wa n di nt h ef u t u r e J .R e a l-T i m eM a g a z i n e,1 9 9 86(美)J.P o s t e l.I n t e r n e t p r o t o c o l.R F C7 9 1 R .I n t e r n e t E n g i-n e e r i n gT a s kF o r c e,S e p t e m b e r1 9 8 17(美)C o m e rDE著,林瑶译.用T C P/I P进行网际互联第一卷:原理、协议和结构(第四版)M.北京:电子工业出版社,2 0 0 1(收稿日期:2 0 0 5-1 1-2 0)嵌入式技术6 6