CN112968890A - 一种将axi总线数据转为虚拟网卡接收数据的实现方法 - Google Patents
一种将axi总线数据转为虚拟网卡接收数据的实现方法 Download PDFInfo
- Publication number
- CN112968890A CN112968890A CN202110179984.4A CN202110179984A CN112968890A CN 112968890 A CN112968890 A CN 112968890A CN 202110179984 A CN202110179984 A CN 202110179984A CN 112968890 A CN112968890 A CN 112968890A
- Authority
- CN
- China
- Prior art keywords
- data
- network card
- axi
- converting
- virtual network
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/08—Protocols for interworking; Protocol conversion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Small-Scale Networks (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种将axi总线数据转为虚拟网卡接收数据的实现方法,属于axi虚拟网口网口适配技术领域。本发明的将axi总线数据转为虚拟网卡接收数据的实现方法通过实现虚拟的axi网卡,对外呈现一个网卡,上层用户通过socket填写数据内容,按正常的网卡收发流程发送和接收数据,在内核处理过程中,发送侧将协议栈的报文解析出来,通过axi总线发送给fpga核,接收报文过程中由用户态程序接收。该发明的将axi总线数据转为虚拟网卡接收数据的实现方法极大的丰富了软件系统架构的多样性以及适应复杂的应用场景的能力,具有很好的推广应用价值。
Description
技术领域
本发明涉及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()函数是注册中断服务函数:函数的原型如下:
int request_irq(unsigned int irq,void(*handler)(int,void*,struct pt_regs*),unsigned long frags,const char*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注册中断处理函数来实现axi数据的接收。中断处理函数中包括申请的硬件中断号、函数指针、指定的快速中断或中断共享的中断处理属性、指定的设备驱动程序的名称和传入中断处理程序的参数。
在Linux内核中,request_irq()函数是注册中断服务函数:函数的原型如下:
int request_irq(unsigned int irq,void(*handler)(int,void*,struct pt_regs*),unsigned long frags,const char*device,void*dev_id);
其中五个参数的含义如下:
第一个参数irq:申请的硬件中断号;
第二个参数handler:是一个函数指针,向系统登记的中断处理函数,是一个回调函数,当中断发生时,系统调用这个函数,传入的参数包括中断设备id,寄存器值。
第三个参数flags:指定了快速中断或中断共享等中断处理属性。
第四个参数devices:指定设备驱动程序的名称。
第五个参数dev_id:传入中断处理程序的参数,可以为NULL,在注册共享中断时,此参数不能为NULL,作为共享中断时的中断区别参数。
axi的中断需要和虚拟网卡共同使用同一个中断,中断的使用方式为:当多个中断资源共用一个中断线时,共享中断是很有必要的。在硬件上,只要使用线接或(或者,逻辑或)阵列,就可以达到目的。这里对中断的处理是共享中断的方式,当axi的数据接收来到时,会触发一个接收中断,这时,axi的虚拟网卡也同时会得到这个中断通知,这里的中断号与axi总线上的中断号是相同的,使用的是共享中断。
S4、在网卡的发送函数中实现axi的发送。
S5、通过用户态查看网口是否被内核识别。通过调用ifconfig-a的方式来查看axi的虚拟网卡是否被内核所识别。数据接收方向为通过内核中的axi接收函数来接收总线数据,将数据转换为skb报文,递交linux协议栈后由用户态程序接收。axi转skb的数据转换这一功能在mac层完成。数据发送方向为linxu用户态程序通过建立socket,按照通用发送网络报文的方式发送,数据经过协议栈后,在mac层将skb报文转换为axi数据格式的报文,经axi总线发送给fpga核。
S6、建立socket来收发报文。
以上所述的实施例,只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
Claims (9)
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中,实现网卡操作函数,即完成回调函数功能。
5.根据权利要求4所述的将axi总线数据转为虚拟网卡接收数据的实现方法,其特征在于:步骤S3中,通过request_irq注册中断处理函数来实现axi数据的接收。
6.根据权利要求5所述的将axi总线数据转为虚拟网卡接收数据的实现方法,其特征在于:中断处理函数中包括申请的硬件中断号、函数指针、指定的快速中断或中断共享的中断处理属性、指定的设备驱动程序的名称和传入中断处理程序的参数。
7.根据权利要求6所述的将axi总线数据转为虚拟网卡接收数据的实现方法,其特征在于:步骤S5中,通过调用ifconfig-a的方式来查看axi的虚拟网卡是否被内核所识别。
8.根据权利要求7所述的将axi总线数据转为虚拟网卡接收数据的实现方法,其特征在于:数据接收方向为通过内核中的axi接收函数来接收总线数据,将数据转换为skb报文,递交linux协议栈后由用户态程序接收。
9.根据权利要求8所述的将axi总线数据转为虚拟网卡接收数据的实现方法,其特征在于:数据发送方向为linxu用户态程序通过建立socket,按照通用发送网络报文的方式发送,数据经过协议栈后,将skb报文转换为axi数据格式的报文,经axi总线发送给fpga核。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110179984.4A CN112968890A (zh) | 2021-02-08 | 2021-02-08 | 一种将axi总线数据转为虚拟网卡接收数据的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110179984.4A CN112968890A (zh) | 2021-02-08 | 2021-02-08 | 一种将axi总线数据转为虚拟网卡接收数据的实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112968890A true CN112968890A (zh) | 2021-06-15 |
Family
ID=76284607
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110179984.4A Pending CN112968890A (zh) | 2021-02-08 | 2021-02-08 | 一种将axi总线数据转为虚拟网卡接收数据的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112968890A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1633130A (zh) * | 2005-01-14 | 2005-06-29 | 清华大学 | 基于硬件支持的虚拟接口结构用户层网络通信系统 |
CN103312601A (zh) * | 2013-05-31 | 2013-09-18 | 汉柏科技有限公司 | 用户态到内核态的数据报文处理方法 |
CN111212061A (zh) * | 2019-12-31 | 2020-05-29 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 基于afdx的套接字的实现方法 |
US20200241940A1 (en) * | 2019-01-24 | 2020-07-30 | Hewlett Packard Enterprise Development Lp | Communication of data between virtual processes |
-
2021
- 2021-02-08 CN CN202110179984.4A patent/CN112968890A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1633130A (zh) * | 2005-01-14 | 2005-06-29 | 清华大学 | 基于硬件支持的虚拟接口结构用户层网络通信系统 |
CN103312601A (zh) * | 2013-05-31 | 2013-09-18 | 汉柏科技有限公司 | 用户态到内核态的数据报文处理方法 |
US20200241940A1 (en) * | 2019-01-24 | 2020-07-30 | Hewlett Packard Enterprise Development Lp | Communication of data between virtual processes |
CN111212061A (zh) * | 2019-12-31 | 2020-05-29 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 基于afdx的套接字的实现方法 |
Non-Patent Citations (3)
Title |
---|
周敬琼等: "基于ARM的Linux网络设备驱动程序开发", 《计算机工程与设计》 * |
曹志龙等: "嵌入式Linux虚拟网卡驱动中数据包的提取及转发技术", 《工业控制计算机》 * |
杨杰等: "应用虚拟设备驱动的SSL VPN系统改进的实现", 《计算机工程》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6370599B1 (en) | System for ascertaining task off-load capabilities of a device and enabling selected capabilities and when needed selectively and dynamically requesting the device to perform the task | |
CN103684963B (zh) | 一种面向车联网应用的中间件架构系统及实现方法 | |
CN100492302C (zh) | 基于Java的进程间异步通信的实现方法 | |
CN111580995B (zh) | 基于mqtt异步通信场景下的分布式云平台与物联网智能终端的同步通信方法与系统 | |
CN112367233B (zh) | 基于面向服务的架构下车载网络ecu通信方法及装置 | |
US20060268936A1 (en) | Communication apparatus and method thereof | |
US11916740B2 (en) | K8S-based service deployment method and apparatus, device, and medium | |
WO2023240998A1 (zh) | 数据包处理方法、通信芯片及计算机设备 | |
US6742075B1 (en) | Arrangement for instigating work in a channel adapter based on received address information and stored context information | |
WO2022251998A1 (zh) | 支持多协议栈的通信方法及系统 | |
CN108111494A (zh) | 一种1553B总线与FlexRay总线的协议转换装置 | |
CN107426299A (zh) | 实现共享助动车系统服务器tcp长连接和高并发方法 | |
CN110166485B (zh) | 一种协议的调度使用方法及装置 | |
CN111031020A (zh) | 一种基于端口映射的管理网络和租户网络通信的方法 | |
CN112965463B (zh) | 远程诊断系统及远程诊断方法 | |
CN107172139B (zh) | 一种无线协议栈及其实现方法 | |
CN114095584A (zh) | 工业设备数据的模型转换与构建方法及可读存储介质 | |
CN112968890A (zh) | 一种将axi总线数据转为虚拟网卡接收数据的实现方法 | |
CN116150054B (zh) | 一种基于pcie的中断信息处理方法 | |
CN109600457B (zh) | 一种多至一映射的phy-mac接口控制装置及方法 | |
US7363383B2 (en) | Running a communication protocol state machine through a packet classifier | |
CN115297187B (zh) | 一种网络通讯协议与总线协议的转换装置及集群系统 | |
CN109582481B (zh) | 调用结果的传输方法、装置、设备及存储介质 | |
CN112560086B (zh) | 一种用于密码协处理器的配置方法、装置、cpu及电子设备 | |
CN111130968A (zh) | 一种解决Modbus总线通信粘包的方法及终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220331 Address after: 266107 No. 2, Xiangtan Road, Danshan Industrial Park, Chengyang District, Qingdao, Shandong Applicant after: Inspur Communication Technology Co.,Ltd. Address before: 250100 Inspur science and Technology Park, 1036 Inspur Road, hi tech Zone, Jinan City, Shandong Province Applicant before: Inspur Software Technology Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210615 |
|
RJ01 | Rejection of invention patent application after publication |