一种PCI总线设备的热复位方法及相关装置与流程

文档序号:26050518发布日期:2021-07-27 15:25阅读:79来源:国知局
一种PCI总线设备的热复位方法及相关装置与流程

本申请涉及服务器技术领域,特别涉及一种pci总线设备的热复位方法;还涉及一种pci总线设备的热复位装置、设备以及计算机可读存储介质。



背景技术:

消费类电子产品、工控类电子产品、数据中心的服务器产品等都需要使用大量的外设设备。其中,有的外设设备使用lpc(lowpincount,低针脚数)总线即低速总线,有的外设设备使用spi(serialperipheralinterface,串行外设接口)总线,而在服务器产品中外设设备使用最多的是pci(peripheralcomponentinterconnect,外设部件互连标准)总线。pci总线设备包括了pci标准网卡,pci标准nvme硬盘,pcie标准的存储卡等。pci总线设备在系统热重启时都需要进行热复位的动作,这样在服务器的启动过程中方可再次获取pci总线设备的驱动程序并使之能够正常使用。

虽然服务器断电后重新上电也能够加载pci总线设备的驱动并正常识别设备,但是这种每次断电再次开机的做法效率低,会严重影响数据中心运维人员的工作量,因此硬件工程师在设计服务器产品时都会使用一个systemreset信号来实现所有的pci总线设备的热复位功能。然而,在新兴的arm(全称为advancedriscmachine,为英国acorn公司设计)服务器领域,受限技术成熟度及芯片厂商的设计导致没有systemreset信号,无法通过上述现有方式实现pci总线设备的热复位功能。

由此如何实现arm服务器热复位pci总线设备已成为本领域技术人员亟待解决的技术问题。



技术实现要素:

本申请的目的是提供一种pci总线设备的热复位方法,能够实现arm服务器热复位pci总线设备。本申请的另一个目的是提供一种pci总线设备的热复位装置、设备以及计算机可读存储介质,均具有上述技术效果。

为解决上述技术问题,本申请提供了一种pci总线设备的热复位方法,包括:

在预设的状态机表中查找触发pci总线设备进行热复位的gpio状态值;

根据触发pci总线设备进行热复位的所述gpio状态值,设置gpio信号的值;

输出所述gpio信号至所述pci总线设备,以触发所述pci总线设备进行热复位。

可选的,所述gpio信号的个数为四个。

可选的,所述在预设的状态机表中查找触发pci总线设备进行热复位的gpio状态值包括:

根据cpu位置、根端口以及索引值在所述状态机表中查找触发pci总线设备进行热复位的gpio状态值。

可选的,根据触发pci总线设备进行热复位的所述gpio状态值,设置gpio信号的值包括:

根据触发pci总线设备进行热复位的所述gpio状态值,拉低相应的所述gpio信号。

可选的,拉低相应的所述gpio信号并输出所述gpio信号至所述pci总线设备,以触发所述pci总线设备进行热复位后还包括:

将所述gpio信号还原为高电平状态。

可选的,所述将所述gpio信号还原为高电平状态包括:

拉低所述gpio信号并延时预设时长后将所述gpio信号还原为高电平状态。

可选的,在预设的状态机表中查找触发pci总线设备进行热复位的gpio状态值前还包括:

判断pci总线上是否存在pci总线设备;

若pci总线上存在pci总线设备,则在预设的状态机表中查找触发pci总线设备进行热复位的gpio状态值。

为解决上述技术问题,本申请还提供了一种pci总线设备的热复位装置,包括:

查找模块,用于在预设的状态机表中查找触发pci总线设备进行热复位的gpio状态值;

设置模块,用于根据触发pci总线设备进行热复位的所述gpio状态值,设置gpio信号的值;

输出模块,用于输出所述gpio信号至所述pci总线设备,以触发所述pci总线设备进行热复位。

为解决上述技术问题,本申请还提供了一种pci总线设备的热复位设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上任一项所述的pci总线设备的热复位方法的步骤。

为解决上述技术问题,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述的pci总线设备的热复位方法的步骤。

本申请所提供的pci总线设备的热复位方法,包括:在预设的状态机表中查找触发pci总线设备进行热复位的gpio状态值;根据触发pci总线设备进行热复位的所述gpio状态值,设置gpio信号的值;输出所述gpio信号至所述pci总线设备,以触发所述pci总线设备进行热复位。

可见,本申请所提供的pci总线设备的热复位方法,利用arm服务器的gpio信号触发pci总线设备进行热复位,通过设置输出至pci总线设备的gpio信号的值而实现pci总线设备的热复位功能,保证了arm服务器在热重启或热复位后pci总线设备仍然可以正常使用,有利于arm服务器的大批量部署与应用。

本申请所提供的pci总线设备的热复位装置、设备以及计算机可读存储介质均具有上述技术效果。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例所提供的一种pci总线设备的热复位方法的流程示意图;

图2为本申请实施例所提供的一种pci总线设备的热复位装置的示意图;

图3为本申请实施例所提供的一种pci总线设备的热复位设备的示意图。

具体实施方式

本申请的核心是提供一种pci总线设备的热复位方法,能够实现arm服务器热复位pci总线设备。本申请的另一个核心是提供一种pci总线设备的热复位装置、设备以及计算机可读存储介质,均具有上述技术效果。

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

请参考图1,图1为本申请实施例所提供的一种pci总线设备的热复位方法的流程示意图,参考图1所示,该方法主要包括:

s101:在预设的状态机表中查找触发pci总线设备进行热复位的gpio状态值;

具体的,预先针对每个pci总线设备设置其对应的gpio(general-purposeinput/output,通用输入输出)状态值,并将各个pci总线设备对应的gpio状态值整理得到状态机表。gpio状态值是能够触发pci总线设备进行热复位的值。不同的pci总线设备对应不同的gpio状态值。

设置各pci总线设备的gpio状态值时,结合pci总线带宽的拆分情况进行设置。在带宽不拆分的情况下,pci总线带宽为x16带宽。在带宽拆分的情况下,pci总线带宽可能拆分为x8x8带宽、x8x4x4带宽、x4x4x4x4等多种情况。

其中,在一种具体的实施方式中,上述在预设的状态机表中查找触发pci总线设备进行热复位的gpio状态值的方式为:根据cpu(centralprocessingunit,中央处理单元)位置、根端口以及索引值在所述状态机表中查找触发pci总线设备进行热复位的gpio状态值。

具体而言,本实施例中,以cpu位置、根端口即rootport以及索引值三个变量作为查找gpio状态值的依据,预先建立cpu位置、根端口以及索引值与gpio状态值的对应关系,实际查找中根据cpu位置、根端口以及索引值在所述状态机表中查找触发pci总线设备进行热复位的gpio状态值。

对于cpu位置、根端口以及索引值与gpio状态值的对应关系,可以进行差异性设置,本申请在此不做赘述。

s102:根据触发pci总线设备进行热复位的所述gpio状态值,设置gpio信号的值;

s103:输出所述gpio信号至所述pci总线设备,以触发所述pci总线设备进行热复位。

具体的,将arm服务器的gpio信号与各pci总线设备相连,bios(basicinputoutputsystem,基本输入输出系统)在枚举pci总线设备之前首先在预设的状态机表中查找触发pci总线设备进行热复位的gpio状态值,在查找到能够触发pci总线设备进行热复位的gpio状态值的基础上,进一步根据查找到的gpio状态值设置arm服务器的gpio信号的值,并将各gpio信号输出至pci总线设备,以触发所述pci总线设备进行热复位。

其中,在一种具体的实施方式中,gpio信号的个数为四个。

具体而言,本实施例借助arm服务器原生设计的四个gpio信号实现pci总线设备的热复位功能,将arm服务器的四个gpio信号均与各个pci总线设备相连,通过设置arm服务器的四个gpio信号的值并输出四个gpio信号至pci总线设备而触发pci总线设备进行热复位。

每个gpio信号有高、低电平两种状态,即每个gpio信号有逻辑0与逻辑1两种值。在arm服务器的四个gpio信号均与各pci总线设备相连的情况下,四个gpio信号的值具有较多的组合情况,可以控制较多的pci总线设备进行热复位。

另外,在一种具体的实施方式中,上述根据触发pci总线设备进行热复位的所述gpio状态值,设置gpio信号的值的方式为:根据触发pci总线设备进行热复位的所述gpio状态值,拉低相应的所述gpio信号。

具体而言,本实施例中默认arm服务器的各gpio信号为高电平状态,在设置gpio信号的值时,根据状态机表中记录的触发pci总线设备进行热复位的gpio状态值,拉低相应的gpio信号。

当arm服务器的四个gpio信号均与各pci总线设备相连时,在设置gpio信号的值时,根据状态机表中记录的触发pci总线设备进行热复位的gpio状态值,拉低其中部分或全部四个gpio信号。

例如,状态机表中记录的触发某个pci总线设备进行热复位的gpio状态值为12,对应的二进制值为1100,因此,此时将四个gpio信号中位于低位的两个gpio信号拉低,而保持四个gpio信号中位于高位的两个gpio信号为高电平状态。

不同的pci总线设备的gpio状态值不同,因此在触发pci总线设备热复位时通过逐一设置输出至pci总线设备的gpio信号的值,而逐一触发各个pci总线设备进行热复位,直到最后一个pci总线设备热复位后,bios执行正常的启动引导。

如果pci总线设备接收到的gpio信号是pci总线设备对应的能够触发pci总线设备进行热复位的信号,则pci总线设备在接收到gpio信号后进行热复位动作。相干,如果pci总线设备接收到的gpio信号不是pci总线设备对应的能够触发pci总线设备进行热复位的信号,则pci总线设备在接收到gpio信号后不会进行热复位动作。

例如,能够触发pci总线设备1进行热复位的四个gpio信号按序依次为0、0、1、0。能够触发pci总线设备2进行热复位的四个gpio信号按序依次为0、1、0、1。由此,当输出至pci总线设备1与pci总线设备2的四个gpio信号按序依次为0、1、0、1时,此时pci总线设备2在接收到gpio信号后进行热复位,而pci总线设备1不会进行热复位。当输出至pci总线设备1与pci总线设备2的四个gpio信号按序并非为0、1、0、1,也并非0、0、1、0时,此时pci总线设备1与pci总线设备2均不会进行热复位。

进一步,拉低相应的所述gpio信号并输出所述gpio信号至所述pci总线设备,以触发所述pci总线设备进行热复位后还包括:将所述gpio信号还原为高电平状态。

也就是说,根据所述状态机表中记录的触发pci总线设备热复位的gpio状态值,拉低相应的所述gpio信号,并输出各gpio信号触发所述pci总线设备进行热复位后,再将之前拉低的gpio信号拉高,恢复各gpio信号均为高电平状态,以便后续触发其他pci总线设备热复位。

其中,在一种具体的实施方式中,所述将所述gpio信号还原为高电平状态的方式为:拉低所述gpio信号并延时预设时长后将所述gpio信号还原为高电平状态。

具体而言,为了满足pci总线设备进行完全复位所需的时间要求,本实施例在拉低相应的gpio信号并延时预设时长(例如100ms)后,才将拉低的gpio信号拉高而还原为高电平状态,以此保证pci总线设备热复位有效。

进一步,在预设的状态机表中查找触发pci总线设备进行热复位的gpio状态值前还包括:判断pci总线上是否存在pci总线设备;若pci总线上存在pci总线设备,则在预设的状态机表中查找触发pci总线设备进行热复位的gpio状态值。

也就是说,pci总线上有pci总线设备的情况下,才执行在预设的状态机表中查找触发pci总线设备进行热复位的gpio状态值以及后续操作,而锐pci总线上没有pci总线设备,则无需执行在预设的状态机表中查找触发pci总线设备进行热复位的gpio状态值以及后续操作,arm服务器的各gpio信号持续为默认的高电平状态。

进一步,正常情况下,一定时间内可以触发所有的pci总线设备完成热复位,而若在一定时间后仍存在未完成热复位的pci总线设备,此时可能存在gpio状态值错误等异常,为此可在存在异常而无能触发所有的pci总线设备完成热复位的情况下,进行异常记录或提示,以便及时进行异常排查、修复。

综上所述,本申请所提供的pci总线设备的热复位方法,包括:在预设的状态机表中查找触发pci总线设备进行热复位的gpio状态值;根据触发pci总线设备进行热复位的所述gpio状态值,设置gpio信号的值;输出所述gpio信号至所述pci总线设备,以触发所述pci总线设备进行热复位。可见,本申请所提供的pci总线设备的热复位方法,利用arm服务器的gpio信号触发pci总线设备进行热复位,通过设置输出至pci总线设备的gpio信号的值而实现pci总线设备的热复位功能,保证了arm服务器在热重启或热复位后pci总线设备仍然可以正常使用,有利于arm服务器的大批量部署与应用。

本申请还提供了一种pci总线设备的热复位装置,下文描述的该装置可以与上文描述的方法相互对应参照。请参考图2,图2为本申请实施例所提供的一种pci总线设备的热复位装置的示意图,结合图2所示,该装置包括:

查找模块10,用于在预设的状态机表中查找触发pci总线设备进行热复位的gpio状态值;

设置模块20,用于根据触发pci总线设备进行热复位的所述gpio状态值,设置gpio信号的值;

输出模块30,用于输出所述gpio信号至所述pci总线设备,以触发所述pci总线设备进行热复位。

在上述实施例的基础上,可选的,所述gpio信号的个数为四个。

在上述实施例的基础上,可选的,所述查找模块10具体用于根据cpu位置、根端口以及索引值在所述状态机表中查找触发pci总线设备进行热复位的gpio状态值。

在上述实施例的基础上,可选的,所述设置模块20具体用于根据触发pci总线设备进行热复位的所述gpio状态值,拉低相应的所述gpio信号。

在上述实施例的基础上,可选的,还包括:

还原模块,用于在拉低相应的所述gpio信号并输出所述gpio信号至所述pci总线设备,以触发所述pci总线设备进行热复位后,将所述gpio信号还原为高电平状态。

在上述实施例的基础上,可选的,所述还原模块具体用于在拉低所述gpio信号并延时预设时长后将所述gpio信号还原为高电平状态。

在上述实施例的基础上,可选的,还包括:

判断模块,用于在预设的状态机表中查找触发pci总线设备进行热复位的gpio状态值前,判断pci总线上是否存在pci总线设备;若pci总线上存在pci总线设备,则在预设的状态机表中查找触发pci总线设备进行热复位的gpio状态值。

本申请所提供的pci总线设备的热复位装置,利用arm服务器的gpio信号触发pci总线设备进行热复位,通过设置输出至pci总线设备的gpio信号的值而实现pci总线设备的热复位功能,保证了arm服务器在热重启或热复位后pci总线设备仍然可以正常使用,有利于arm服务器的大批量部署与应用。

本申请还提供了一种pci总线设备的热复位设备,参考图3所示,该设备包括存储器1和处理器2。

存储器1,用于存储计算机程序;

处理器2,用于执行计算机程序实现如下的步骤:

在预设的状态机表中查找触发pci总线设备进行热复位的gpio状态值;根据触发pci总线设备进行热复位的所述gpio状态值,设置gpio信号的值;输出所述gpio信号至所述pci总线设备,以触发所述pci总线设备进行热复位。

对于本申请所提供的设备的介绍请参照上述方法实施例,本申请在此不做赘述。

本申请还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如下的步骤:

在预设的状态机表中查找触发pci总线设备进行热复位的gpio状态值;根据触发pci总线设备进行热复位的所述gpio状态值,设置gpio信号的值;输出所述gpio信号至所述pci总线设备,以触发所述pci总线设备进行热复位。

该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

对于本申请所提供的计算机可读存储介质的介绍请参照上述方法实施例,本申请在此不做赘述。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备以及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本申请所提供的pci总线设备的热复位方法、装置、设备以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1