DSP实时CORBA的IIOP协议的实现_第1页
DSP实时CORBA的IIOP协议的实现_第2页
DSP实时CORBA的IIOP协议的实现_第3页
DSP实时CORBA的IIOP协议的实现_第4页
DSP实时CORBA的IIOP协议的实现_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、dsp实时corba的iiop协议的实现郑许衡赵蕾李芳(中国西南电了技术研究所,阿川成都610036)摘 要orbcxprcss是一款爲性能的实时corba中间件。由丁一般情况下dsp存储器资源有限,在其 dsp产品中,没有提供iiop(即支持tcp/ip的transport)o这里分析了设计transport的方法,并基丁 dsp6455 给出了实现hop的应用实例。验证了 corba的transport的设计和实现方法。关键词 实时corba: iiop: giop:数字信号处理器1引言transport是一种网络工貝,corba通过它在进程间收发数据。tcp/ip是corba的标tran

2、sport,称 为hopo corba还允许根据需耍插入其它transport,如atm等。由于一般情况下dsp的存储器资源有限, orbexpress的dsp产品没有提供iiop,而是提供了共享内存、进程间内存等transporto如果应用中dsp 挂接人容量存储器,如ddr2,贝ij冇足够的空间运行tcp/ip协议,具备实现iiop的条件。本文首先分析了设计transport的方法,然后搭建实验环境在dsp6455上实现了 iiop。实现这一功能后, 还可以用同样的方法将giop映射到其它传输协议上,插入其它高效传输协议的transporto2 giop和iiop协议corba通过使用gi

3、op实现互操作性。giop描述如何产生一个符合一般orb间协议框架的特定的协 议。giop是不同orb间的一个通用接口,定义了 idl的一些基本类型、可构造类型和通倍的消息格式。 它屏蔽了操作系统、实现语言以及具体厂商等因索,只要是orb支持的协议,就能够在不同的orb间实 现通信。giop规范主要山以下几个部分组成:(1)传输假设:对执行giop协议实现的底层传输作了大量的假设。主要关注于可能用來传输g1op消 息的任何网络的transport层,还描述如何管理连接等内容。这些假设完全与tcp/ip捉供的保证相匹配,但 是其它传输如atm等也满足这些要求。(2)公共数据农示(cdr, com

4、mon data representation):是transport的语法,为毎个idl数据类型定 义了到底层格式的映射,这样发送者和接收者数据在二进制格式上就取得了一致。(3)消息格式:定义了由客户机、服务器以及其它corba代理间通信使用的8种消息类型。便于对 彖请求、定位对彖和管理通信通道的实现。标准的i办议iiop使用的transport是tcp/ip,它描述orbs如何打开tcp/ip连接和使用连接来传递giop 消息。iiop是giop到一个特定transport (tcp/ip)的映射。为了实现一个口j替换的transport»必须很好的理解transport和它的a

5、pl 一般的corba产品都支持对 transport的替换,其主要任务是建立giop到新的transport的映射。图1描述了新的transport的位坠standardplug-ingop io 帕 wmdmrhpcrt by wofcngirouidtry viotabwot oopatmtcm图1可替换的transport的概念在dsp应用»p,iii于没冇hop,可以把dsp的iiop认为就是要实现的新的transporto3实现transport的步骤orbexpress为开发者提供了工具來“插入”不同的transport,以在需要时替换产品提供的transport. h

6、op 是corba的标准transporto但是在orbexpress的dsp产品不像ppc等其它产品那样提供了 hop,而是 捉供了其它一些支持简单协议的transport,这主要是基于一般悄况下dsp存储器资源冇限不适合跑tcp/ip 这种较复杂协议栈和实时性两个方面的考思。应用中dsp挂接了大容量128 mbytcsddr2,可以使川iiop。要实现orbcxprcss dsp的hop,这个 transport需要包括4个方面的内容:(1) 一个用來捕获transport地址的字符串格式:为一个端点定义字符串oe_endpoint的格式,它将用于 orb的orbjnit等儿个接口中。(2

7、) -个用来捕获qos参数的字符串格式(可选项,本文何不考虑qos)。(3) 4个c+类的实现。图2 orbexpress中描述transport主要对象类相互关系的uml图图2描述了一个transport的主耍对象类的札i互关系。一 11建立起连接,oe_netcircuit代农这个网络连接, 从这里通过通信媒介读写数据。其工厂类oe-netcircuitfactory负责初始化和建立连接,并将结果反映到 circuit 类。oc_nctcollectors用于一个连接的服务器端从个circuit讲请求。collector是激活的对象,控制服务器端 从 circuit 接收数据。oe_net

8、collectorsfactory 用于创建 collector 实例。oe_netflow类及相应的工厂用于未來的扩展。oe_netacceptor用于检测网络连接,一旦检测到,调用oe_nelcollectorsfactory产生collector和相应的 oe_netcircuito 当服务器开始侦听一个 oe_endpoint 时会使用 oe_netacceptorfactory 类。(4) 向 orb 注册 transport:包括 endpoint 注册,circuit t-厂和 acccpotor t.厂注册。新的可替换的transport的api连接到可执彳亍的0rbexpre

9、ss,就可以使客户端和服务器使用这个transportc 在orb卅动服务时,为每个连接协议在服务器端卅动一个连接接收器(accept),监听客户端发来的连 接请求,同时为毎个客户端定动一个连接器(connector),客户端通过connecior向orb发出连接请求。 acceptor -旦监听到有客户连接诸求,就将它发给orb进行处理,一旦连接关系确定,客户与服务器端就 "j以通过transport的api进行数据通信,服务器是通过乂操作对彖引用ior( interoperable object reference) 來定位连接对彖的。4验证设计实例以一个下棋的工程为例來实现ds

10、p的iiop,用hop替换原來的进程间内存transporto tcp/ip协议栈使 用ti公司结合c6000芯片推出的tcp/ip ndk (network developer's kit)套件,它包含了 tcp/ip协议栈 程序库。硬件平台采用2块6455的demo板,一块跑server, 一块跑client,如图3所示。图3调试环境第3部分描述的4个步骤实现如下:(1) 定义字符$ oe.endpoint 的格式:服务器端定义为"mytcp: /2: 1234”,其中 mytcp 是 transport 名字;18&8&25.62:

11、 1234 是地址信息。客户端定义为“mytcp: /18&88.25.63: 1234”。(2) 定义应用到oe_netcircuit +的qos参数集:可选项,本文暂时没有考虑。(3) 4 个 hop类的实现:定义 oc_nctcircuit 及其工厂类 oc_nctcircuitfactory。定义 oc_nctacccptor及其工厂类 oe_netacceptorfactoryo(4) 向 orb 注册 transport: 1、调用 oe_endpointregistry:: .register 注册 endpoint string; 2、创建 oe_netcircuitf

12、actory类的实例,其构造函数将其注册为transport的circuit工厂:3、创建 oe_netacceptorfactory类的实例,其构造函数将其注册为transport的acceptor v.)。实现上述4个步骤后,为orbcxprcss调用初始化函数后,嵌入了 transport名字的endpoint字符串吋以 被正确的解释transport就可以正确使用了。首先启动server开始侦听,运行结果如图4所示,然后运行 clien(与sewer建立连接后并开始应用,如图5所示。图6为应用结束厉服务器和客户端的状态。由上述过 程可以看出止确的实现了 hopo"9圧fcu&

13、#187;"fcn>fc各* 養3b 辺 g5)*a"c/"rj“ a. z? e. tjdj tz. t心.i «#>unt .di4 oe_bb i <_thrw><l (void* arg*9)tt er«e 3: cimr* orgv【4】 "server-,1734". 0" lot 9ryc 3: um" ergwj ( ervwr匕 ftcp:"】卿心&"62;ff /cl»r« «&vp( 1)

14、 ();taervor jmfco(arjc &rg5 gvp):itttae.thresd! sbpawbfde.juib.thrmd,0<0.g.nzd * mlrrfmilt.priari ty . 20000< / (14z»£dnra” > /arf z dyyrfeiir mx(cy ihiegnv)tcp/ip stek hello mrldi aplieatioimas hac adirm; ocww-02-72-wjetwork added: if-1:ibb.89.2s.24smrsaertctacc幵srfy3ry: cxx&

15、#171;usxaf.col l«gtar_fagtqiy: gkfl07ab0,ubibs.flow_fgtory: qi 2 atjiriorx ty; 8 (rervar:rv: sarvwrdeso zie«rrer; dwx>_gc»»srv: coafisumcioa;y7cp;zzi38.83rz5.245; 1234 -thrwmiact >-tckiroflit type:ifh«4bructlob mp6maytcp:zz1m rfi ?525: i?34betjtcp-twdrem eadpoifit: 166

16、-5.25.245:1234 rmidt: 180.0625.245: l?34 qetjtcplf tp:1b8.8p.75.245gexjtcpjrt npow:mmru灯乂»rt 123<>ird uccoafall inturt llnteftnagi图4第一步启动server开始侦听tcp/ip stock hello wbrldi applicotionusing mac address: 00-0q-99-02-7o-dflink status: 10mb/t half duplex on phy 1tjotwork added: if-1:188.88.2

17、5.63 starting tictactoe clienttcpcircuit typ*:0settcpaddress endpoxnt:4s:1234.result:45:1234 getjtcpip ipj45get.tcp.port endpoint:1234,port:1234port 1234met_dddr(ip):-182888260client socket okconnect socket okclient: _dspiost_(n new cohnectiom to 5ytcpmc4s:

18、1234,tcpcircuit:write :giopiroed:giopi successfully bound to gone serverwelcome to tictctoe,tcpcircuit:wrxt :giopi rwad:giopivalid board positions:ul um urml mm mrll lm lror f to foreit this garte. enter a stove:图5第二步启动client与server建立连接并开始应用qtfr|o>e “c|£3 * i 0 ssqbbd4亠主甘亠t2fle合,|board after

19、 computer*s move:x | 0valid board positions:ulum urmlmm mrlllm lror fto foreit this gdiao.enrera move: mltcpcircuit:write :giopiread :giopiboardafter player-s movex |1 ox i 0 i ox i x ircpcircuit:write :oiopi read:giopi-wove-x i i+>i x ix i 0 | 0potential move at: (hv01 scores -> col searcpote

20、ntial move: hv2 scores > col sernrepotential move at: hv10 scores -> col searcpotential move at: (hv12.scores > col searcbest score was 11 founcclocation 02wow calculating the best computer move.computer's movex| | 0 + 十board after computer's move:x| i 0x | 0 | 0tcpcircuit:write :gi

21、opi tead:giopi-move-x | 0一丰x i x |congratu1at ions i you won i ido you want to play again? enter y/n:n client is terminating normallyx i 0 i 0-cowputer*s move- 乂。 computsr move. status of game is: player won tcpcircuit:write :giopi图6应用结束后服务器和客户端的状态实现上述4个步骤后,当orbexprcss调用初始化函数后,嵌入f transport金字的endpoint字符串可以 被正确的解释,transport可以正确使用了。首先启动server开始侦听,运行结果如图4所示,然后运行client 与server建立连接后并开始应用,如图5所示。图6和图7为应用结束后服务器和客户端的抓图。由上述 过程可以看出正确

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论