掌桥专利:专业的专利平台
掌桥专利
首页

验证平台搭建方法、装置及存储介质

文献发布时间:2023-06-19 13:29:16


验证平台搭建方法、装置及存储介质

技术领域

本申请属于计算机技术领域,具体涉及一种验证平台搭建方法、装置及计算机可读存储介质。

背景技术

本部分旨在为本申请的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认其为现有技术。

PCIe(PCI-Express,peripheral component interconnect express)设备例如有显卡、声卡、网卡等。在开发PCIe设备时,需要同步设计硬件以及驱动程序。

通常的做法是,用诸如C++的编程语言对PCIe设备进行功能性建模(即虚拟原型),随后将虚拟原型连接到虚拟机上。虚拟机通过存储器映射输入输出(MMIO)的方式与虚拟原型实现信息交互,从而可以对PCIe设备的驱动程序进行验证。

硬件原型是用诸如现场可编程门阵列(FPGA)去模拟PCIe设备的功能。当硬件原型开发出来之后,再将硬件原型当作是真实的PCIe设备插在主板上的PCIe插槽内。由主机内的物理处理器上运行的驱动程序来驱动硬件原型的运行,从而进一步对驱动程序进行验证。

一般的做法是硬件原型设备直接连接物理主机。硬件原型的驱动程序所需要的开发环境需要在物理主机上重新搭建,驱动程序需要开发环境的移植,影响开发效率,同时容易造成由于两套开发环境的差异,导致无法快速定位错误的问题。如果在硬件原型中出现驱动程序的错误,又必须把硬件原型的软件环境重新部署到虚拟原型的运行平台上,造成开发效率降低。

发明内容

本申请实施例提出了一种验证平台搭建方法、装置及计算机可读存储介质。利用这种方法及装置。

本申请的实施例中提供了以下方案:一种验证平台搭建方法,包括:在虚拟原型验证阶段,通过进程间通信使PCIe设备的虚拟原型与虚拟处理器相互通信,以验证运行在所述虚拟处理器上的对应所述PCIe设备的驱动程序;在硬件原型验证阶段,通过虚拟功能IO(输入/输出)技术将所述PCIe设备的硬件原型透传至所述虚拟处理器,以验证运行在所述虚拟处理器上的对应于所述PCIe设备的驱动程序。

本申请的实施例中提供了以下方案:一种验证平台搭建装置,包括:虚拟原型验证模块,用于在虚拟原型验证阶段,通过进程间通信使PCIe设备的虚拟原型与虚拟处理器相互通信,以验证运行在所述虚拟处理器上的对应所述PCIe设备的驱动程序;硬件原型验证模块,用于在硬件原型验证阶段,通过虚拟功能IO技术将所述PCIe设备的硬件原型透传至所述虚拟处理器,以验证运行在所述虚拟处理器上的对应于所述PCIe设备的驱动程序。

本申请的实施例中提供了以下方案:一种验证平台搭建装置,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行:前述的方法。

本申请的实施例中提供了以下方案:一种计算机可读存储介质,所述计算机可读存储介质存储有程序,当所述程序被处理器执行时,使得所述处理器执行:前述的方法。

本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:不论是PCIe设备虚拟原型还是物理原型,对PCIe设备的驱动程序进行验证时软件开发环境是相同的,这能减少软件开发的工作量,提高效率。

应当理解,上述说明仅是本申请技术方案的概述,以便能够更清楚地了解本申请的技术手段,从而可依照说明书的内容予以实施。为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举例说明本申请的具体实施方式。

附图说明

通过阅读下文的示例性实施例的详细描述,本领域普通技术人员将明白本文所述的优点和益处以及其他优点和益处。附图仅用于示出示例性实施例的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的标号表示相同的部件。在附图中:

图1为根据本申请实施例的验证平台搭建方法的流程示意图;

图2为根据本申请一实施例的装置的结构示意图;

图3为根据本申请另一实施例的装置的结构示意图。

在附图中,相同或对应的标号表示相同或对应的部分。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

在本申请中,应理解,诸如“包括”或“具有”等术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在的可能性。

另外还需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

图1为根据本申请一实施例的方法的流程示意图,该验证平台搭建方法用于对PCIe设备的驱动程序进行验证。在该流程中,从设备角度而言,执行主体可以是计算机或者服务器;从程序角度而言,执行主体相应地可以是搭载于这些计算机或者服务器上的程序。

图1中的流程可以包括以下步骤101~步骤102。

步骤101、在虚拟原型验证阶段,通过进程间通信使PCIe设备的虚拟原型与虚拟处理器相互通信,以验证运行在所述虚拟处理器上的对应所述PCIe设备的驱动程序;

步骤102、在硬件原型验证阶段,通过虚拟功能IO技术将所述PCIe设备的硬件原型透传至所述虚拟处理器,以验证运行在所述虚拟处理器上的对应于所述PCIe设备的驱动程序。

进程间通信例如是通过共享内存、或者TCP/IP socket(传输控制协议/网间协议套接字)在虚拟原型验证阶段,PCIe设备的驱动程序运行在虚拟处理器上,虚拟处理器和虚拟原型都是运行在物理处理器上的进程,两个进程之间进行进程通信,从而对PCIe设备的驱动程序进行验证。

虚拟功能IO(VFIO、Virtual Function I/O)技术能够将硬件原型透传至虚拟处理器,从而虚拟处理器上运行的驱动程序能够直接驱动硬件原型。

不论是虚拟原型还是物理原型,对PCIe设备的驱动程序进行验证时软件开发环境是相同的,这能减少软件开发的工作量,提高效率。驱动程序开发环境只需要部署在同一个虚拟处理器的操作系统中。通过命令行就可以控制与虚拟处理器通信的是PCIe设备是虚拟原型还是FPGA等硬件原型。相同的软件环境可以在不同PCIe设备形态间快速切换,达到交叉验证,快速定位问题,提高开发效率的目的。同时本解决方案可以方便地事先准备好不同的操作系统的镜像,可以通过命令行来选择不同的操作系统(ubuntu/windows/BIOS)。相比之下,如果在真实主机中开发,需要频繁重装系统,或者换硬盘,效率低下。

基于图1的验证平台搭建方法,本申请的一些实施例还提供了该方法的一些具体实施方案,以及扩展方案,下面进行说明。

在一些实施例中,所述硬件原型由现场可编程门阵列或者硬件代码的仿真程序(emulation)实现。

在一些实施例中,在虚拟原型验证阶段执行以下步骤以实现所述虚拟处理器与所述虚拟原型之间的进程间通信:所述虚拟处理器在其启动后建立共享内存;在所述虚拟原型启动后,所述虚拟处理器将所述共享内存的名称传递至所述虚拟原型,以供所述虚拟原型根据所述名称访问所述共享内存。如此,虚拟处理器与虚拟原型之间的设备内存访问速度都可以得到极大的提升。

在一些实施例中,所述虚拟处理器为QEMU虚拟处理器。

以此为例,将硬件原型(具体例如是由FPGA实现的独立显卡原型)透传到QEMU虚拟处理器中的操作步骤如下。

第一步、判断运行当前验证平台的物理主机是否支持VFIO框架。

第二步、如果当前的物理主机支持VFIO框架,因此QEMU虚拟处理器可以透传PCIe设备。通过用户输入的命令行所提供的PCIe设备的device ID和vendor ID来找到PCIe设备。

第三步、检查当前PCIe设备的IOMMU group ID。

第四步、判断当前PCIe设备是否已经绑定驱动,如果已绑定,则解除当前驱动。

第五步、绑定VFIO驱动到PCIe设备。

第六步、启动QEMU虚拟处理器,同时将已经绑定VFIO驱动的PCIe设备ID传给QEMU虚拟处理器。

第七步、QEMU虚拟处理器启动完成后,在QEMU虚拟处理器里面可以检测到该PCIe设备。

从软件角度来说,以上整个解决方案是以一个启动脚本来实现虚拟处理器启动、虚拟原型设备启动、虚拟原型设备连接至虚拟处理器、透传硬件原型设备等,动作执行主体是启动脚本。

可以看到,本申请的有益效果是:运行在虚拟处理器上的PCIe设备驱动程序不感知PCIe设备的底层实现方式(即是虚拟原型还是硬件原型),实现0成本的跨平台间的交叉验证,大大提高了PCIe设备驱动程序的开发效率。一方面,驱动程序可以快速在不同形态的PCIe设备间切换(虚拟原型/硬件原型);另一方面,同一个物理主机双可以实现不同操作系统(windows/ubuntu/BIOS等)间切换(如果在物理主机上切换需要重装系统,或者换硬盘)。进一步,通过共享内存(shared memory)方式可以极大提高虚拟处理器与虚拟原型设备的IO访问速度。

基于相同的技术构思,本申请实施例还提供一种验证平台搭建装置,用于执行上述任一实施例所提供的验证平台搭建方法。图2为本申请实施例提供的一种验证平台搭建装置结构示意图。

如图2所示,装置包括:虚拟原型验证模块1,用于在虚拟原型验证阶段,通过进程间通信使PCIe设备的虚拟原型与虚拟处理器相互通信,以验证运行在所述虚拟处理器上的对应所述PCIe设备的驱动程序;硬件原型验证模块2,用于在硬件原型验证阶段,通过虚拟功能IO技术将所述PCIe设备的硬件原型透传至所述虚拟处理器,以验证运行在所述虚拟处理器上的对应于所述PCIe设备的驱动程序。

在一些实施例中,所述硬件原型由现场可编程门阵列或者硬件代码的仿真程序实现。

在一些实施例中,所述虚拟原型验证模块1具体用于:所述虚拟处理器在其启动后建立共享内存;在所述虚拟原型启动后,所述虚拟处理器将所述共享内存的名称传递至所述虚拟原型,以供所述虚拟原型根据所述名称访问所述共享内存。

在一些实施例中,所述虚拟处理器为QEMU虚拟处理器。

需要说明的是,本申请实施例中的装置可以实现前述方法的实施例的各个过程,并达到相同的效果和功能,这里不再赘述。

图3为根据本申请一实施例的验证平台搭建装置,用于执行图1所示出的验证平台搭建方法,该验证平台搭建装置包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行:前述实施例提供的验证平台搭建方法。

根据本申请的一些实施例,提供了非易失性计算机存储介质,其上存储有计算机可执行指令,该计算机可执行指令设置为在由处理器运行时执行:前述实施例提供的验证平台搭建方法。

本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以其描述进行了简化,相关之处可参见方法实施例的部分说明即可。

本申请实施例提供的装置和计算机可读存储介质与方法是一一对应的,因此,装置和计算机可读存储介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述装置和计算机可读存储介质的有益技术效果。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、装置、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。

虽然已经参考若干具体实施方式描述了本申请的精神和原理,但是应该理解,本申请并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本申请旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

相关技术
  • 验证平台搭建方法、装置及存储介质
  • 业务平台搭建方法、装置、计算机设备和存储介质
技术分类

06120113693658