VxWorks下的RapidIO网络接口及实现方法与流程

文档序号:17065011发布日期:2019-03-08 22:51阅读:854来源:国知局
VxWorks下的RapidIO网络接口及实现方法与流程

本发明涉及通信技术领域,具体地,涉及vxworks下的rapidio网络接口及实现方法。



背景技术:

rapidio是由motorola和mercury等公司率先倡导的一种高性能、低引脚数、基于数据包交换的互连体系结构,是为满足和未来高性能嵌入式系统需求而设计的一种开放式互连技术标准。rapidio主要应用于嵌入式系统内部互连,支持芯片到芯片、板到板间的通讯,可作为嵌入式设备的背板(backplane)连接。

vxworks是美国风河公司推出的一款实时操作系统,其产品和服务在业界已得到一致好评,并且vxworks系统的应用已全面渗透到日常生活中,并涉及到工业、军事、通信、运输等众多领域。虽然vxworks下已经有很多完善的rapidio驱动程序,并且现阶段vxworks下支持rapidio网络的通用接口为ipoverrapidio。从相关检索中可以得知,现阶段只有linux系统中有把socket应用于rapidio网络的。在vxworks系统中使用ipoverrapidio接口传输数据时,要经过繁杂的tcp/ip协议栈,这使得rapidio的性能仅发挥了不到10%。



技术实现要素:

针对现有技术中的缺陷,本发明的目的是提供一种vxworks下的rapidio网络接口及实现方法。

根据本发明提供的一种vxworks下的rapidio网络接口,包括:

应用层:提供上层软件的应用接口,上层软件调用所述应用层进行数据处理;

自定义协议层:包括自定义协议栈,所述自定义协议栈由vxworks操作系统自带的注册函数注册得到,解析来自rapidio驱动模块的rapidio数据的数据帧头;

rapidio驱动模块:通过vxworks操作系统的mux层连接所述自定义协议层,发送和接收rapidio数据。

较佳的,所述应用层采用socketapi。

较佳的,通过改变socket函数的参数,选择创建rapidio网络的socket。

较佳的,所述注册函数为ipnet_ops_register函数。

较佳的,所述rapidio驱动模块包括:根据vxworks操作系统的mux标准编写的rapidio驱动程序。

根据本发明提供的一种vxworks下的rapidio网络接口实现方法,包括:

步骤1:通过vxworks操作系统自带的注册函数向vxworks操作系统注册自定义协议栈;

步骤2:编写vxworks下的rapidio驱动程序,并将vxworksend驱动程序挂接在mux层下面;

步骤3:上层软件调用socketapi,在创建socket的时候,通过改变socket函数的参数,选择创建rapidio网络的socket;

步骤4:在创建完成socket之后,使用socket下udp协议的一套接口进行数据的收发;

步骤5:当程序运行结束,不再使用socket的时候,使用close函数关闭socket,释放响应的rapidio网络资源。

较佳的,所述注册函数为ipnet_ops_register函数。

较佳的,步骤2中根据vxworks操作系统的mux标准编写的rapidio驱动程序。

与现有技术相比,本发明具有如下的有益效果:

本发明基于以太网的socket接口,但是并没有使用到以太网下复杂的tcp/ip协议层,而是使用了自定义的基于rapidio的高效简洁的协议栈,这不仅为vxworks下rapidio网络提供了统一的接口,还降低了协议的复杂度和通信开销,提升了rapidio通信性能。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为本发明的原理框图

图2为本发明rapidio数据的数据帧头的格式图。

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。

如图1所示,本发明提供的一种vxworks下的rapidio网络接口,包括:

应用层:提供上层软件的应用接口,上层软件调用应用层进行数据处理。应用层采用socketapi,通过改变socket函数的参数,选择创建rapidio网络的socket。

自定义协议层:包括自定义协议栈,自定义协议栈由vxworks操作系统自带的注册函数(ipnet_ops_register函数)注册得到,解析图2所示的来自rapidio驱动模块的rapidio数据的数据帧头,并把解析后的数据传输给应用层,或者组合来自应用层的数据传输给rapidio驱动模块。图2所示为自定义的rapidio数据帧头格式,当发送和接收数据时,数据帧可能需要进行分片和重组,负载长度字段表明当前数据帧的长度,分片数据偏移指明当前数据帧在总数据帧中的位置,源目id号代表rapidio系统的deviceid,用于驱动程序进行识别,源目端口号对应udp协议的端口号,用于区分不同的socket,校验和用于校验当前帧头是否有错位,数据总长度字段、负载长度及分片数据偏移这三者结合起来用于数据的分片重组。

rapidio驱动模块:根据vxworks操作系统的mux标准编写的rapidio驱动程序,通过vxworks操作系统的mux层连接自定义协议层,发送和接收rapidio数据,mux层是自定义协议层和rapidio驱动模块之间的中间桥梁。驱动模块是利用rapidio协议中的nread、doorbell以及message完成的。发送端首先通过message告知接收端本地缓存地址,发送端再通过doorbell消息告知接收端本地有数据需要发送,接收端根据doorbell消息内容进行nread操作,读取发送端的数据,读取完数据之后,在通过doorbell告知发送端数据已经读取完毕,发送端根据doorbell消息内容释放存有数据的缓存。

在上述一种vxworks下的rapidio网络接口的基础上,本发明还提供一种vxworks下的rapidio网络接口实现方法,包括:

步骤1:通过vxworks操作系统自带的注册函数向vxworks操作系统注册自定义协议栈;

步骤2:编写vxworks下的rapidio驱动程序,并将vxworksend驱动程序挂接在mux层下面;

步骤3:上层软件调用socketapi,在创建socket的时候,通过改变socket函数的参数,选择创建rapidio网络的socket;

步骤4:在创建完成socket之后,使用socket下udp协议的一套接口进行数据的收发;比如使用sendto函数发送数据,使用recvfrom函数进行接收数据。

步骤5:当程序运行结束,不再使用socket的时候,使用close函数关闭socket,释放响应的rapidio网络资源。

本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1