CN117891530A - 服务器总线设备的驱动方法及装置、存储介质和电子设备 - Google Patents
服务器总线设备的驱动方法及装置、存储介质和电子设备 Download PDFInfo
- Publication number
- CN117891530A CN117891530A CN202410234449.8A CN202410234449A CN117891530A CN 117891530 A CN117891530 A CN 117891530A CN 202410234449 A CN202410234449 A CN 202410234449A CN 117891530 A CN117891530 A CN 117891530A
- Authority
- CN
- China
- Prior art keywords
- target
- driver
- server
- loading
- driving
- 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
- 238000000034 method Methods 0.000 title claims abstract description 114
- 230000015654 memory Effects 0.000 claims description 106
- 230000008569 process Effects 0.000 claims description 49
- 238000004590 computer program Methods 0.000 claims description 23
- 230000006870 function Effects 0.000 claims description 19
- 239000000758 substrate Substances 0.000 claims 5
- 230000000694 effects Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 16
- 230000005540 biological transmission Effects 0.000 description 6
- 238000012795 verification Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本申请实施例提供了一种服务器总线设备的驱劢方法及装置、存储介质和电子设备,应用于目标服务器,其中,该方法包括:获取目标驱劢请求;响应目标驱劢请求,将目标驱劢程序加载至目标服务器;在确定目标驱劢程序已完成加载的情况下,在目标服务器上运行目标驱劢程序,直至驱劢程序完成运行。通过本申请,解决了服务器总线设备的驱劢效率较低的问题,进而达到了提升服务器总线设备的驱劢效率的效果。
Description
技术领域
本申请实施例涉及计算机领域,具体而言,涉及一种服务器总线设备的驱动方法及装置、存储介质和电子设备。
背景技术
相关技术中,设备中存储有对设备进行驱动所需的驱动程序,该驱动程序是一个整体的文件,例如,对与服务器连接的总线设备进行驱动所需的驱动程序是一个整体的文件,在对与服务器连接的总线设备进行驱动的情况下,需要将总线设备中存储的整体的文件搬移到服务器中,然后通过服务器运行驱动程序和配置程序的方式,完成对总线设备的驱动。
这样的方式,一方面,设备的存储空间有限,驱动程序所能实现的功能有限,另一方面,在对设备进行驱动的情况下,需要将整体的文件搬移到服务器中,这个过程需要消耗较多的时间,可以理解的是,相关技术中,设备的驱动效率较低。
发明内容
本申请实施例提供了一种服务器总线设备的驱动方法及装置、存储介质和电子设备,以至少解决相关技术中服务器总线设备的驱动效率较低的问题。
根据本申请的一个实施例,提供了一种服务器总线设备的驱动方法,应用于目标服务器,所述服务器总线设备是所述目标服务器上所连接的设备,所述服务器总线设备上部署的驱动程序包括:目标驱动程序以及一个或者多个参考驱动程序,所述驱动程序用于实现所述服务器总线设备的驱动过程,所述目标驱动程序用于实现目标阶段并按照驱动过程中各个驱动阶段的驱动顺序至少加载和运行所述一个或者多个参考驱动程序中的首个参考驱动程序,所述目标阶段至少包括所述驱动过程中的起始阶段,所述参考驱动程序用于实现所述驱动过程中的一个驱动阶段或者多个连续的驱动阶段,所述方法包括:获取目标驱动请求,其中,所述目标驱动请求用于请求对服务器总线设备进行驱动;响应所述目标驱动请求,将所述目标驱动程序加载至所述目标服务器;在确定所述目标驱动程序已完成加载的情况下,在所述目标服务器上运行所述目标驱动程序,直至所述驱动程序完成运行,其中,所述一个或者多个参考驱动程序中除所述首个参考驱动程序之外的其他参考驱动程序的加载和运行功能在所述目标驱动程序中,或者,在所述其他参考驱动程序中首个驱动阶段的上一个驱动阶段所在的候选驱动程序中实现。
在一个示例性实施例中,所述将所述目标驱动程序加载至所述目标服务器,包括:确定所述目标服务器的目标类型,其中,所述服务器总线设备与所述目标类型的所述目标服务器匹配;从所述服务器总线设备的第一内存中的目标镜像文件中确定所述目标类型所对应的目标镜像子文件,其中,所述目标镜像文件中包括一个或者多个镜像子文件,所述一个或者多个子镜像文件包括所述目标镜像子文件,所述一个或者多个子镜像文件中的每个镜像子文件对应与所述服务器总线设备匹配的服务器的一个类型;从所述目标镜像子文件中确定所述目标驱动程序,并将所述目标驱动程序加载至所述目标服务器。
在一个示例性实施例中,所述从所述服务器总线设备的第一内存中的目标镜像文件中确定所述目标类型所对应的目标镜像子文件,包括:确定所述目标镜像子文件在所述目标镜像文件中的第一起始地址和第一数据大小;在所述目标镜像文件中从所述第一起始地址开始,获取所述第一数据大小的数据,得到所述目标镜像子文件;或者确定所述目标镜像子文件在所述目标服务器中的第一起始访问地址和所述第一数据大小,其中,所述第一起始访问地址是所述第一起始地址在所述目标服务器中所对应的起始地址;在所述目标服务器中从所述第一起始访问地址开始,获取所述第一数据大小的数据,得到所述目标镜像子文件。
在一个示例性实施例中,所述从所述目标镜像子文件中确定所述目标驱动程序,包括:确定所述目标驱动程序在所述目标镜像子文件中的第二起始地址和第二数据大小;在所述目标镜像子文件中从所述第二起始地址开始,获取所述第二数据大小的数据,得到所述目标驱动程序;或者确定所述目标驱动程序在所述目标服务器中的第二起始访问地址和所述第二数据大小,其中,所述第二起始访问地址是所述第二起始地址在所述目标服务器中所对应的起始地址;在所述目标服务器中从所述第二起始访问地址开始,获取所述第二数据大小的数据,得到所述目标驱动程序。
在一个示例性实施例中,所述将所述目标驱动程序加载至所述目标服务器,包括:将所述第一内存中的所述目标驱动程序加载至所述服务器总线设备的第三内存中;在确定所述目标驱动程序已完成加载的情况下,将所述第三内存中的所述目标驱动程序加载至所述目标服务器的第二内存中。
在一个示例性实施例中,所述在确定所述目标驱动程序已完成加载的情况下,在所述目标服务器上运行所述目标驱动程序,直至所述驱动程序完成运行,包括:在所述目标驱动程序开始运行的情况下,确定所述首个参考驱动程序在目标镜像子文件中的第三起始地址和第三数据大小,其中,所述目标镜像子文件中包括所述首个参考驱动程序,所述目标镜像子文件是从所述服务器总线设备的第一内存中的目标镜像文件中确定的所述目标服务器的目标类型所对应的镜像子文件,所述目标镜像文件中包括一个或者多个镜像子文件,所述一个或者多个子镜像文件包括所述目标镜像子文件,所述一个或者多个子镜像文件中的每个镜像子文件对应与所述服务器总线设备匹配的服务器的一个类型,所述每个镜像子文件包括对应的与一个类型的服务器匹配的所述服务器总线设备的驱动程序;在所述第三数据大小大于或者等于预设的数据大小阈值的情况下,根据所述第三起始地址、所述第三数据大小和预设的数据大小将所述首个参考驱动程序加载至所述目标服务器中;在所述目标服务器上运行所述首个参考驱动程序,直至所述驱动程序完成运行。
在一个示例性实施例中,所述根据所述第三起始地址、所述第三数据大小和预设的数据大小将所述首个参考驱动程序加载至所述目标服务器中,包括:获取一组加载命令,其中,所述一组加载命令是在所述第三数据大小大于或者等于预设的数据大小阈值的情况下,在所述目标服务器的第二内存中运行所述目标驱动程序得到的,所述一组加载命令中的各个加载命令用于请求将所述预设的数据大小的数据加载至所述目标服务器中;响应所述一组加载命令中的第一加载命令,在所述目标镜像子文件中,从所述第三起始地址开始,获取所述预设的数据大小的数据,得到第一部分数据,并将所述第一部分数据加载至所述第二内存中,其中,所述第一加载命令是所述一组加载命令中的首个加载命令,所述第一加载命令用于请求在所述目标镜像子文件中从所述第三起始地址开始的所述预设的数据大小的数据加载至所述第二内存中;在所述第一部分数据已完成加载、且第四起始地址小于所述第三起始地址与所述第三数据大小之和的情况下,响应所述一组加载命令中的第二加载命令,在所述目标镜像子文件中,从所述第四起始地址开始,获取所述预设的数据大小的数据,得到第二部分数据,并将所述第二部分数据加载至所述第二内存中,其中,所述第二加载命令是所述一组加载命令中所述第一加载命令的下一个加载命令,所述第二加载命令用于请求将在所述目标镜像子文件中从第四起始地址开始的所述预设的数据大小的数据加载至所述第二内存中,所述第四起始地址等于所述第三起始地址与所述预设的数据大小之和;在所述第一部分数据已完成加载、且所述第四起始地址大于或者等于所述第三起始地址与所述第三数据大小之和的情况下,停止从所述目标镜像子文件中获取数据,并确定所述首个参考驱动程序已完成加载。
根据本申请的另一个实施例,提供了一种服务器总线设备的驱动装置,应用于目标服务器,所述服务器总线设备是所述目标服务器上所连接的设备,所述服务器总线设备上部署的驱动程序包括:目标驱动程序以及一个或者多个参考驱动程序,所述驱动程序用于实现所述服务器总线设备的驱动过程,所述目标驱动程序用于实现目标阶段并按照驱动过程中各个驱动阶段的驱动顺序至少加载和运行所述一个或者多个参考驱动程序中的首个参考驱动程序,所述目标阶段至少包括所述驱动过程中的起始阶段,所述参考驱动程序用于实现所述驱动过程中的一个驱动阶段或者多个连续的驱动阶段,所述装置包括:获取模块,用于获取目标驱动请求,其中,所述目标驱动请求用于请求对服务器总线设备进行驱动;加载模块,用于响应所述目标驱动请求,将所述目标驱动程序加载至所述目标服务器;运行模块,用于在确定所述目标驱动程序已完成加载的情况下,在所述目标服务器上运行所述目标驱动程序,直至所述驱动程序完成运行,其中,所述一个或者多个参考驱动程序中除所述首个参考驱动程序之外的其他参考驱动程序的加载和运行功能在所述目标驱动程序中,或者,在所述其他参考驱动程序中首个驱动阶段的上一个驱动阶段所在的候选驱动程序中实现。
根据本申请的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本申请的又一个实施例,还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
根据本申请的又一个实施例,还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述任一项方法实施例中的步骤。
通过本申请,服务器总线设备上部署的驱动程序包括目标驱动程序以及一个或者多个参考驱动程序,在对服务器总线设备进行驱动的情况下,将目标驱动程序加载至目标服务器,并且在开始运行目标驱动程序的情况下,同时加载一个或者多个参考驱动程序中的首个参考驱动程序,可以理解的是,实现了运行已完成加载的驱动程序和加载下一个驱动程序之间是并行执行的异步操作,通过这样的方式,一方面,将驱动程序进行划分,减少了每次加载至目标服务器的驱动程序的数据量,另一方面,在开始执行已完成加载的驱动程序的情况下,同时加载下一个驱动程序到目标服务器,节省了加载驱动程序到目标服务器所需的时间,极大的提升了加载驱动程序到目标服务器的速度,因此,可以解决服务器总线设备的驱动效率较低问题,达到提升服务器总线设备的驱动效率效果。
附图说明
图1是本申请实施例的一种服务器总线设备的驱动方法的服务器设备的硬件结构框图;
图2是根据本申请实施例的一种服务器总线设备的驱动方法的应用场景示意图一;
图3是根据本申请实施例的一种服务器总线设备的驱动方法的应用场景示意图二;
图4是根据本申请实施例的服务器总线设备的驱动方法的流程图;
图5是根据本申请实施例的一种可选的目标镜像文件的示意图;
图6是根据本申请实施例的一种可选的对目标驱动程序进行校验的示意图;
图7是根据本申请实施例的一种可选的参考驱动程序的示意图;
图8是根据本申请实施例的一种可选的服务器总线设备的驱动方法的示意图;
图9是根据本申请实施例的一种加载分片的流程图;
图10是根据本申请实施例的服务器总线设备的驱动装置的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请的实施例。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例中所提供的方法实施例可以在服务器设备或者类似的运算装置中执行。以运行在服务器设备上为例,图1是本申请实施例的一种服务器总线设备的驱动方法的服务器设备的硬件结构框图。如图1所示,服务器设备可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述服务器设备还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述服务器设备的结构造成限定。例如,服务器设备还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本申请实施例中的服务器总线设备的驱动方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至服务器设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器设备的通信供应方提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
首先,对本申请各个实施例中涉及到的专业术语,解释如下:
固件(Firmware):固件通常是存储在EEPROM或者FLASH中的程序,用于完成系统最底层工作的软件。对于存储类的产品,固件会完成比较复杂的业务逻辑,也会运行实时操作系统来实现多任务调度。
Flash:非易失型存储器,主要有QSPI FLASH和NAND FLASH。
PCIe:PCI-Express(peripheral component interconnect express)是一种高速串行计算机扩展总线标准。
RAID:磁盘阵列(Redundant Arrays of Independent Disks),磁盘阵列是由很多块独立的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。
PCI Option ROM(又称PCI Expansion ROM):是PCI/PCIe设备可选的一个外接EPROM芯片,其中用来存储相应的PCI设备的初始化代码或者系统的启动代码,比如PXE或PCI BOOT。BIOS在POST阶段,会扫描PCI设备是否有Expansion ROM,有的话将其拷贝到RAM中执行。在PCI规范中称为Expansion ROM,在BIOS术语中称为Option ROM。
UEFI(Unified Extensible Firmware Interface Forum):和BIOS(Basic InputOutput System,基本输入输出系统)类似,但是它与传统BIOS不同之处在于规范了各种接口标准、为不同的操作系统提供统一的接口,而且代码开源。UEFI启动总共分为7个阶段:
1.SEC(Security Phase),安全验证阶段。
2.PEI(Pre-EFI Initialization),EFI前期的初始化阶段,做CPU和硬件相关初始化,主要是内存初始化。
3.DXE(Driver Execution Environment),驱动执行环境阶段,主要进行大量的驱动加载和初始化工作。
4.BDS(Boot Device Select),启动设备选择阶段,初始化控制台设备。
5.TSL(Transient System Load),临时系统加载阶段,为OS(operating system,操作系统)Loader准备执行环境。
6.RT(Run Time),执行阶段,即PS环境执行时期。
7.AL(After Life),后续阶段。
Bootloader:启动加载程序,用于设备的初始化,加载Flash中的固件程序,并对固件程序进行解密、签名校验等安全启动检查,然后启动固件程序。
在本实施例中提供了一种服务器总线设备的驱动方法,图2是根据本申请实施例的一种服务器总线设备的驱动方法的应用场景示意图一,如图2所示,服务器总线设备的驱动过程可以但不限于包括多个驱动阶段,例如,服务器总线设备的驱动过程可以但不限于包括阶段1至阶段5,其中,阶段1是起始阶段,目标阶段可以但不限于包括阶段1和阶段2,目标驱动程序用于实现目标阶段(例如,阶段1和阶段2)并至少加载和运行参考驱动程序1至3中的首个参考驱动程序(例如,参考驱动程序1),参考驱动程序1用于实现阶段3并加载和运行参考驱动程序2,参考驱动程序2用于实现阶段4并加载和运行参考驱动程序3,参考驱动程序3用于实现阶段5。
图3是根据本申请实施例的一种服务器总线设备的驱动方法的应用场景示意图二,结合图2、图3所示,服务器总线设备是目标服务器上所连接的设备,服务器总线设备上部署的驱动程序包括:目标驱动程序以及一个或者多个参考驱动程序(例如,参考驱动程序1至3),驱动程序用于实现服务器总线设备的驱动过程,目标驱动程序用于实现目标阶段(例如,阶段1和阶段2)并按照驱动过程中各个驱动阶段的驱动顺序至少加载和运行一个或者多个参考驱动程序中的首个参考驱动程序(例如,参考驱动程序1),目标阶段至少包括驱动过程中的起始阶段(例如,阶段1),参考驱动程序用于实现驱动过程中的一个驱动阶段或者多个连续的驱动阶段。
在这样的情况下,可以但不限于通过以下步骤实现本申请实施例中的服务器总线设备的驱动方法:
步骤S302,获取目标驱动请求,其中,目标驱动请求用于请求对服务器总线设备进行驱动;
步骤S304,响应目标驱动请求,将目标驱动程序加载至目标服务器;
步骤S305,在确定目标驱动程序已完成加载的情况下,在目标服务器上运行目标驱动程序,直至驱动程序运行完成。
例如,目标驱动程序用于实现目标阶段(例如,阶段1和阶段2)并按照驱动过程中各个驱动阶段的驱动顺序至少加载和运行一个或者多个参考驱动程序中的首个参考驱动程序(例如,参考驱动程序1)。参考驱动程序1用于实现阶段3并按照驱动过程中各个驱动阶段的驱动顺序至少加载和运行一个或者多个参考驱动程序中的下一个参考驱动程序(例如,参考驱动程序2)。参考驱动程序3用于实现阶段4并按照驱动过程中各个驱动阶段的驱动顺序至少加载和运行一个或者多个参考驱动程序中的下一个参考驱动程序(例如,参考驱动程序5)。参考驱动程序5用于实现阶段5。
在本实施例中提供了一种服务器总线设备的驱动方法,应用于目标服务器,所述服务器总线设备是所述目标服务器上所连接的设备,所述服务器总线设备上部署的驱动程序包括:目标驱动程序以及一个或者多个参考驱动程序,所述驱动程序用于实现所述服务器总线设备的驱动过程,所述目标驱动程序用于实现目标阶段并按照驱动过程中各个驱动阶段的驱动顺序至少加载和运行所述一个或者多个参考驱动程序中的首个参考驱动程序,所述目标阶段至少包括所述驱动过程中的起始阶段,所述参考驱动程序用于实现所述驱动过程中的一个驱动阶段或者多个连续的驱动阶段,图4是根据本申请实施例的服务器总线设备的驱动方法的流程图,如图4所示,该流程包括如下步骤:
步骤S402,获取目标驱动请求,其中,所述目标驱动请求用于请求对服务器总线设备进行驱动;
步骤S404,响应所述目标驱动请求,将所述目标驱动程序加载至所述目标服务器;
步骤S406,在确定所述目标驱动程序已完成加载的情况下,在所述目标服务器上运行所述目标驱动程序,直至所述驱动程序完成运行,其中,所述一个或者多个参考驱动程序中除所述首个参考驱动程序之外的其他参考驱动程序的加载和运行功能在所述目标驱动程序中,或者,在所述其他参考驱动程序中首个驱动阶段的上一个驱动阶段所在的候选驱动程序中实现。
通过上述步骤,服务器总线设备上部署的驱动程序包括目标驱动程序以及一个或者多个参考驱动程序,在对服务器总线设备进行驱动的情况下,将目标驱动程序加载至目标服务器,并且在开始运行目标驱动程序的情况下,同时加载一个或者多个参考驱动程序中的首个参考驱动程序,可以理解的是,实现了运行已完成加载的驱动程序和加载下一个驱动程序之间是并行执行的异步操作,通过这样的方式,一方面,将驱动程序进行划分,减少了每次加载至目标服务器的驱动程序的数据量,另一方面,在开始执行已完成加载的驱动程序的情况下,同时加载下一个驱动程序到目标服务器,节省了加载驱动程序到目标服务器所需的时间,极大的提升了加载驱动程序到目标服务器的速度,因此,可以解决服务器总线设备的驱动效率较低问题,达到提升服务器总线设备的驱动效率效果。
在上述步骤S402提供的技术方案中,服务器总线设备可以但不限于包括目标服务器上连接的满足总线协议的设备,总线协议可以但不限于包括I2C(Inter-IntegratedCircuit,两线式串行总线)协议、PCIE(peripheral component interconnect express,高速串行计算机扩展总线标准)协议等等,例如,服务器总线设备可以但不限于包括PCI E设备,比如,PCIE网卡、RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列)控制器等等。
可选的,在本实施例中,服务器总线设备的驱动过程可以但不限于包括多个阶段,驱动程序可以但不限于用于实现驱动过程包括的各个阶段的功能,目标阶段可以但不限于包括一个或者多个阶段,在目标阶段包括多个阶段的情况下,目标阶段中的多个阶段是连续的、或者是不连续的、或者是部分连续的。
例如,服务器总线设备的驱动过程可以但不限于包括阶段1至5,阶段1是起始阶段,那么,目标阶段可以但不限于包括阶段1和阶段2;或者目标阶段可以但不限于包括阶段1、阶段2和阶段5;或者,目标阶段可以但不限于包括阶段1、阶段3和阶段5。
可选的,在本实施例中,参考驱动程序用于实现驱动过程中的一个驱动阶段或者多个连续的驱动阶段,可以理解的是,参考驱动程序用于实现驱动过程中的一个驱动阶段或者多个连续的驱动阶段的功能。
例如,服务器总线设备的驱动过程可以但不限于包括阶段1至5,阶段1是起始阶段,目标阶段可以但不限于包括阶段1和阶段2,那么,参考驱动程序用于实现驱动过程中的一个驱动阶段,例如,阶段3,或者,参考驱动程序用于实现驱动过程中的多个连续的驱动阶段,例如,阶段4和阶段5。
可选的,在本实施例中,可以但不限于通过以下方式获取目标驱动请求:在检测到所述服务器总线设备与所述目标服务器完成连接的情况下,确定获取到所述目标驱动请求;或者,在检测到所述服务器总线设备与所述目标服务器完成连接、且所述目标服务器被设置为允许对所述服务器总线设备驱动的情况下,确定获取到所述目标驱动请求。
例如,可以但不限于在服务器总线设备与目标服务器已连接的情况下,例如,可插拔的PCIE网卡插在了目标服务器上对应的插槽,可以表明PCIE网卡与目标服务器已经完成连接,在这样的情况下,可以确定获取到目标驱动请求。通过这样的方式,实现了在服务器总线设备和服务器完成连接的情况下,自动获取目标驱动请求,提升了获取目标驱动请求的效率。
可选的,在本实施例中,目标驱动程序还可以但不限于用于对服务器总线设备的硬件进行初始化,参考驱动程序还可以但不限于用于对服务器总线设备的设备信息进行设置,例如,通过目标驱动程序和一个或者多个参考驱动程序,为服务器总线设备提供支持,使得服务器总线设备能够正常运行。
在上述步骤S404提供的技术方案中,可以但不限于响应目标驱动请求,将目标驱动程序从服务器总线设备中加载至目标服务器,作为一种可选的示例,将目标驱动程序从服务器总线设备中复制至目标服务器,并在目标服务器中设置目标驱动程序的目标运行环境,其中,目标驱动程序被设置为允许在目标运行环境中运行。
在一个示范性实施例中,可以但不限于通过以下方式将所述目标驱动程序加载至所述目标服务器:确定所述目标服务器的目标类型,其中,所述服务器总线设备与所述目标类型的所述目标服务器匹配;从所述服务器总线设备的第一内存中的目标镜像文件中确定所述目标类型所对应的目标镜像子文件,其中,所述目标镜像文件中包括一个或者多个镜像子文件,所述一个或者多个子镜像文件包括所述目标镜像子文件,所述一个或者多个子镜像文件中的每个镜像子文件对应与所述服务器总线设备匹配的服务器的一个类型;从所述目标镜像子文件中确定所述目标驱动程序,并将所述目标驱动程序加载至所述目标服务器。
可选的,在本实施例中,服务器总线设备与目标类型的目标服务器匹配,可以理解的是,服务器总线设备被设置为允许被目标类型的所述目标服务器使用,也就是说,服务器总线设备支持目标类型的目标服务器。例如,以服务器总线设备包括PCIE网卡为例,PCIE网卡支持X86的服务器以及ARM的服务器,X86的服务器以及ARM的服务器均被设置为允许使用PCIE网卡。
可选的,在本实施例中,服务器总线设备的第一内存中的目标镜像文件中包括了一个或者多个镜像子文件,每个镜像子文件对应于与服务器设备匹配的服务器的一个类型,可以理解的是,将一个或者多个镜像子文件存储在一个目标镜像文件中,通过这样的方式,减少了与不同类型的服务器匹配的服务器总线设备的驱动程序的所需的存储空间,并且将与不同类型的服务器匹配的服务器总线设备的驱动程序都存储在一个目标镜像文件中,减少了确定目标镜像子文件所需的时间,提升了确定目标镜像子文件的效率。
在一个示范性实施例中,可以但不限于通过以下方式之一从所述服务器总线设备的第一内存中的目标镜像文件中确定所述目标类型所对应的目标镜像子文件:
方式一:确定所述目标镜像子文件在所述目标镜像文件中的第一起始地址和第一数据大小;在所述目标镜像文件中从所述第一起始地址开始,获取所述第一数据大小的数据,得到所述目标镜像子文件。
可选的,在本实施例中,目标服务器可以但不限于通过第一起始地址,直接在目标镜像文件中从第一起始地址开始,获取第一数据大小的数据,得到目标镜像子文件,通过这样的方式,第一起始地址是准确的,通过准确的地址所获取到的数据也是准确的,提升了获取的数据的准确度。
方式二:确定所述目标镜像子文件在所述目标服务器中的第一起始访问地址和所述第一数据大小,其中,所述第一起始访问地址是所述第一起始地址在所述目标服务器中所对应的起始地址;在所述目标服务器中从所述第一起始访问地址开始,获取所述第一数据大小的数据,得到所述目标镜像子文件。
可选的,在本实施例中,第一起始访问地址是第一起始地址在目标服务器中对应的起始地址,第一起始访问地址与第一起始地址不同,在目标服务器中通过访问第一起始访问地址,而无须知道第一起始地址,即可获取到目标镜像子文件,通过这样的方式,实现了在目标镜像子文件存储在服务器设备中的情况下,直接快速的获取目标镜像子文件,提升了获取目标镜像子文件的效率。
在一个示范性实施例中,可以但不限于通过以下方式之一从所述目标镜像子文件中确定所述目标驱动程序:
方式一:确定所述目标驱动程序在所述目标镜像子文件中的第二起始地址和第二数据大小;在所述目标镜像子文件中从所述第二起始地址开始,获取所述第二数据大小的数据,得到所述目标驱动程序。
可选的,在本实施例中,目标服务器可以但不限于通过第二起始地址,直接在目标镜像子文件中从第二起始地址开始,获取第二数据大小的数据,得到目标驱动程序,其中,在目标镜像子文件中存储有第二起始地址,通过这样的方式,第二起始地址是准确的,通过准确的地址所获取到的数据也是准确的,提升了获取到的目标驱动程序的准确度。
方式二:确定所述目标驱动程序在所述目标服务器中的第二起始访问地址和所述第二数据大小,其中,所述第二起始访问地址是所述第二起始地址在所述目标服务器中所对应的起始地址;在所述目标服务器中从所述第二起始访问地址开始,获取所述第二数据大小的数据,得到所述目标驱动程序。
可选的,在本实施例中,第二起始访问地址是第二起始地址在目标服务器中对应的起始地址,第二起始访问地址与第二起始地址不同,在目标服务器中通过访问第二起始访问地址,而无需知道第二起始地址,即可获取到目标镜像子文件中的目标驱动程序,通过这样的方式,实现了在目标镜像子文件存储在服务器设备中的情况下,直接快速的获取目标镜像子文件中的目标驱动程序,提升了获取目标驱动程序的效率。
为了更好的理解本申请实施例中的获取目标驱动程序的过程,下面结合可选的实施例,对本申请实施例中的获取目标驱动程序的过程进行解释和说明,可以但不限于适用于本申请实施例。
图5是根据本申请实施例的一种可选的目标镜像文件的示意图,如图5所示,以与服务器设备匹配的服务器的类型包括类型1和类型2为例,比如,第一类型包括X86 CPU(Central Processing Unit,中央处理器),第二类型包括ARM CPU,那么目标镜像文件中可以但不限于包括两个镜像子文件(例如,镜像子文件1和镜像子文件2),在目标服务器的类型是类型1的情况下,可以但不限于将目标镜像文件中的镜像子文件1确定为目标镜像子文件。
Option ROM镜像包(相当于目标镜像文件)需要遵守PCIE和UEFI中对Option ROM格式的规范。镜像包中的每个镜像子文件包括ROM Header、PCIData Structure和Image等等,其中,ROM Header中存储有各个镜像子文件在目标镜像文件中的起始地址和镜像子文件的数据大小,PCIData Structure用于表示镜像子文件的格式规范,Image表示镜像子文件中的数据,为了支持不同主机架构,将不同类型的镜像子文件打包在一起,组成一个UEFILoader镜像(相当于目标镜像文件)。
在一个示范性实施例中,可以但不限于通过以下方式将目标驱动程序加载至目标服务器:将所述第一内存中的所述目标驱动程序加载至所述服务器总线设备的第三内存中;在确定所述目标驱动程序已完成加载的情况下,将所述第三内存中的所述目标驱动程序加载至所述目标服务器的第二内存中。
可选的,在本实施例中,为了减少服务器总线设备中的第一内存的占用率,提升服务器总线设备中的第一内存的使用效率,可以但不限于将目标驱动程序加载至服务器总线设备的第三内存,可以理解的是,第三内存和第一内存是不同的、独立的内存,第三内存被设置为允许并行的将多个数据写入第三内存中,通过这样的方式,避免了直接占用服务器总线设备的第一内存的资源,将目标驱动程序加载至目标服务器中,减少了服务器总线设备的第一内存的资源的占用率,提升了第一内存的利用率。
可选的,在本实施例中,在将目标驱动程序加载至目标服务器之后,上述方法还包括:对目标驱动程序进行解密和签名校验。图6是根据本申请实施例的一种可选的对目标驱动程序进行校验的示意图,如图6所示,可以但不限于以目标驱动程序包括UEFI loader程序为例,服务器总线设备的第一内存(例如,Flash)中存储有目标镜像文件,目标镜像文件中存储有目标驱动程序(例如,UEFI loader程序)和参考驱动程序(例如,UEFI Config程序),在将UEFI loader程序从服务器总线设备的第一内存(例如,Flash)中完成加载至目标服务器中的第二内存(例如,SRAM)的情况下,可以理解的是,确定目标驱动程序已完成加载,在目标服务器的第二内存(例如,SRAM)中对加载的UEFI loader程序进行解密和校验,在校验通过的情况下,将通过校验的UEFI loader程序存储在第二内存(例如,SRAM)中。
在上述步骤S406提供的技术方案中,在确定目标驱动程序已完成加载的情况下,在目标服务器上运行目标驱动程序,可以理解的是,在目标服务器上开始运行目标驱动程序的情况下,可以至少同时将一个或者多个参考驱动程序中的首个参考驱动程序加载至目标直至驱动程序以及运行,在目标服务器上开始运行首个参考驱动程序的情况下,并加载和运行首个参考驱动程序的至少一个参考驱动程序,直至驱动程序运行完成。
可选的,在本实施例中,在目标服务器上开始运行目标驱动程序、且按照驱动过程中各个驱动阶段的驱动顺序完成至少加载一个或者多个参考驱动程序中的首个参考驱动程序、且已加载完成的参考驱动程序与目标驱动程序之间不相关的情况下,在目标服务器上运行加载完成的参考驱动程序;在目标服务器上开始运行目标驱动程序、且按照驱动过程中各个驱动阶段的驱动顺序完成至少加载一个或者多个参考驱动程序中的首个参考驱动程序、且已加载完成的参考驱动程序与目标驱动程序之间相关的情况下,在目标服务器上运行完成目标驱动程序的情况下,在目标服务器上运行加载完成的参考驱动程序。
作为一种可选的示例,已加载完成的参考驱动程序与目标驱动程序之间不相关包括已加载完成的参考驱动程序不需要使用运行目标驱动程序所得到的数据,已加载完成的参考驱动程序与目标驱动程序之间相关包括已加载完成的参考驱动程序需要使用运行目标驱动程序所得到的数据。
可选的,在本实施例中,在驱动程序完成运行的情况下,可以表明服务器总线设备的驱动已经完成,在这样的情况下,服务器总线设备能够正常运行,目标服务器被设置为允许使用服务器总线设备执行相关的业务。
可选的,在本实施例中,一个或者多个参考驱动程序中除首个参考驱动程序之外的其他参考驱动程序的加载和运行功能在目标驱动程序中,例如,服务器总线设备的驱动过程可以但不限于包括阶段1至阶段5,其中,阶段1是起始阶段,目标阶段可以但不限于包括阶段1和阶段2,目标驱动程序用于实现目标阶段(例如,阶段1和阶段2)并至少加载和运行参考驱动程序1至3中的首个参考驱动程序(例如,参考驱动程序1),参考驱动程序1用于实现阶段3并加载和运行参考驱动程序2,参考驱动程序2用于实现阶段4并加载和运行参考驱动程序3,参考驱动程序3用于实现阶段5,在这样的情况下,除了参考驱动程序1之外的其他参考驱动程序(参考驱动程序2和参考驱动程序3)的加载和运行功能在目标驱动程序中。或者,参考驱动程序2的加载和运行功能在参考驱动程序1中实现,参考驱动程序3的加载和运行功能在参考驱动程序2中实现。
在一个示范性实施例中,可以但不限于通过以下方式在确定所述目标驱动程序已完成加载的情况下,在所述目标服务器上运行所述目标驱动程序,直至所述驱动程序完成运行:在所述目标驱动程序开始运行的情况下,确定所述首个参考驱动程序在目标镜像子文件中的第三起始地址和第三数据大小,其中,所述目标镜像子文件中包括所述首个参考驱动程序,所述目标镜像子文件是从所述服务器总线设备的第一内存中的目标镜像文件中确定的所述目标服务器的目标类型所对应的镜像子文件,所述目标镜像文件中包括一个或者多个镜像子文件,所述一个或者多个子镜像文件包括所述目标镜像子文件,所述一个或者多个子镜像文件中的每个镜像子文件对应与所述服务器总线设备匹配的服务器的一个类型,所述每个镜像子文件包括对应的与一个类型的服务器匹配的所述服务器总线设备的驱动程序;在所述第三数据大小大于或者等于预设的数据大小阈值的情况下,根据所述第三起始地址、所述第三数据大小和预设的数据大小将所述首个参考驱动程序加载至所述目标服务器中;在所述目标服务器上运行所述首个参考驱动程序,直至所述驱动程序完成运行。
可选的,在本实施例中,数据大小可以但不限于用于表示数据的数据量,例如,第三数据大小用于表示首个参考驱动程序的数据量,在第三数据大小小于预设的数据大小阈值的情况下,可以但不限于通过以下方式将首个参考驱动程序加载至目标服务器:获取目标加载命令,其中,所述目标加载命令是在第三数据大小小于预设的数据大小阈值的情况下,在目标服务器的第二内存中运行目标驱动程序得到的,所述目标加载命令用于请求将所述第三数据大小的数据加载至所述目标服务器中;响应所述目标加载命令,在所述目标镜像子文件中,从所述第三起始地址开始,获取所述第三数据大小的数据,得到所述首个参考驱动程序,并将所述首个参考驱动程序加载至所述第二内存中。
通过这样的方式,根据首个参考驱动程序的数据量,生成对应的加载命令,在数据量较小的情况下,通过生成一个加载命令,即可直接一次性将首个参考驱动程序加载至目标服务器中,减少了加载驱动程序所占用的内存空间,提升了首个参考驱动程序的加载效率。
可选的,在本实施例中,可以但不限于通过以下方式在确定所述目标驱动程序已完成加载的情况下,在所述目标服务器上运行所述目标驱动程序,直至所述驱动程序完成运行:在所述目标驱动程序开始运行的情况下,确定所述首个参考驱动程序在目标服务器中的第三起始访问地址和第三数据大小,其中,所述第三起始访问地址是所述第三起始地址在所述目标服务器中对应的地址,其中,所述目标镜像子文件中包括所述首个参考驱动程序;在所述第三数据大小大于或者等于预设的数据大小阈值的情况下,根据所述第三访问起始地址、所述第三数据大小和预设的数据大小将所述首个参考驱动程序加载至所述目标服务器中;在所述目标服务器上运行所述首个参考驱动程序,直至所述驱动程序完成运行。
图7是根据本申请实施例的一种可选的参考驱动程序的示意图,结合图5、图7所示,在image中存储有目标驱动程序和参考驱动程序,在目标服务器的类型是类型1的情况下,可以但不限于将目标镜像文件中的镜像子文件1确定为目标镜像子文件,在镜像子文件1中的imageO中存储有目标驱动程序和参考驱动程序,其中,DOM MZ头、DOS STUB、PE头标识、文件头和可选头以及段表中共同存储了各个参考驱动程序在镜像子文件1中的起始地址和对应的数据大小。
在一个示范性实施例中,可以但不限于通过以下方式根据所述第三起始地址、所述第三数据大小和预设的数据大小将所述首个参考驱动程序加载至所述目标服务器中:获取一组加载命令,其中,所述一组加载命令是在所述第三数据大小大于或者等于预设的数据大小阈值的情况下,在所述目标服务器的第二内存中运行所述目标驱动程序得到的,所述一组加载命令中的各个加载命令用于请求将所述预设的数据大小的数据加载至所述目标服务器中;响应所述一组加载命令中的第一加载命令,在所述目标镜像子文件中,从所述第三起始地址开始,获取所述预设的数据大小的数据,得到第一部分数据,并将所述第一部分数据加载至所述第二内存中,其中,所述第一加载命令是所述一组加载命令中的首个加载命令,所述第一加载命令用于请求在所述目标镜像子文件中从所述第三起始地址开始的所述预设的数据大小的数据加载至所述第二内存中;在所述第一部分数据已完成加载、且第四起始地址小于所述第三起始地址与所述第三数据大小之和的情况下,响应所述一组加载命令中的第二加载命令,在所述目标镜像子文件中,从所述第四起始地址开始,获取所述预设的数据大小的数据,得到第二部分数据,并将所述第二部分数据加载至所述第二内存中,其中,所述第二加载命令是所述一组加载命令中所述第一加载命令的下一个加载命令,所述第二加载命令用于请求将在所述目标镜像子文件中从第四起始地址开始的所述预设的数据大小的数据加载至所述第二内存中,所述第四起始地址等于所述第三起始地址与所述预设的数据大小之和;在所述第一部分数据已完成加载、且所述第四起始地址大于或者等于所述第三起始地址与所述第三数据大小之和的情况下,停止从所述目标镜像子文件中获取数据,并确定所述首个参考驱动程序已完成加载。
可选的,在本实施例中,可以但不限于通过以下方式将第一部分数据加载至第二内存中,将所述第一部分数据加载至服务器总线设备的第三内存中,在确定所述第一部分数据已完成加载的情况下,将所述第三内存中的所述第一部分数据加载至所述目标服务器的第二内存中。通过这样的方式,实现了将数据量较大的参考驱动程序拆分为较小的数据,依次加载到服务器中,减少了加载驱动程序所需占用的内存空间,保证了各部分数据之间的有序性,提升了加载参考驱动程序的效率。
可选的,在本实施例中,还可以但不限于通过以下方式根据所述第三起始访问地址、所述第三数据大小和预设的数据大小将所述首个参考驱动程序加载至所述目标服务器中:
获取一组候选加载命令,其中,所述一组候选加载命令是在所述第三数据大小大于或者等于预设的数据大小阈值的情况下,在所述目标服务器的第二内存中运行所述目标驱动程序得到的,所述一组候选加载命令中的各个候选加载命令用于请求将所述预设的数据大小的数据加载至所述目标服务器中;
响应所述一组候选加载命令中的第一候选加载命令,从所述第三起始访问地址开始,获取所述预设的数据大小的数据,得到第三部分数据,并将所述第三部分数据加载至所述第二内存中,其中,所述第三起始访问地址是所述第三起始地址在所述目标服务器中对应的地址,所述第一候选加载命令是所述一组加载命令中的首个候选加载命令,所述第一候选加载命令用于请求在从所述第三起始访问地址开始的所述预设的数据大小的数据加载至所述第二内存中;
在所述第三部分数据已完成加载、且第四起始访问地址小于所述第三起始访问地址与所述第三数据大小之和的情况下,响应所述一组加载命令中的第二候选加载命令,从第四起始访问地址开始,获取所述预设的数据大小的数据,得到第四部分数据,并将所述第四部分数据加载至所述第二内存中,其中,所述第四起始访问地址等于第三起始访问地址与所述预设的数据大小之和,所述第二候选加载命令是所述一组候选加载命令中所述第一候选加载命令的下一个候选加载命令,所述第二候选加载命令用于请求从所述第四起始访问地址开始的所述预设的数据大小的数据加载至所述第二内存中;
在所述第三部分数据已完成加载、且所述第四起始访问地址大于或者等于所述第三访问起始地址与所述第三数据大小之和的情况下,停止从所述目标镜像子文件中获取数据,并确定所述首个参考驱动程序已完成加载。
为了更好的理解本申请实施例中的服务器总线设备的驱动方法,下面结合可选的实施例,对本申请实施例中的服务器总线设备的驱动方法的实现过程进行解释和说明,可以但不限于适用于本申请实施例。
图8是根据本申请实施例的一种可选的服务器总线设备的驱动方法的示意图,如图8所示,主机相当于目标服务器,设备(例如,PCIE设备)相当于服务器总线设备,Flash相当于服务器总线设备中的第一内存。主机和设备连接,主机中有内存,设备中包括内存RAM和option ROM,在option ROM中包括flash。Flash中存储有UEFI loader程序和UEFIconfig程序。
本申请实施例中的服务器总线设备的驱动方法可以但不限于通过分段加载UEFIOption ROM的方式来实现。根据Option ROM的功能可以分为两个独立的程序:UEFINVMe驱动程序,可以简称″UEFI Loader″程序(相当于目标驱动程序),和配置管理程序,简称″UEFI Config″程序(相当于参考驱动程序)。
UEFI Loader程序主要用于承担第二部分UEFI Config程序的加载任务,即将UEFIConfig程序从设备的片上内存加载到主机内存空间并运行。UEFI Config程序可以但不限于通过NVMe命令(相当于加载命令)的方式实现对设备(相当于服务器总线设备)的基本配置。UEFI Loader程序和UEFI Config程序在系统启动之前打包在一起,存储在Flash(相当于第一内存)中。
在设备(相当于服务器总线设备)的Bootloader程序启动过程中,可以但不限于通过以下步骤实现本申请实施例中的服务器总线设备的驱动方法:
1)首先由设备(相当于服务器总线设备)中运行的Bootloader程序将UEFI Loader程序加载到芯片片内RAM(相当于第二内存)中,即步骤①和步骤②所示。
Bootloader程序启动过程中完成PCIe EP的初始化,然后从Flash(相当于第一内存)中的Expansion ROM分区加载前1MB(根据实际场景定义具体大小,本申请对此不作限制)的UEFI Loader程序到片内SRAM空间(相当于第二内存)中。并对UEFI Loader程序进行解密和签名校验。
2)设备上运行的BootLoader程序启动。
3)主机开始枚举服务器总线设备(例如,PCIe设备),加载PCIe Expansion ROM程序,即步骤③和步骤④。图8中的PCIe Bus Driver,为PCIe的总线驱动。在UEFI启动过程中,主机的PCIe总线驱动来进行PCIe设备的枚举。
例如,在主机枚举PCIe设备时,即在UEFI标准启动流程的DXE阶段,主机通过读取PCIe配置空间头中的偏移0x30H位置,获取Expansion ROM Base Address,Expansion ROMBase Address中包括多个bit(比特),通过bit0判断Expansion ROM是否使能。bit31至bit11表示Expansion ROM地址,即Expansion ROM地址表示UEFI Loader程序在目标镜像子文件中的起始地址(相当于第一起始地址),由主机进行配置。Expansion ROM大小(相当于第一数据大小)判断方式和BAR0类似。主机通过对所有bits写1,读取返回值,将返回值加1即为数据大小(相当于第一数据大小)。
4)在UEFI的启动流程的DXE阶段,会加载UEFI Loader程序到主机的内存空间,并且开始运行UEFI Loader程序。UEFI Loader程序在UEFI的启动流程的BDS阶段,才开始通过NVMe命令(相当于加载命令)的方式加载Flash中剩余的UEFI Config程序。即步骤⑤至⑧。
UEFI Config固件(相当于参考驱动程序)为Option ROM的第二段程序。可以在UEFI标准启动流程中的BDS阶段再进行加载。UEFI Config固件主要用于通过NVMe(Non-Volatile Memory Express,非易失性内存主机控制器接口规范)命令实现对设备的配置,比如RAID相关的配置。UEFI Config固件格式可以是一个标准的EFI Image格式的镜像包。
在设备中的固件程序(Firmware)启动完成后,UEFI Config程序还存储在Flash中。UEFI Loader程序运行过程中,可以但不限于通过发送标准的UEFI Bootstrap命令(相当于加载命令)来加载第二阶段的UEFIOption ROM(OROM2),即UEFI Config固件,OROM2的大小通过设备侧的属性OROM2S获取。这个命令每次传输的长度受NVMe MDTS限制,如果OROM2大小超过了MDTS(相当于预设的数据大小),则需要对数据进行分片,并通过多个UEFIBootstrap命令来加载。
加载过程中,设备中的固件程序需要接收UEFI Loader发送的UEFI Bootstrap命令,并从Flash中读取UEFI Config固件。可以设置好OROM2分片大小,加载过程不需要占用太多内存空间。
图9是根据本申请实施例的一种加载分片的流程图,如图9所示,可以但不限于包括以下步骤:
步骤S902,获取OROM2大小;
步骤S904,加载OROM2下一个分片;
步骤S906,确定分片是否加载完成,在确定分片已加载完成的情况下,执行步骤S908,在确定分片未加载完成的情况下,执行步骤S904;
步骤S908,OROM2校验。
需要说明的是,在UEFILoader程序中需要增加厂商自定义Bootstrap命令,如表1所示。
表1
其中,Generic Command用于表示Bootstrap命令的类别,Function用于表示Bootstrap命令的功能,例如,传输一片数据,Data Transfer用于表示单次命令传输数据的能力,Combined Opcode用于表示Bootstrap命令的标识,可以通过Bootstrap命令的标识调用Bootstrap命令,Command表示UEFI Bootstrap命令。
通过本申请实施例,在设备内存有限场景、PCIe Expansion ROM空间有限场景,可以加载超过PCIe Expansion ROM空间大小的UEFIOption ROM固件程序。Option ROM程序可以根据需要进行扩展,增加了UEFIOption ROM程序的功能。并且可以节省PCIe ExpansionROM空间,也能减少支持PCIe接口的芯片片内资源,从而减少芯片面积。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
在本实施例中还提供了一种服务器总线设备的驱动装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图10是根据本申请实施例的服务器总线设备的驱动装置的结构框图,应用于目标服务器,所述服务器总线设备是所述目标服务器上所连接的设备,所述服务器总线设备上部署的驱动程序包括:目标驱动程序以及一个或者多个参考驱动程序,所述驱动程序用于实现所述服务器总线设备的驱动过程,所述目标驱动程序用于实现目标阶段并按照驱动过程中各个驱动阶段的驱动顺序至少加载和运行所述一个或者多个参考驱动程序中的首个参考驱动程序,所述目标阶段至少包括所述驱动过程中的起始阶段,所述参考驱动程序用于实现所述驱动过程中的一个驱动阶段或者多个连续的驱动阶段,如图10所示,该装置包括:
获取模块1002,用于获取目标驱动请求,其中,所述目标驱动请求用于请求对服务器总线设备进行驱动;
加载模块1004,用于响应所述目标驱动请求,将所述目标驱动程序加载至所述目标服务器;
运行模块1006,用于在确定所述目标驱动程序已完成加载的情况下,在所述目标服务器上运行所述目标驱动程序,直至所述驱动程序完成运行,其中,所述一个或者多个参考驱动程序中除所述首个参考驱动程序之外的其他参考驱动程序的加载和运行功能在所述目标驱动程序中,或者,在所述其他参考驱动程序中首个驱动阶段的上一个驱动阶段所在的候选驱动程序中实现。
通过本申请实施例,服务器总线设备上部署的驱动程序包括目标驱动程序以及一个或者多个参考驱动程序,在对服务器总线设备进行驱动的情况下,将目标驱动程序加载至目标服务器,并且在开始运行目标驱动程序的情况下,同时加载一个或者多个参考驱动程序中的首个参考驱动程序,可以理解的是,实现了运行已完成加载的驱动程序和加载下一个驱动程序之间是并行执行的异步操作,通过这样的方式,一方面,将驱动程序进行划分,减少了每次加载至目标服务器的驱动程序的数据量,另一方面,在开始执行已完成加载的驱动程序的情况下,同时加载下一个驱动程序到目标服务器,节省了加载驱动程序到目标服务器所需的时间,极大的提升了加载驱动程序到目标服务器的速度,因此,可以解决服务器总线设备的驱动效率较低问题,达到提升服务器总线设备的驱动效率效果。
在一个示范性实施例中,所述加载模块,包括:
第一确定单元,用于确定所述目标服务器的目标类型,其中,所述服务器总线设备与所述目标类型的所述目标服务器匹配;
第二确定单元,用于从所述服务器总线设备的第一内存中的目标镜像文件中确定所述目标类型所对应的目标镜像子文件,其中,所述目标镜像文件中包括一个或者多个镜像子文件,所述一个或者多个子镜像文件包括所述目标镜像子文件,所述一个或者多个子镜像文件中的每个镜像子文件对应与所述服务器总线设备匹配的服务器的一个类型;
第三确定单元,用于从所述目标镜像子文件中确定所述目标驱动程序,并将所述目标驱动程序加载至所述目标服务器。
在一个示范性实施例中,所述第二确定单元,用于:
确定所述目标镜像子文件在所述目标镜像文件中的第一起始地址和第一数据大小;在所述目标镜像文件中从所述第一起始地址开始,获取所述第一数据大小的数据,得到所述目标镜像子文件;或者
确定所述目标镜像子文件在所述目标服务器中的第一起始访问地址和所述第一数据大小,其中,所述第一起始访问地址是所述第一起始地址在所述目标服务器中所对应的起始地址;在所述目标服务器中从所述第一起始访问地址开始,获取所述第一数据大小的数据,得到所述目标镜像子文件。
在一个示范性实施例中,所述第三确定单元,用于:
确定所述目标驱动程序在所述目标镜像子文件中的第二起始地址和第二数据大小;在所述目标镜像子文件中从所述第二起始地址开始,获取所述第二数据大小的数据,得到所述目标驱动程序;或者
确定所述目标驱动程序在所述目标服务器中的第二起始访问地址和所述第二数据大小,其中,所述第二起始访问地址是所述第二起始地址在所述目标服务器中所对应的起始地址;在所述目标服务器中从所述第二起始访问地址开始,获取所述第二数据大小的数据,得到所述目标驱动程序。
在一个示范性实施例中,所述第三确定单元,用于:
将所述第一内存中的所述目标驱动程序加载至所述服务器总线设备的第三内存中;
在确定所述目标驱动程序已完成加载的情况下,将所述第三内存中的所述目标驱动程序加载至所述目标服务器的第二内存中。
在一个示范性实施例中,所述运行模块,包括:
第四确定单元,用于在所述目标驱动程序开始运行的情况下,确定所述首个参考驱动程序在目标镜像子文件中的第三起始地址和第三数据大小,其中,所述目标镜像子文件中包括所述首个参考驱动程序,所述目标镜像子文件是从所述服务器总线设备的第一内存中的目标镜像文件中确定的所述目标服务器的目标类型所对应的镜像子文件,所述目标镜像文件中包括一个或者多个镜像子文件,所述一个或者多个子镜像文件包括所述目标镜像子文件,所述一个或者多个子镜像文件中的每个镜像子文件对应与所述服务器总线设备匹配的服务器的一个类型,所述每个镜像子文件包括对应的与一个类型的服务器匹配的所述服务器总线设备的驱动程序;
加载单元,用于在所述第三数据大小大于或者等于预设的数据大小阈值的情况下,根据所述第三起始地址、所述第三数据大小和预设的数据大小将所述首个参考驱动程序加载至所述目标服务器中;
运行单元,用于在所述目标服务器上运行所述首个参考驱动程序,直至所述驱动程序完成运行。
在一个示范性实施例中,所述加载单元,用于:
获取一组加载命令,其中,所述一组加载命令是在所述第三数据大小大于或者等于预设的数据大小阈值的情况下,在所述目标服务器的第二内存中运行所述目标驱动程序得到的,所述一组加载命令中的各个加载命令用于请求将所述预设的数据大小的数据加载至所述目标服务器中;
响应所述一组加载命令中的第一加载命令,在所述目标镜像子文件中,从所述第三起始地址开始,获取所述预设的数据大小的数据,得到第一部分数据,并将所述第一部分数据加载至所述第二内存中,其中,所述第一加载命令是所述一组加载命令中的首个加载命令,所述第一加载命令用于请求在所述目标镜像子文件中从所述第三起始地址开始的所述预设的数据大小的数据加载至所述第二内存中;
在所述第一部分数据已完成加载、且第四起始地址小于所述第三起始地址与所述第三数据大小之和的情况下,响应所述一组加载命令中的第二加载命令,在所述目标镜像子文件中,从所述第四起始地址开始,获取所述预设的数据大小的数据,得到第二部分数据,并将所述第二部分数据加载至所述第二内存中,其中,所述第二加载命令是所述一组加载命令中所述第一加载命令的下一个加载命令,所述第二加载命令用于请求将在所述目标镜像子文件中从第四起始地址开始的所述预设的数据大小的数据加载至所述第二内存中,所述第四起始地址等于所述第三起始地址与所述预设的数据大小之和;
在所述第一部分数据已完成加载、且所述第四起始地址大于或者等于所述第三起始地址与所述第三数据大小之和的情况下,停止从所述目标镜像子文件中获取数据,并确定所述首个参考驱动程序已完成加载。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本申请的实施例还提供了一种电子设备,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述电子设备还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本申请的实施例还提供了一种计算机程序产品,上述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述任一项方法实施例中的步骤。
本申请的实施例还提供了另一种计算机程序产品,包括非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储计算机程序,所述计算机程序被处理器执行时实现上述任一项方法实施例中的步骤。
本申请的实施例还提供了一种计算机程序,该计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中;计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述任一项方法实施例中的步骤。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种服务器总线设备的驱动方法,其特征在于,
应用于目标服务器,所述服务器总线设备是所述目标服务器上所连接的设备,所述服务器总线设备上部署的驱动程序包括:目标驱动程序以及一个或者多个参考驱动程序,所述驱动程序用于实现所述服务器总线设备的驱动过程,所述目标驱动程序用于实现目标阶段并按照驱动过程中各个驱动阶段的驱动顺序至少加载和运行所述一个或者多个参考驱动程序中的首个参考驱动程序,所述目标阶段至少包括所述驱动过程中的起始阶段,所述参考驱动程序用于实现所述驱动过程中的一个驱动阶段或者多个连续的驱动阶段,所述方法包括:
获取目标驱动请求,其中,所述目标驱动请求用于请求对服务器总线设备进行驱动;
响应所述目标驱动请求,将所述目标驱动程序加载至所述目标服务器;
在确定所述目标驱动程序已完成加载的情况下,在所述目标服务器上运行所述目标驱动程序,直至所述驱动程序完成运行,其中,所述一个或者多个参考驱动程序中除所述首个参考驱动程序之外的其他参考驱动程序的加载和运行功能在所述目标驱动程序中,或者,在所述其他参考驱动程序中首个驱动阶段的上一个驱动阶段所在的候选驱动程序中实现。
2.根据权利要求1所述的方法,其特征在于,
所述将所述目标驱动程序加载至所述目标服务器,包括:
确定所述目标服务器的目标类型,其中,所述服务器总线设备与所述目标类型的所述目标服务器匹配;
从所述服务器总线设备的第一内存中的目标镜像文件中确定所述目标类型所对应的目标镜像子文件,其中,所述目标镜像文件中包括一个或者多个镜像子文件,所述一个或者多个子镜像文件包括所述目标镜像子文件,所述一个或者多个子镜像文件中的每个镜像子文件对应与所述服务器总线设备匹配的服务器的一个类型,所述每个镜像子文件包括对应的与一个类型的服务器匹配的所述服务器总线设备的驱动程序;
从所述目标镜像子文件中确定所述目标驱动程序,并将所述目标驱动程序加载至所述目标服务器。
3.根据权利要求2所述的方法,其特征在于,
所述从所述服务器总线设备的第一内存中的目标镜像文件中确定所述目标类型所对应的目标镜像子文件,包括:
确定所述目标镜像子文件在所述目标镜像文件中的第一起始地址和第一数据大小;在所述目标镜像文件中从所述第一起始地址开始,获取所述第一数据大小的数据,得到所述目标镜像子文件;或者
确定所述目标镜像子文件在所述目标服务器中的第一起始访问地址和所述第一数据大小,其中,所述第一起始访问地址是所述第一起始地址在所述目标服务器中所对应的起始地址;在所述目标服务器中从所述第一起始访问地址开始,获取所述第一数据大小的数据,得到所述目标镜像子文件。
4.根据权利要求2所述的方法,其特征在于,
所述从所述目标镜像子文件中确定所述目标驱动程序,包括:
确定所述目标驱动程序在所述目标镜像子文件中的第二起始地址和第二数据大小;在所述目标镜像子文件中从所述第二起始地址开始,获取所述第二数据大小的数据,得到所述目标驱动程序;或者
确定所述目标驱动程序在所述目标服务器中的第二起始访问地址和所述第二数据大小,其中,所述第二起始访问地址是所述第二起始地址在所述目标服务器中所对应的起始地址;在所述目标服务器中从所述第二起始访问地址开始,获取所述第二数据大小的数据,得到所述目标驱动程序。
5.根据权利要求2所述的方法,其特征在于,
所述将所述目标驱动程序加载至所述目标服务器,包括:
将所述第一内存中的所述目标驱动程序加载至所述服务器总线设备的第三内存中;
在确定所述目标驱动程序已完成加载的情况下,将所述第三内存中的所述目标驱动程序加载至所述目标服务器的第二内存中。
6.根据权利要求1所述的方法,其特征在于,
所述在确定所述目标驱动程序已完成加载的情况下,在所述目标服务器上运行所述目标驱动程序,直至所述驱动程序完成运行,包括:
在所述目标驱动程序开始运行的情况下,确定所述首个参考驱动程序在目标镜像子文件中的第三起始地址和第三数据大小,其中,所述目标镜像子文件中包括所述首个参考驱动程序,所述目标镜像子文件是从所述服务器总线设备的第一内存中的目标镜像文件中确定的所述目标服务器的目标类型所对应的镜像子文件,所述目标镜像文件中包括一个或者多个镜像子文件,所述一个或者多个子镜像文件包括所述目标镜像子文件,所述一个或者多个子镜像文件中的每个镜像子文件对应与所述服务器总线设备匹配的服务器的一个类型,所述每个镜像子文件包括对应的与一个类型的服务器匹配的所述服务器总线设备的驱动程序;
在所述第三数据大小大于或者等于预设的数据大小阈值的情况下,根据所述第三起始地址、所述第三数据大小和预设的数据大小将所述首个参考驱动程序加载至所述目标服务器中;
在所述目标服务器上运行所述首个参考驱动程序,直至所述驱动程序完成运行。
7.根据权利要求6所述的方法,其特征在于,
所述根据所述第三起始地址、所述第三数据大小和预设的数据大小将所述首个参考驱动程序加载至所述目标服务器中,包括:
获取一组加载命令,其中,所述一组加载命令是在所述第三数据大小大于或者等于预设的数据大小阈值的情况下,在所述目标服务器的第二内存中运行所述目标驱动程序得到的,所述一组加载命令中的各个加载命令用于请求将所述预设的数据大小的数据加载至所述目标服务器中;
响应所述一组加载命令中的第一加载命令,在所述目标镜像子文件中,从所述第三起始地址开始,获取所述预设的数据大小的数据,得到第一部分数据,并将所述第一部分数据加载至所述第二内存中,其中,所述第一加载命令是所述一组加载命令中的首个加载命令,所述第一加载命令用于请求在所述目标镜像子文件中从所述第三起始地址开始的所述预设的数据大小的数据加载至所述第二内存中;
在所述第一部分数据已完成加载、且第四起始地址小于所述第三起始地址与所述第三数据大小之和的情况下,响应所述一组加载命令中的第二加载命令,在所述目标镜像子文件中,从所述第四起始地址开始,获取所述预设的数据大小的数据,得到第二部分数据,并将所述第二部分数据加载至所述第二内存中,其中,所述第二加载命令是所述一组加载命令中所述第一加载命令的下一个加载命令,所述第二加载命令用于请求将在所述目标镜像子文件中从第四起始地址开始的所述预设的数据大小的数据加载至所述第二内存中,所述第四起始地址等于所述第三起始地址与所述预设的数据大小之和;
在所述第一部分数据已完成加载、且所述第四起始地址大于或者等于所述第三起始地址与所述第三数据大小之和的情况下,停止从所述目标镜像子文件中获取数据,并确定所述首个参考驱动程序已完成加载。
8.一种服务器总线设备的驱动装置,其特征在于,
应用于目标服务器,所述服务器总线设备是所述目标服务器上所连接的设备,所述服务器总线设备上部署的驱动程序包括:目标驱动程序以及一个或者多个参考驱动程序,所述驱动程序用于实现所述服务器总线设备的驱动过程,所述目标驱动程序用于实现目标阶段并按照驱动过程中各个驱动阶段的驱动顺序至少加载和运行所述一个或者多个参考驱动程序中的首个参考驱动程序,所述目标阶段至少包括所述驱动过程中的起始阶段,所述参考驱动程序用于实现所述驱动过程中的一个驱动阶段或者多个连续的驱动阶段,所述装置包括:获取模块,用于获取目标驱动请求,其中,所述目标驱动请求用于请求对服务器总线设备进行驱动;
加载模块,用于响应所述目标驱动请求,将所述目标驱动程序加载至所述目标服务器;
运行模块,用于在确定所述目标驱动程序已完成加载的情况下,在所述目标服务器上运行所述目标驱动程序,直至所述驱动程序完成运行,其中,所述一个或者多个参考驱动程序中除所述首个参考驱动程序之外的其他参考驱动程序的加载和运行功能在所述目标驱动程序中,或者,在所述其他参考驱动程序中首个驱动阶段的上一个驱动阶段所在的候选驱动程序中实现。
9.一种计算机可读存储介质,其特征在于,
所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述权利要求1至7任一项中所述的方法的步骤。
10.一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,
所述处理器执行所述计算机程序时实现所述权利要求1至7任一项中所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410234449.8A CN117891530A (zh) | 2024-02-29 | 2024-02-29 | 服务器总线设备的驱动方法及装置、存储介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410234449.8A CN117891530A (zh) | 2024-02-29 | 2024-02-29 | 服务器总线设备的驱动方法及装置、存储介质和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117891530A true CN117891530A (zh) | 2024-04-16 |
Family
ID=90641018
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410234449.8A Pending CN117891530A (zh) | 2024-02-29 | 2024-02-29 | 服务器总线设备的驱动方法及装置、存储介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117891530A (zh) |
-
2024
- 2024-02-29 CN CN202410234449.8A patent/CN117891530A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI416409B (zh) | 用於從多媒體卡/安全數位卡裝置將主機裝置開機之方法、可從多媒體卡/安全數位卡裝置開機之主機裝置、及可將主機裝置開機之多媒體卡/安全數位卡裝置 | |
CN111857840B (zh) | 基本输入输出系统bios启动方法及装置 | |
CN109426613B (zh) | 在uefi中检索调试数据的方法及其电脑系统 | |
CN111240238B (zh) | 一种芯片控制系统 | |
US7127603B2 (en) | System and method for manufacture of information handling systems with selective option ROM executions | |
US20100235461A1 (en) | Network device and method of sharing external storage device | |
CN112306581B (zh) | 一种基板管理控制器管理bios配置的方法及介质 | |
US20170249165A1 (en) | Usb wireless network card configuration methods, host, usb wireless network card and communication system | |
US9934120B2 (en) | Method and apparatus for updating a system on chip (SOC) image from a host computer system without using DMA | |
CN110297726B (zh) | 具有串行存在检测数据的计算机系统及内存模块控制方法 | |
CN112035393B (zh) | 一种节约双片上系统存储资源的方法、双片上系统 | |
CN113656049A (zh) | 一种操作系统部署方法、装置及电子设备和存储介质 | |
CN116627472A (zh) | 高速外围组件设备的固件程序升级方法及服务器 | |
CN112162794A (zh) | 一种单板启动方法、装置、单板以及网络设备 | |
CN117891530A (zh) | 服务器总线设备的驱动方法及装置、存储介质和电子设备 | |
CN114691223A (zh) | 一种通过网络传输bios日志的方法及装置 | |
CN112667544A (zh) | 一种控制主板插槽使能的方法、装置、系统及介质 | |
CN116243994B (zh) | 一种存储设备的驱动加载方法、操作系统启动方法及系统 | |
CN117687703B (zh) | 服务器的启动方法、装置、系统、存储介质和电子设备 | |
CN114579198B (zh) | 内存芯片的启动方法、装置、计算机设备及存储介质 | |
CN110928582B (zh) | 信息处理设备和配置信息处理设备的目标装置的方法 | |
JP2002024024A (ja) | 異なる操作モードを利用してアダプタ構成ルーチンを実行する方法およびシステム | |
CN113656082A (zh) | 网络内核加载方法、管理服务器及应用服务器 | |
CN116360995A (zh) | 一种pcie资源分配方法、装置及介质 | |
CN116302499A (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 |