一种将axi总线数据转为虚拟网卡接收数据的实现方法技术

技术编号:28877969 阅读:13 留言:0更新日期:2021-06-15 23:13
本发明专利技术公开了一种将axi总线数据转为虚拟网卡接收数据的实现方法,属于axi虚拟网口网口适配技术领域。本发明专利技术的将axi总线数据转为虚拟网卡接收数据的实现方法通过实现虚拟的axi网卡,对外呈现一个网卡,上层用户通过socket填写数据内容,按正常的网卡收发流程发送和接收数据,在内核处理过程中,发送侧将协议栈的报文解析出来,通过axi总线发送给fpga核,接收报文过程中由用户态程序接收。该发明专利技术的将axi总线数据转为虚拟网卡接收数据的实现方法极大的丰富了软件系统架构的多样性以及适应复杂的应用场景的能力,具有很好的推广应用价值。

【技术实现步骤摘要】
一种将axi总线数据转为虚拟网卡接收数据的实现方法
本专利技术涉及axi虚拟网口网口适配
,具体提供一种将axi总线数据转为虚拟网卡接收数据的实现方法。
技术介绍
对于xilinx的ZYNQ系列的soc芯片来说,一般芯片中包含有fpga核及arm核。一般情况下,axi总线是fpga核和arm核之间唯一的数据交互通道。由于应用场景的复杂性及fpga核与arm核之间分工协作的多样性,导致在某些特定场景下,比如1588协议报文经fpga核通过axi总线透传至arm核,arm核需要将axi总线上的数据转换为特定格式递交linux协议栈处理,arm端一般运行的是linux操作系统,因此需要将axi数据转换为skb的数据格式,通过协议栈上报给用户层,以便数据处理。但是目前linux内核中没有提供axi数据转网口报文的转换功能,有待进一步改进。
技术实现思路
本专利技术的技术任务是针对上述存在的问题,提供一种极大的丰富了软件系统架构的多样性以及适应复杂的应用场景的能力的将axi总线数据转为虚拟网卡接收数据的实现方法。为实现上述目的,本专利技术提供了如下技术方案:一种将axi总线数据转为虚拟网卡接收数据的实现方法,通过实现虚拟的axi网卡,对外呈现一个网卡,上层用户通过socket填写数据内容,按正常的网卡收发流程发送和接收数据,在内核处理过程中,发送侧将协议栈的报文解析出来,通过axi总线发送给fpga核,接收报文过程中由用户态程序接收。作为优选,该将axi总线数据转为虚拟网卡接收数据的实现方法具体包括以下步骤:S1、注册私有网口的结构体;S2、实现私有虚拟网卡操作函数;S3、获取axi中断好作为网卡的中断号;S4、在网卡的发送函数中实现axi的发送;S5、通过用户态查看网口是否被内核识别;S6、建立socket来收发报文。作为优选,步骤S1中,结构体中包含打开网口、关闭网口、发送网口数据、轮询网口数据、获取网口状态、设置网卡的mac地址、判断网络地址的有效地址。首先入口函数init_module分配了一个net_device结构体。然后调用axivcard_probe1函数,在这个函数中设置了hard_start_xmit发包函数等信息,最后调用register_netdev注册分配的net_device结构体。作为优选,步骤S2中,实现网卡操作函数,即完成回调函数功能。如果需要实现PTP的功能,还需要完成axi_vcard_ethtool_ops内的函数功能及axi_ptp_caps_template内的函数功能。作为优选,步骤S3中,通过request_irq注册中断处理函数来实现axi数据的接收。作为优选,中断处理函数中包括申请的硬件中断号、函数指针、指定的快速中断或中断共享的中断处理属性、指定的设备驱动程序的名称和传入中断处理程序的参数。在Linux内核中,request_irq()函数是注册中断服务函数:函数的原型如下:intrequest_irq(unsignedintirq,void(*handler)(int,void*,structpt_regs*),unsignedlongfrags,constchar*device,void*dev_id);其中五个参数的含义如下:第一个参数irq:申请的硬件中断号;第二个参数handler:是一个函数指针,向系统登记的中断处理函数,是一个回调函数,当中断发生时,系统调用这个函数,传入的参数包括中断设备id,寄存器值。第三个参数flags:指定了快速中断或中断共享等中断处理属性。第四个参数devices:指定设备驱动程序的名称。第五个参数dev_id:传入中断处理程序的参数,可以为NULL,在注册共享中断时,此参数不能为NULL,作为共享中断时的中断区别参数。axi的中断需要和虚拟网卡共同使用同一个中断,中断的使用方式为:当多个中断资源共用一个中断线时,共享中断是很有必要的。在硬件上,只要使用线接或(或者,逻辑或)阵列,就可以达到目的。这里对中断的处理是共享中断的方式,当axi的数据接收来到时,会触发一个接收中断,这时,axi的虚拟网卡也同时会得到这个中断通知,这里的中断号与axi总线上的中断号是相同的,使用的是共享中断。作为优选,步骤S5中,通过调用ifconfig-a的方式来查看axi的虚拟网卡是否被内核所识别。作为优选,数据接收方向为通过内核中的axi接收函数来接收总线数据,将数据转换为skb报文,递交linux协议栈后由用户态程序接收。axi转skb的数据转换这一功能在mac层完成。作为优选,数据发送方向为linxu用户态程序通过建立socket,按照通用发送网络报文的方式发送,数据经过协议栈后,将skb报文转换为axi数据格式的报文,经axi总线发送给fpga核。该过程在mac层将skb报文转换为axi数据格式的报文经axi总线发给fpga核。与现有技术相比,本专利技术的将axi总线数据转为虚拟网卡接收数据的实现方法具有以下突出的有益效果:所述将axi总线数据转为虚拟网卡接收数据的实现方法通过构造的虚拟网口axi,用户可以方便的对axi数据以网口报文的形式进行收发处理,为axi总线转换为网口报文提供了一种有效的方式,极大丰富了软件系统架构的多样性以及适应复杂的应用场景的能力,具有良好的推广应用价值。具体实施方式下面将结合实施例,对本专利技术的将axi总线数据转为虚拟网卡接收数据的实现方法作进一步详细说明。实施例本专利技术的将axi总线数据转为虚拟网卡接收数据的实现方法,通过实现虚拟的axi网卡,对外呈现一个网卡,上层用户通过socket填写数据内容,按正常的网卡收发流程发送和接收数据,在内核处理过程中,发送侧将协议栈的报文解析出来,通过axi总线发送给fpga核,接收报文过程中由用户态程序接收。该将axi总线数据转为虚拟网卡接收数据的实现方法具体包括以下步骤:S1、注册私有网口的结构体。结构体中包含打开网口、关闭网口、发送网口数据、轮询网口数据、获取网口状态、设置网卡的mac地址、判断网络地址的有效地址。首先入口函数init_module分配了一个net_device结构体。然后调用axivcard_probe1函数,在这个函数中设置了hard_start_xmit发包函数等信息,最后调用register_netdev注册分配的net_device结构体。S2、实现私有虚拟网卡操作函数。实现网卡操作函数,即完成回调函数功能。如果需要实现PTP的功能,还需要完成axi_vcard_ethtool_ops内的函数功能及axi_ptp_caps_template内的函数功能。列举如下:S3、获取axi中断好作为网卡的中断号。通过request_irq注册本文档来自技高网...

【技术保护点】
1.一种将axi总线数据转为虚拟网卡接收数据的实现方法,其特征在于:通过实现虚拟的axi网卡,对外呈现一个网卡,上层用户通过socket填写数据内容,按正常的网卡收发流程发送和接收数据,在内核处理过程中,发送侧将协议栈的报文解析出来,通过axi总线发送给fpga核,接收报文过程中由用户态程序接收。/n

【技术特征摘要】
1.一种将axi总线数据转为虚拟网卡接收数据的实现方法,其特征在于:通过实现虚拟的axi网卡,对外呈现一个网卡,上层用户通过socket填写数据内容,按正常的网卡收发流程发送和接收数据,在内核处理过程中,发送侧将协议栈的报文解析出来,通过axi总线发送给fpga核,接收报文过程中由用户态程序接收。


2.根据权利要求1所述的将axi总线数据转为虚拟网卡接收数据的实现方法,其特征在于:具体包括以下步骤:
S1、注册私有网口的结构体;
S2、实现私有虚拟网卡操作函数;
S3、获取axi中断好作为网卡的中断号;
S4、在网卡的发送函数中实现axi的发送;
S5、通过用户态查看网口是否被内核识别;
S6、建立socket来收发报文。


3.根据权利要求2所述的将axi总线数据转为虚拟网卡接收数据的实现方法,其特征在于:步骤S1中,结构体中包含打开网口、关闭网口、发送网口数据、轮询网口数据、获取网口状态、设置网卡的mac地址、判断网络地址的有效地址。


4.根据权利要求3所述的将axi总线数据转为虚拟网卡接收数据的实现方法,其特征在于:步骤S2中,实现网卡操作函数,即完成回调函数功能。


...

【专利技术属性】
技术研发人员:刘刚
申请(专利权)人:浪潮软件科技有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1