一种基于vxworks平台上快速收发以太网报文的方法

文档序号:7886982阅读:792来源:国知局
专利名称:一种基于vxworks平台上快速收发以太网报文的方法
技术领域
本发明涉及智能电网以太网报文(非IP报文)的收发方法。
背景技术
随着智能电网的推行,各种变电站的设备需要支持智能IED,而为了保证设备的稳定性与实时性,一般都选用vxworks操作系统。而vxowrks系统仅支持TCP/IP报文的收发, 对链路层的报文支持有限,并且由于需要经过系统任务的转发,在实时性上比较差,无法满足智能电网中GOOSE报文和SV报文要求的实时性。

发明内容
本发明所要解决的技术问题是提供一种基于vxworks平台上快速收发以太网报文的方法,减少了操作系统处理报文的时间,提高了数据传输的实时性。为解决上述技术问题,本发明的技术方案是一种基于vxworks平台上快速收发以太网报文的方法,包括以下步骤(1)以太网报文收发初始化;(1. 1)预先分配好报文收发需要的内存池;(1. 2)调用muxBind向vxworks系统注册对应的协议处理类型,并记录返回的 COOki,已备后续发送数据使用;(2)以太网报文发送;(2. 1)从内存池中分配数据发送缓冲区,并初始化相关参数;(2. 2)封装将要发送的数据,在缓冲区中加上链路层报文头,并将数据拷贝到缓冲区中,而缓冲区的释放会在发送报文完成后由系统调用缓冲区释放函数释放缓冲区; (2. 3)调用muxSend发送应用数据;(3)以太网报文接收;数据接收分为上半部和下半部部分,其中上半部为中断处理过程,而下半部为应用接收报文的处理过程;上半部1)当有以太网报文到达时,会产生一个数据接收中断,而中断中会调用对应类型报文注册的回调函数;2)在回调函数中,从内存池中分配内存接收缓冲区,然后将数据保存在内存缓冲区中;3)将缓冲区保存到接收队列中;下半部1)从接收队列中取出报文;2)解析出以太网报文头;3)将数据拷贝到读缓冲区。
作为改进,所述内存池中的分为32Bit,64Bit,128Bit, 256Bit, 512Bit, 1024Bit, 2048Bit几种大小的数据缓冲区。本发明与现有技术相比所带来的有益效果是一种基于vxworks内核中的Mux层进行报文收发的方法,对数据的发送可以直接将数据通过驱动接口进行发送,而接收则直接在中断中将数据放到每路通讯接口的缓冲区中,而不需要经过任务进行转发,减少了操作系统处理报文的时间,提高了数据传输的实时性。


图1为以太网报文收发初始化流程图。图2为以太网报文发送流程。图3为以太网报文接收流程。
具体实施例方式下面结合说明书附图对本发明作进一步说明。一种基于vxworks平台上快速收发以太网报文的方法,包括以下步骤(1)如图1所示,以太网报文收发初始化;(1. 1)预先分配好报文收发需要的内存池,内存池中的分为32Bit,64Bit, 128Bit,256Bit,512Bit,1024Bit,2048Bit 几种大小的数据缓冲区;(1. 2)调用muxBind向vxworks系统注册对应的协议处理类型,并记录返回的 COOki,已备后续发送数据使用;(2)如图2所示,以太网报文发送;(2. 1)从内存池中分配数据发送缓冲区,并初始化相关参数;(2. 2)封装将要发送的数据,在缓冲区中加上链路层报文头,并将数据拷贝到缓冲区中,而缓冲区的释放会在发送报文完成后由系统调用缓冲区释放函数释放缓冲区;(2. 3)调用muxSend发送应用数据;(3)如图3所示,以太网报文接收;数据接收分为上半部和下半部部分,其中上半部为中断处理过程,而下半部为应用接收报文的处理过程;上半部1)当有以太网报文到达时,会产生一个数据接收中断,而中断中会调用对应类型报文注册的回调函数;2)在回调函数中,从内存池中分配内存接收缓冲区,然后将数据保存在内存缓冲区中;3)将缓冲区保存到接收队列中;下半部1)从接收队列中取出报文;2)解析出以太网报文头;3)将数据拷贝到读缓冲区。
在vxworks系统中,可以通过内核的MUX层接口,直接与网卡驱动进行交互,减少操作系统处理报文的时间。在需要进行以太网报文收发的时候,需要分配好数据缓冲区,然后通过muxBind 注册对应的协议类型到MUX层。而muxBind将返回一个句柄,可以通过该句柄进行对网卡驱动等进行操作控制。
权利要求
1.一种基于vxworks平台上快速收发以太网报文的方法,其特征在于,包括以下步骤(1)以太网报文收发初始化;(1.1)预先分配好报文收发需要的内存池;(1. 2)调用muxBind向vxworks系统注册对应的协议处理类型,并记录返回的cooki, 已备后续发送数据使用;(2)以太网报文发送;(2. 1)从内存池中分配数据发送缓冲区,并初始化相关参数;(2. 2)封装将要发送的数据,在缓冲区中加上链路层报文头,并将数据拷贝到缓冲区中,而缓冲区的释放会在发送报文完成后由系统调用缓冲区释放函数释放缓冲区; (2. 3)调用muxSend发送应用数据;(3)以太网报文接收;数据接收分为上半部和下半部部分,其中上半部为中断处理过程,而下半部为应用接收报文的处理过程; 上半部1)当有以太网报文到达时,会产生一个数据接收中断,而中断中会调用对应类型报文注册的回调函数;2)在回调函数中,从内存池中分配内存接收缓冲区,然后将数据保存在内存缓冲区中;3)将缓冲区保存到接收队列中; 下半部1)从接收队列中取出报文;2)解析出以太网报文头;3)将数据拷贝到读缓冲区。
2.根据权利要求1所述的一种基于vxworks平台上快速收发以太网报文的方法,其特征在于所述内存池中的分为 32Bit, 64Bit, 128Bit, 256Bit, 512Bit, 1024Bit, 2048Bit 几种大小的数据缓冲区。
全文摘要
一种基于vxworks平台上快速收发以太网报文的方法,包括以下步骤(1)以太网报文收发初始化;预先分配好报文收发需要的内存池;调用muxBind向vxworks系统注册对应的协议处理类型,并记录返回的cooki,已备后续发送数据使用;(2)以太网报文发送;从内存池中分配数据发送缓冲区,并初始化相关参数;封装将要发送的数据,在缓冲区中加上链路层报文头,并将数据拷贝到缓冲区中,而缓冲区的释放会在发送报文完成后由系统调用缓冲区释放函数释放缓冲区;调用muxSend发送应用数据;(3)以太网报文接收;数据接收分为上半部和下半部部分,其中上半部为中断处理过程,而下半部为应用接收报文的处理过程。减少了操作系统处理报文的时间,提高了数据传输的实时性。
文档编号H04L12/56GK102546415SQ20121000699
公开日2012年7月4日 申请日期2012年1月11日 优先权日2012年1月11日
发明者林萍 申请人:深圳市科陆电子科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1