CN114443527B - 基于工作队列的PCIe转MDIO驱动实现方法及装置 - Google Patents
基于工作队列的PCIe转MDIO驱动实现方法及装置 Download PDFInfo
- Publication number
- CN114443527B CN114443527B CN202111656298.8A CN202111656298A CN114443527B CN 114443527 B CN114443527 B CN 114443527B CN 202111656298 A CN202111656298 A CN 202111656298A CN 114443527 B CN114443527 B CN 114443527B
- Authority
- CN
- China
- Prior art keywords
- interrupt
- mdio
- msi
- fpga
- physical layer
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 25
- 230000004044 response Effects 0.000 claims description 8
- 230000008901 benefit Effects 0.000 abstract description 6
- 230000006870 function Effects 0.000 description 25
- 230000007547 defect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Abstract
本发明提供一种基于工作队列的PCIe转MDIO驱动实现方法及装置,属于交换机管理技术领域,所述方法步骤如下:预先为CPU配置MSI中断;用户开启FPGA中各MDIO控制器,设置各MDIO控制器通过读函数获取对应物理层芯片中数据,并设置MSI中断使能;当所有物理层芯片中数据读取完毕时,FPGA通过PCIe总线触发MSI中断;CPU响应MSI中断,通过工作队列读取FPGA的MDIO控制器中数据。本发明实现基于工作队列的内核线程访问物理层芯片寄存器的驱动,CPU无需轮询FPGA状态标记完成位,降低了CPU利用率,并支持多物理层芯片并发访问,充分利用了CPU多线程和内核无时钟特性的优势。
Description
技术领域
本发明属于交换机管理技术领域,具体涉及一种基于工作队列的PCIe转MDIO驱动实现方法及装置。
背景技术
白盒交换机通常会在交换芯片内部集成MDIO总线控制器,当交换芯片需要外挂物理层芯片连接至前面板端口时,会使用MDIO总线对物理层芯片进行管理和配置,CPU加载交换芯片的软件开发包后,便可使用MDIO驱动相关的API访问物理层芯片内部的寄存器。然而在数据中心领域,出现了越来越多的无内置MDIO控制器的交换芯片,此时CPU会通过PCIe链路下挂的FPGA设备间接访问物理芯片,FPGA固件会实现PCIe协议到MDIO协议的转换,通过FPGA可以根据交换芯片需要访问的物理层芯片数量,例化出对应的多路MDIO总线控制器,极大的改善了传统交换芯片无内置MDIO控制器时物理层芯片读写的性能。此时,通常linux内核驱动会在读写物理层寄存器时采用polling模式轮询状态完成标记位,当状态完成位置位时,完成寄存器的读写操作。此种方式,CPU通过PCIe总线连接至FPGA,交换机外挂多颗物理层芯片,FPGA使用固件例化出与物理层芯片数量相同路的MDIO总线控制器,每个MDIO控制器通过MDC和MDIO两条链路连接至物理层芯片。
用户通过程序打开例化的MDIO总线控制器节点,通过读函数并发送物理层芯片地址来读取物理层芯片的信息,物理层芯片响应读函数向例化的MDIO总线控制器节点返回例化的MDIO总线控制器节点数据,FGPA内部通过状态标记置位的方式标记例化的MDIO总线控制器获取到数据,CPU通过读函数轮询判断FPGA标志位是否置位,并在置位时将数据读出。此种交换芯片无内置MDIO总线控制器通过轮询读写物理层芯片寄存器的方式存在以下缺点:CPU的速度远远高于MDIO总线设备的速度,CPU会花费大量时间等待FPGA状态完成标记位,无法被调度完成其他内核任务,造成CPU资源的浪费;交换芯片通过MDIO总线和物理层芯片传输大量数据的时候,会造成CPU利用率偏高,让本应该处于空闲状态的CPU无法发挥出内核无时钟特性的优势。
此为现有技术的不足,因此,针对现有技术中的上述缺陷,提供一种基于工作队列的PCIe转MDIO驱动实现方法及装置,是非常有必要的。
发明内容
针对现有技术的上述交换芯片无内置MDIO总线控制器时轮询方式读取物理层芯片寄存器CPU利用率偏高的缺陷,本发明提供一种基于工作队列的PCIe转MDIO驱动实现方法及装置,以解决上述技术问题。
第一方面,本发明提供一种基于工作队列的PCIe转MDIO驱动实现方法,包括如下步骤:
S1.预先为CPU配置MSI中断;
S2.用户开启FPGA中各MDIO控制器,设置各MDIO控制器通过读函数获取对应物理层芯片中数据,并设置MSI中断使能;
S3.当所有物理层芯片中数据读取完毕时,FPGA通过PCIe总线触发MSI中断;
S4.CPU响应MSI中断,通过工作队列读取FPGA的MDIO控制器中数据。
进一步地,步骤S1具体步骤如下:
S11.预先为CPU配置MSI中断;
S12.为MSI中断配置中断入口和中断出口。MSI中断为PCIe总线支持的一种中断,FPGA通过PCIe将MSI中断发送到CPU。
进一步地,步骤S2具体步骤如下:
S21.用户通过应用程序打开FPGA根目录下各MDIO控制器,并通过IO控制器***调用内核态的文件读取函数;
S22.内核态的文件读取函数发送物理芯片地址和待读取的寄存器地址给物理层芯片,初始化内核信号完成量,并通过对中断控制寄存器进行设置的方式使能读取操作对应MSI中断。MDIO控制器为FPGA通过固件例化实现的,FPGA打开MDIO控制器后,通过IO控制器***调用文件读取函数,并传输要读取的物理芯片地址及其寄存器地址,内核信号完成量用于指示读取到FPGA中数据是否被读走,中断控制器寄存器用于指示MSI中断是否使能,使能状态下,CPU的中断才能生效。
进一步地,步骤S3具体步骤如下:
S31.各物理层芯片返回数据给FPGA对应MDIO控制器;
S32.FPGA判断是否所有物理层芯片中数据均读取完毕;
若是,进入步骤S33;
若否,返回步骤S31;
S33.FPGA通过PCIe总线向CPU发送MSI中断触发信号。各物理层芯片是并行被读取和并行返回数据,通常情况下应该是同时返回数据,FPGA的判断保证读取的数据均有返回,没有遗漏。
进一步地,步骤S4具体步骤如下:
S41.CPU接收MSI中断触发信号,并通过中断入口进入MSI中断;
S42.MSI中断将CPU通过工作队列读取MDIO控制器中数据设置为MSI中断下半部内容,通过MSI中断出口退出MSI中断;
S43.绑定工作队列的内核线程通过PCIe总线读取FPGA获取的物理层芯片数据,并置位信号完成量通知应用程序主程序;
S44.用户收到返回数据后,对结果进行确,FPGA中例化MDIO控制器访问结束,实现PCIe转MDIO的驱动。MSI中断将FPGA中物理层芯片数据的读取放置到工作队列中,工作队列通过绑定的内核线程读取数据,而无需CPU等待轮询,降低了CPU利用率;linux中工作队列是中断下半部的一种实现,中断包括上半部和下半部,上半部的功能时相应汇总单,下部的功能处理比较复杂的过程。
第二方面,本发明提供一种基于工作队列的PCIe转MDIO驱动实现装置,包括:
MSI中断配置模块,用于预先为CPU配置MSI中断;
MDIO获取物理层芯片数据模块,用于用户开启FPGA中各MDIO控制器,设置各MDIO控制器通过读函数获取对应物理层芯片中数据,并设置MSI中断使能;
MSI中断触发模块,用于当所有物理层芯片中数据读取完毕时,FPGA通过PCIe总线触发MSI中断;
MSI中断响应模块,用于CPU响应MSI中断,通过工作队列读取FPGA的MDIO控制器中数据。
进一步地,MSI中断配置模块包括:
MSI中的配置单元,用于预先为CPU配置MSI中断;
中断出入口配置单元,用于为MSI中断配置中断入口和中断出口。MSI中断为PCIe总线支持的一种中断,FPGA通过PCIe将MSI中断发送到CPU。
进一步地,MDIO获取物理层芯片数据模块包括:
MDIO控制器节点登录单元,用于用户通过应用程序打开FPGA根目录下各MDIO控制器,并通过IO控制器***调用内核态的文件读取函数;
物理层芯片数据读取单元,内核态的文件读取函数发送物理芯片地址和待读取的寄存器地址给物理层芯片,初始化内核信号完成量,并通过对中断控制寄存器进行设置的方式使能读取操作对应MSI中断。MDIO控制器为FPGA通过固件例化实现的,FPGA打开MDIO控制器后,通过IO控制器***调用文件读取函数,并传输要读取的物理芯片地址及其寄存器地址,内核信号完成量用于指示读取到FPGA中数据是否被读走,中断控制器寄存器用于指示MSI中断是否使能,使能状态下,CPU的中断才能生效。
进一步地,MSI中断触发模块包括:
物理层芯片返回单元,用于各物理层芯片返回数据给FPGA对应MDIO控制器;
数据读取完成判断单元,用于FPGA判断是否所有物理层芯片中数据均读取完毕;
中断触发单元,用于所有物理层芯片数据均读取完毕时,FPGA通过PCIe总线向CPU发送MSI中断触发信号。各物理层芯片是并行被读取和并行返回数据,通常情况下应该是同时返回数据,FPGA的判断保证读取的数据均有返回,没有遗漏。
进一步地,MSI中断响应模块包括:
中断进入单元,用于CPU接收MSI中断触发信号,并通过中断入口进入MSI中断;
工作队列读取任务放置单元,用于MSI中断将CPU通过工作队列读取MDIO控制器中数据设置为MSI中断下半部内容,通过MSI中断出口退出MSI中断;
工作队列启动读取单元,用于绑定工作队列的内核线程通过PCIe总线读取FPGA获取的物理层芯片数据,并置位信号完成量通知应用程序主程序;
驱动实现单元,用于用户收到返回数据后,对结果进行确,FPGA中例化MDIO控制器访问结束,实现PCIe转MDIO的驱动。MSI中断将FPGA中物理层芯片数据的读取放置到工作队列中,工作队列通过绑定的内核线程读取数据,而无需CPU等待轮询,降低了CPU利用率。
本发明的有益效果在于:
本发明提供的基于工作队列的PCIe转MDIO驱动实现方法及装置,通过MSI中断的方式,实现基于工作队列的内核线程访问物理层芯片寄存器的驱动,CPU无需轮询FPGA状态标记完成位,降低了CPU利用率,并支持多物理层芯片场景下的寄存器并发访问,充分利用了CPU多线程和内核无时钟特性的优势。
此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
由此可见,本发明与现有技术相比,具有突出的实质性特点和显著的进步,其实施的有益效果也是显而易见的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的基于工作队列的PCIe转MDIO驱动实现方法实施例1流程示意图。
图2是本发明的基于工作队列的PCIe转MDIO驱动实现方法实施例2流程示意图。
图3是本发明的基于工作队列的PCIe转MDIO驱动实现装置示意图。
图中,1-MSI中断配置模块;1.1-MSI中的配置单元;1.2-中断出入口配置单元;2-MDIO获取物理层芯片数据模块;2.1-MDIO控制器节点登录单元;2.2-物理层芯片数据读取单元;3-MSI中断触发模块;3.1-物理层芯片返回单元;3.2-数据读取完成判断单元;3.3-中断触发单元;4-MSI中断响应模块;4.1-中断进入单元;4.2-工作队列读取任务放置单元;4.3-工作队列启动读取单元;4.4-驱动实现单元。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
MDIO,是Management Data Input/Output的简称,管理数据输入输出。
API,是Application Programming Interface的简称,应用程序接口。
PCIe,是Peripheral Component Interconnect Express的简称,高速串行计算机扩展总线标准。
FPGA,是Field Programmable Gate Array的简称,现场可编程逻辑门阵列。
polling模式,是一种CPU决策如何提供周边设备服务的方式,又称程控输入输出的,通过轮询进行。
MSI中断,是PCIe支持的三种中断类型之一,三种中断分别为INTx中断,MSI中断,MSI-X中断。MSI,是message signal interrupt的简称,是PCI设备通过写一个特定消息到特定地址,从而触发一个CPU中断。特定消息指的是PCIe总线中的写内存传输层包,特定地址一般存放在MSI capability结构中。
实施例1:
如图1所示,本发明提供一种基于工作队列的PCIe转MDIO驱动实现方法,包括如下步骤:
S1.预先为CPU配置MSI中断;
S2.用户开启FPGA中各MDIO控制器,设置各MDIO控制器通过读函数获取对应物理层芯片中数据,并设置MSI中断使能;
S3.当所有物理层芯片中数据读取完毕时,FPGA通过PCIe总线触发MSI中断;
S4.CPU响应MSI中断,通过工作队列读取FPGA的MDIO控制器中数据。
本发明提供的基于工作队列的PCIe转MDIO驱动实现方法,通过MSI中断的方式,实现基于工作队列的内核线程访问物理层芯片寄存器的驱动,CPU无需轮询FPGA状态标记完成位,降低了CPU利用率,并支持多物理层芯片场景下的寄存器并发访问,充分利用了CPU多线程和内核无时钟特性的优势。
实施例2:
如图2所示,本发明提供一种基于工作队列的PCIe转MDIO驱动实现方法,包括如下步骤:
S1.预先为CPU配置MSI中断;具体步骤如下:
S11.预先为CPU配置MSI中断;
S12.为MSI中断配置中断入口和中断出口;MSI中断为PCIe总线支持的一种中断,FPGA通过PCIe将MSI中断发送到CPU;
S2.用户开启FPGA中各MDIO控制器,设置各MDIO控制器通过读函数获取对应物理层芯片中数据,并设置MSI中断使能;具体步骤如下:
S21.用户通过应用程序打开FPGA根目录下各MDIO控制器,并通过IO控制器***调用内核态的文件读取函数;
S22.内核态的文件读取函数发送物理芯片地址和待读取的寄存器地址给物理层芯片,初始化内核信号完成量,并通过对中断控制寄存器进行设置的方式使能读取操作对应MSI中断;MDIO控制器为FPGA通过固件例化实现的,FPGA打开MDIO控制器后,通过IO控制器***调用文件读取函数,并传输要读取的物理芯片地址及其寄存器地址,内核信号完成量用于指示读取到FPGA中数据是否被读走,中断控制器寄存器用于指示MSI中断是否使能,使能状态下,CPU的中断才能生效;
S3.当所有物理层芯片中数据读取完毕时,FPGA通过PCIe总线触发MSI中断;具体步骤如下:
S31.各物理层芯片返回数据给FPGA对应MDIO控制器;
S32.FPGA判断是否所有物理层芯片中数据均读取完毕;
若是,进入步骤S33;
若否,返回步骤S31;
S33.FPGA通过PCIe总线向CPU发送MSI中断触发信号;各物理层芯片是并行被读取和并行返回数据,通常情况下应该是同时返回数据,FPGA的判断保证读取的数据均有返回,没有遗漏;
S4.CPU响应MSI中断,通过工作队列读取FPGA的MDIO控制器中数据;具体步骤如下:
S41.CPU接收MSI中断触发信号,并通过中断入口进入MSI中断;
S42.MSI中断将CPU通过工作队列读取MDIO控制器中数据设置为MSI中断下半部内容,通过MSI中断出口退出MSI中断;
S43.绑定工作队列的内核线程通过PCIe总线读取FPGA获取的物理层芯片数据,并置位信号完成量通知应用程序主程序;
S44.用户收到返回数据后,对结果进行确,FPGA中例化MDIO控制器访问结束,实现PCIe转MDIO的驱动;MSI中断将FPGA中物理层芯片数据的读取放置到工作队列中,工作队列通过绑定的内核线程读取数据,而无需CPU等待轮询,降低了CPU利用率。
上述实施例2中,预先配置完MSI中断后,用户通过应用程序打开FPGA根目录下各MDIO控制器的/dev/mdio,通过IO控制器***调用到内核态的file_operations的read函数;
内核态mdio_read函数发送物理层芯片地址和待读取的寄存器地址给物理层芯片,初始化内核信号完成量,并使能读取操作的中断控制寄存器;
物理层芯片返回数据给MDIO控制器,FPGA触发MSI中断给CPU;
CPU在注册的MSI中断服务程序下半部将该任务放入工作队列,退出中断服务程序;
绑定工作队列的内核线程完成物理层芯片寄存器结果的读取过程,并置位信号完成量通知应用程序主程序;
用户收到驱动返回数据后,确认结果,MDIO控制器访问结束。
实施例3:
如图3所示,本发明提供一种基于工作队列的PCIe转MDIO驱动实现装置,包括:
MSI中断配置模块1,用于预先为CPU配置MSI中断;
MDIO获取物理层芯片数据模块2,用于用户开启FPGA中各MDIO控制器,设置各MDIO控制器通过读函数获取对应物理层芯片中数据,并设置MSI中断使能;
MSI中断触发模块3,用于当所有物理层芯片中数据读取完毕时,FPGA通过PCIe总线触发MSI中断;
MSI中断响应模块4,用于CPU响应MSI中断,通过工作队列读取FPGA的MDIO控制器中数据。
本发明提供的基于工作队列的PCIe转MDIO驱动实现装置,通过MSI中断的方式,实现基于工作队列的内核线程访问物理层芯片寄存器的驱动,CPU无需轮询FPGA状态标记完成位,降低了CPU利用率,并支持多物理层芯片场景下的寄存器并发访问,充分利用了CPU多线程和内核无时钟特性的优势。
实施例4:
如图3所示,本发明提供一种基于工作队列的PCIe转MDIO驱动实现装置,包括:
MSI中断配置模块1,用于预先为CPU配置MSI中断;MSI中断配置模块1包括:
MSI中的配置单元1.1,用于预先为CPU配置MSI中断;
中断出入口配置单元1.2,用于为MSI中断配置中断入口和中断出口;MSI中断为PCIe总线支持的一种中断,FPGA通过PCIe将MSI中断发送到CPU;
MDIO获取物理层芯片数据模块2,用于用户开启FPGA中各MDIO控制器,设置各MDIO控制器通过读函数获取对应物理层芯片中数据,并设置MSI中断使能;MDIO获取物理层芯片数据模块2包括:
MDIO控制器节点登录单元2.1,用于用户通过应用程序打开FPGA根目录下各MDIO控制器,并通过IO控制器***调用内核态的文件读取函数;
物理层芯片数据读取单元2.2,内核态的文件读取函数发送物理芯片地址和待读取的寄存器地址给物理层芯片,初始化内核信号完成量,并通过对中断控制寄存器进行设置的方式使能读取操作对应MSI中断;MDIO控制器为FPGA通过固件例化实现的,FPGA打开MDIO控制器后,通过IO控制器***调用文件读取函数,并传输要读取的物理芯片地址及其寄存器地址,内核信号完成量用于指示读取到FPGA中数据是否被读走,中断控制器寄存器用于指示MSI中断是否使能,使能状态下,CPU的中断才能生效;
MSI中断触发模块3,用于当所有物理层芯片中数据读取完毕时,FPGA通过PCIe总线触发MSI中断;MSI中断触发模块3包括:
物理层芯片返回单元3.1,用于各物理层芯片返回数据给FPGA对应MDIO控制器;
数据读取完成判断单元3.2,用于FPGA判断是否所有物理层芯片中数据均读取完毕;
中断触发单元3.3,用于所有物理层芯片数据均读取完毕时,FPGA通过PCIe总线向CPU发送MSI中断触发信号;各物理层芯片是并行被读取和并行返回数据,通常情况下应该是同时返回数据,FPGA的判断保证读取的数据均有返回,没有遗漏;
MSI中断响应模块4,用于CPU响应MSI中断,通过工作队列读取FPGA的MDIO控制器中数据;MSI中断响应模块4包括:
中断进入单元4.1,用于CPU接收MSI中断触发信号,并通过中断入口进入MSI中断;
工作队列读取任务放置单元4.2,用于MSI中断将CPU通过工作队列读取MDIO控制器中数据设置为MSI中断下半部内容,通过MSI中断出口退出MSI中断;
工作队列启动读取单元4.3,用于绑定工作队列的内核线程通过PCIe总线读取FPGA获取的物理层芯片数据,并置位信号完成量通知应用程序主程序;
驱动实现单元4.4,用于用户收到返回数据后,对结果进行确,FPGA中例化MDIO控制器访问结束,实现PCIe转MDIO的驱动;MSI中断将FPGA中物理层芯片数据的读取放置到工作队列中,工作队列通过绑定的内核线程读取数据,而无需CPU等待轮询,降低了CPU利用率。
尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (8)
1.一种基于工作队列的PCIe转MDIO驱动实现方法,其特征在于,包括如下步骤:
S1.预先为CPU配置MSI中断;
S2.用户开启FPGA中各MDIO控制器,设置各MDIO控制器通过读函数获取对应物理层芯片中数据,并设置MSI中断使能;
S3.当所有物理层芯片中数据读取完毕时,FPGA通过PCIe总线触发MSI中断;
S4.CPU响应MSI中断,通过工作队列读取FPGA的MDIO控制器中数据;步骤S4具体步骤如下:
S41.CPU接收MSI中断触发信号,并通过中断入口进入MSI中断;
S42.MSI中断将CPU通过工作队列读取MDIO控制器中数据设置为MSI中断下半部内容,通过MSI中断出口退出MSI中断;
S43.绑定工作队列的内核线程通过PCIe总线读取FPGA获取的物理层芯片数据,并置位信号完成量通知应用程序主程序;
S44.用户收到返回数据后,对结果进行确认,FPGA中例化MDIO控制器访问结束,实现PCIe转MDIO的驱动。
2.如权利要求1所述的基于工作队列的PCIe转MDIO驱动实现方法,其特征在于,步骤S1具体步骤如下:
S11.预先为CPU配置MSI中断;
S12.为MSI中断配置中断入口和中断出口。
3.如权利要求2所述的基于工作队列的PCIe转MDIO驱动实现方法,其特征在于,步骤S2具体步骤如下:
S21.用户通过应用程序打开FPGA根目录下各MDIO控制器,并通过IO控制器***调用内核态的文件读取函数;
S22.内核态的文件读取函数发送物理芯片地址和待读取的寄存器地址给物理层芯片,初始化内核信号完成量,并通过对中断控制寄存器进行设置的方式使能读取操作对应MSI中断。
4.如权利要求1所述的基于工作队列的PCIe转MDIO驱动实现方法,其特征在于,步骤S3具体步骤如下:
S31.各物理层芯片返回数据给FPGA对应MDIO控制器;
S32.FPGA判断是否所有物理层芯片中数据均读取完毕;
若是,进入步骤S33;
若否,返回步骤S31;
S33.FPGA通过PCIe总线向CPU发送MSI中断触发信号。
5.一种基于工作队列的PCIe转MDIO驱动实现装置,其特征在于,包括:
MSI中断配置模块(1),用于预先为CPU配置MSI中断;
MDIO获取物理层芯片数据模块(2),用于用户开启FPGA中各MDIO控制器,设置各MDIO控制器通过读函数获取对应物理层芯片中数据,并设置MSI中断使能;
MSI中断触发模块(3),用于当所有物理层芯片中数据读取完毕时,FPGA通过PCIe总线触发MSI中断;
MSI中断响应模块(4),用于CPU响应MSI中断,通过工作队列读取FPGA的MDIO控制器中数据;MSI中断响应模块(4)包括:
中断进入单元(4.1),用于CPU接收MSI中断触发信号,并通过中断入口进入MSI中断;
工作队列读取任务放置单元(4.2),用于MSI中断将CPU通过工作队列读取MDIO控制器中数据设置为MSI中断下半部内容,通过MSI中断出口退出MSI中断;
工作队列启动读取单元(4.3),用于绑定工作队列的内核线程通过PCIe总线读取FPGA获取的物理层芯片数据,并置位信号完成量通知应用程序主程序;
驱动实现单元(4.4),用于用户收到返回数据后,对结果进行确认,FPGA中例化MDIO控制器访问结束,实现PCIe转MDIO的驱动。
6.如权利要求5所述的基于工作队列的PCIe转MDIO驱动实现装置,其特征在于,MSI中断配置模块(1)包括:
MSI中的配置单元(1.1),用于预先为CPU配置MSI中断;
中断出入口配置单元(1.2),用于为MSI中断配置中断入口和中断出口。
7.如权利要求6所述的基于工作队列的PCIe转MDIO驱动实现装置,其特征在于,MDIO获取物理层芯片数据模块(2)包括:
MDIO控制器节点登录单元(2.1),用于用户通过应用程序打开FPGA根目录下各MDIO控制器,并通过IO控制器***调用内核态的文件读取函数;
物理层芯片数据读取单元(2.2),内核态的文件读取函数发送物理芯片地址和待读取的寄存器地址给物理层芯片,初始化内核信号完成量,并通过对中断控制寄存器进行设置的方式使能读取操作对应MSI中断。
8.如权利要求7所述的基于工作队列的PCIe转MDIO驱动实现装置,其特征在于,MSI中断触发模块(3)包括:
物理层芯片返回单元(3.1),用于各物理层芯片返回数据给FPGA对应MDIO控制器;
数据读取完成判断单元(3.2),用于FPGA判断是否所有物理层芯片中数据均读取完毕;
中断触发单元(3.3),用于所有物理层芯片数据均读取完毕时,FPGA通过PCIe总线向CPU发送MSI中断触发信号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111656298.8A CN114443527B (zh) | 2021-12-30 | 2021-12-30 | 基于工作队列的PCIe转MDIO驱动实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111656298.8A CN114443527B (zh) | 2021-12-30 | 2021-12-30 | 基于工作队列的PCIe转MDIO驱动实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114443527A CN114443527A (zh) | 2022-05-06 |
CN114443527B true CN114443527B (zh) | 2023-08-15 |
Family
ID=81365209
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111656298.8A Active CN114443527B (zh) | 2021-12-30 | 2021-12-30 | 基于工作队列的PCIe转MDIO驱动实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114443527B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105117319A (zh) * | 2015-08-25 | 2015-12-02 | 烽火通信科技股份有限公司 | 基于fpga实现对多路mdio设备实时监控的方法 |
CN108763121A (zh) * | 2018-04-28 | 2018-11-06 | 西安电子科技大学 | TTE端***适配卡PCIe控制器的中断操作方法 |
WO2021185135A1 (zh) * | 2020-03-17 | 2021-09-23 | 阿里巴巴集团控股有限公司 | 实现消息信号中断的方法、装置和设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080109564A1 (en) * | 2006-11-03 | 2008-05-08 | Arndt Richard L | Method, system, and apparatus for enhanced management of message signaled interrupts |
-
2021
- 2021-12-30 CN CN202111656298.8A patent/CN114443527B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105117319A (zh) * | 2015-08-25 | 2015-12-02 | 烽火通信科技股份有限公司 | 基于fpga实现对多路mdio设备实时监控的方法 |
CN108763121A (zh) * | 2018-04-28 | 2018-11-06 | 西安电子科技大学 | TTE端***适配卡PCIe控制器的中断操作方法 |
WO2021185135A1 (zh) * | 2020-03-17 | 2021-09-23 | 阿里巴巴集团控股有限公司 | 实现消息信号中断的方法、装置和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114443527A (zh) | 2022-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9442794B1 (en) | Methods and apparatus for accessing device memory via a host bus interface | |
US5682551A (en) | System for checking the acceptance of I/O request to an interface using software visible instruction which provides a status signal and performs operations in response thereto | |
CN103150279B (zh) | 一种主机与基板管理控制器共享设备的方法 | |
US20110041105A1 (en) | Integrated dma processor and pci express switch for a hardware-based functional verification system | |
CN104714907B (zh) | 一种pci总线转换为isa和apb总线设计方法 | |
CN112749113A (zh) | 一种数据交互的方法、***、设备及介质 | |
US7636797B2 (en) | LPC configuration sharing method | |
CN107066413B (zh) | 一种用于处理多个总线设备数据的方法及其总线*** | |
US7711874B1 (en) | Usage of EHCI companion USB controllers for generating periodic events | |
CN114443527B (zh) | 基于工作队列的PCIe转MDIO驱动实现方法及装置 | |
US10088523B2 (en) | Debug adapter | |
CN219574799U (zh) | 一种基于amba总线的多总线桥接器及其片上*** | |
KR20170117326A (ko) | 랜덤 액세스 메모리를 포함하는 하나 이상의 처리 유닛을 위한 직접 메모리 액세스 제어 장치 | |
CN101526929B (zh) | 一种集成设备驱动的***及其应用方法 | |
CN115687012A (zh) | 一种总线监测模块、监测方法和相关设备 | |
US6185523B1 (en) | Apparatus and method for computer system interrupt emulation | |
CN101458671B (zh) | 外设访问控制方法、装置与*** | |
CN114610467A (zh) | 一种多任务超时管理方法及*** | |
CN113961489A (zh) | 数据访问的方法、装置、设备及存储介质 | |
CN107729140B (zh) | 一种并行实现多个eMMC主机接口命令排队功能的装置及方法 | |
CN219574727U (zh) | 一种pcie板卡 | |
CN116841773B (zh) | 数据交互方法、装置、电子设备及存储介质 | |
CN116401188B (zh) | 基于fpga的处理方法、电路以及电子设备 | |
CN218886572U (zh) | 一种简单外设总线*** | |
CN117033276B (zh) | 总线通信方法、***、电子设备及存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |