本技术涉及计算机通信,尤其涉及一种ipmi命令传输方法、装置、系统及电子设备。
背景技术:
1、基板管理控制器(board management controller,bmc)是对主基板提供智能服务的控制器,其独立于cpu(central processing unit)工作。基本输入输出系统(bios,basicinput output system)的主要功能是为计算机提供最底层的硬件设置,控制、启动操作系统,向作业系统提供一些系统参数等,其运行在主机侧。
2、ipmi(intelligent platform management interface,智能平台管理接口)属于上层协议,是管理intel结构的企业系统的外围设备采用的一种工业标准。现有技术中bios与bmc之间ipmi命令的传输多使用kcs(keyboard controller style,键盘控制器样式)与bt(bit torrent,比特流)接口。
3、使用kcs接口或bt接口传输ipmi命令的速度较慢,且硬件需要具备kcs接口或bt接口,成本较高。
技术实现思路
1、本技术的目的是提供一种ipmi命令传输方法、装置、系统及电子设备,用于提高ipmi命令传输速度,降低成本。
2、本技术提供一种ipmi命令传输方法,应用于bios,包括:
3、在bmc的第一存储器未写满的情况下,将所述bios所在主机的第一内存空间中第一ipmi命令的数据包通过pcie总线发送给所述第一存储器;
4、接收所述bmc通过所述pcie总线向所述主机的第二内存空间发送的第二ipmi命令的数据包,所述第二ipmi命令位于所述bmc的第二存储器,所述第二ipmi命令由所述bmc在所述第二内存空间未写满的情况下发送。
5、可选地,所述在bmc的第一存储器未写满的情况下,将所述bios所在主机的第一内存空间中第一ipmi命令的数据包通过pcie总线发送给所述第一存储器,包括:
6、在所述第一存储器对应的第一寄存器复位,且所述第一存储器未写满的情况下,将所述第一ipmi命令的数据包通过所述pcie总线写入所述第一存储器;
7、所述第一寄存器在所述第一ipmi命令的数据包存入所述第一存储器后置位,以触发所述第一存储器产生中断,通知所述bmc接收所述第一ipmi命令的数据包,所述第一寄存器在所述bmc接收完所述第一ipmi命令后复位。
8、可选地,所述第一存储器和所述第一内存空间有多个,所述第一存储器和所述第一内存空间一一对应;
9、所述在bmc的第一存储器未写满的情况下,将所述bios所在主机的第一内存空间中第一ipmi命令的数据包通过pcie总线发送给所述第一存储器,包括:
10、在任一所述第一内存空间对应的第一存储器的第一寄存器复位,且所述第一存储器的剩余容量大于所述第一ipmi命令的占用容量的情况下,将所述第一内存空间对应的第一存储器作为目标存储器;
11、在任一所述第一内存空间对应的第一存储器的第一寄存器置位,或任一所述第一内存空间对应的第一存储器的剩余容量小于等于所述第一ipmi命令的占用容量的情况下,从其他所述第一存储器中选择所述第一寄存器复位且剩余容量大于所述第一ipmi命令的占用容量的第一存储器作为所述目标存储器;
12、在提高对所述目标存储器的存入事件的优先级后,将所述第一ipmi命令的数据包通过所述pcie总线存入所述目标存储器,恢复对所述目标存储器的存入事件的优先级。
13、可选地,所述在bmc的第一存储器未写满的情况下,将所述bios所在主机的第一内存空间中第一ipmi命令的数据包通过pcie总线发送给所述第一存储器,包括:
14、为所述第一内存空间创建第一发送队列和第一发送事件;
15、将所述第一ipmi命令存入所述第一发送队列,唤醒第一发送事件;
16、在所述第一发送队列中存在所述第一ipmi命令,且所述第一存储器未写满的情况下,使用所述第一发送事件将所述第一发送队列中的第一ipmi命令的数据包通过所述pcie总线存入所述第一存储器;
17、在所述第一ipmi命令的数据包为回复包的情况下,所述第一发送事件进入睡眠状态;
18、在所述第一ipmi命令的数据包为请求包的情况下,等待所述bmc返回的回复包,根据所述回复包中所述第一ipmi命令的命令执行结果更新所述第一ipmi命令的状态。
19、可选地,所述第一ipmi命令的数据包或所述第二ipmi命令的数据包包括数据头和数据体;
20、所述数据头包括所述第一ipmi命令或所述第二ipmi命令的长度、校验值、命令编号,以及预设数据包标识,所述第一ipmi命令的请求包和回复包的命令编号相同,第二ipmi命令的请求包和回复包的命令编号相同;
21、所述数据体包括所述第一ipmi命令或所述第二ipmi命令的接收端设备编号、命令类别和命令字符;
22、所述回复包的数据体还包括命令执行结果。
23、可选地,所述接收所述bmc通过所述pcie总线向所述主机的第二内存空间发送的第二ipmi命令的数据包,包括:
24、在所述注浆对所述第二存储器对应的第二寄存器进行轮询,确定所述第二寄存器置位的情况下,从所述第二内存空间中接收所述第二ipmi命令的数据包;
25、所述第二寄存器在所述第二ipmi命令的数据包写入到所述第二内存空间后置位,在所述第二ipmi命令的数据包从所述第二内存空间接收完后复位。
26、可选地,所述第二存储器和所述第二内存空间有多个,所述第二存储器和所述第二内存空间一一对应;
27、所述在所述第二寄存器置位的情况下,从所述第二内存空间中接收所述第二ipmi命令的数据包,包括:
28、为所述第二内存空间创建第一接收队列、第一接收事件和第一执行事件;
29、在单个所述第二存储器对应的第二寄存器置位的情况下,使用所述第一接收事件从单个所述第二存储器对应的第二内存空间中接收所述第二ipmi命令的数据包,将单个所述第二存储器对应的第二寄存器复位;
30、在多个所述第二存储器对应的第二寄存器置位的情况下,使用所述第一接收事件从多个所述第二存储器对应的第二内存空间中取出所述第二ipmi命令的数据包,将多个所述第二存储器对应的第二寄存器复位,根据取出的所述第二ipmi命令的数据包中的预设数据包标识,确定取出的所述第二ipmi命令的数据包的排序;
31、根据所述第二ipmi命令的数据包中的所述第二ipmi命令的长度,确定是否已接收所述第二ipmi命令的全部数据包;
32、在未接收所述第二ipmi命令的全部数据包的情况下,继续对其他的所述第二存储器对应的第二寄存器进行轮询;
33、在已接收所述第二ipmi命令的全部数据包的情况下,将所述第二ipmi命令的全部数据包放入所述第一接收队列中,以供所述第一执行事件执行所述第一接收队列中第二ipmi命令的全部数据包。
34、本技术还提供一种ipmi命令传输方法,应用于bmc,包括:
35、在主机的第二内存空间未写满的情况下,将所述bmc的第二存储器中第二ipmi命令的数据包通过pcie总线发送给所述第二内存空间;
36、在所述主机上的bios通过所述pcie总线向所述bmc的第一存储器写入第一ipmi命令的数据包后,接收所述第一ipmi命令的数据包,所述第一ipmi命令位于所述主机的第一内存空间,所述第一ipmi命令由所述bios在所述第一存储器未写满的情况下写入。
37、可选地,所述在主机的第二内存空间未写满的情况下,将所述bmc的第二存储器中第二ipmi命令的数据包通过pcie总线发送给所述第二内存空间,包括:
38、在所述第二存储器对应的第二寄存器复位,且所述第二内存空间未写满的情况下,将所述第二ipmi命令的数据包通过所述pcie总线写入所述第二内存空间;
39、所述第二寄存器在所述第二ipmi命令的数据包存入所述第二内存空间后置位,在所述bios接收完所述第二内存空间内的第二ipmi命令后复位。
40、可选地,所述第二存储器和所述第二内存空间有多个,所述第二存储器和所述第二内存空间一一对应;
41、所述在主机的第二内存空间未写满的情况下,将所述bmc的第二存储器中第二ipmi命令的数据包通过pcie总线发送给所述第二内存空间,包括:
42、在任一所述第二存储器的第二寄存器复位,且任一所述第二存储器对应的第二内存空间的剩余容量大于所述第二ipmi命令的占用容量的情况下,将任一所述第二存储器对应的第二内存空间作为目标内存空间;
43、在任一所述第二存储器的第二寄存器置位,或所述任一所述第二存储器对应的第二内存空间的剩余容量小于等于所述第二ipmi命令的占用容量的情况下,从其他所述第二内存空间中选择对应的所述第二存储器的第二寄存器复位且剩余容量大于所述第二ipmi命令的占用容量的第二内存空间作为所述目标内存空间;
44、在提高对所述目标内存空间的存入事件的优先级后,将所述第二ipmi命令的数据包通过所述pcie总线存入所述目标内存空间,恢复对所述目标内存空间的存入事件的优先级。
45、可选地,所述在主机的第二内存空间未写满的情况下,将所述bmc的第二存储器中第二ipmi命令的数据包通过pcie总线发送给所述第二内存空间,包括:
46、为所述第二存储器创建第二发送队列和第二发送事件;
47、将所述第二ipmi命令存入所述第二发送队列,唤醒第二发送事件,使用所述第二发送事件对所述第二发送队列进行轮询;
48、在所述第二发送队列中存在所述第二ipmi命令,且所述第二内存空间未写满的情况下,使用所述第二发送事件将所述第二发送队列中的第二ipmi命令的数据包通过所述pcie总线存入所述第二内存空间;
49、在所述第二ipmi命令的数据包为回复包的情况下,所述第二发送事件进入睡眠状态;
50、在所述第二ipmi命令的数据包为请求包的情况下,等待所述bios返回的回复包,根据所述回复包中所述第二ipmi命令的命令执行结果更新所述第二ipmi命令的状态。
51、可选地,所述第一ipmi命令的数据包或所述第二ipmi命令的数据包包括数据头和数据体;
52、所述数据头包括所述第一ipmi命令或所述第二ipmi命令的长度、校验值、命令编号,以及预设数据包标识,所述第一ipmi命令的请求包和回复包的命令编号相同,第二ipmi命令的请求包和回复包的命令编号相同;
53、所述数据体包括所述第一ipmi命令或所述第二ipmi命令的接收端设备编号、命令类别和命令字符;
54、所述回复包的数据体还包括命令执行结果。
55、可选地,所述在所述主机上的bios通过所述pcie总线向所述bmc的第一存储器写入第一ipmi命令的数据包后,接收所述第一ipmi命令的数据包,包括:
56、在所述bios向所述第一存储器存入第一ipmi命令的数据包后,所述第一存储器的第一寄存器置位,触发所述第一存储器产生中断;
57、在所述第一存储器产生中断的情况下接收所述第一ipmi命令的数据包,在接收完所述第一ipmi命令的数据包后,所述第一寄存器复位。
58、可选地,所述第一存储器和所述第一内存空间有多个,所述第一存储器和所述第一内存空间一一对应;
59、所述在所述第一存储器产生中断的情况下接收所述第一ipmi命令的数据包,包括:
60、为所述第一存储器创建第二接收队列、第二接收事件和第二执行事件;
61、在所述第一存储器产生中断的情况下,使用所述第二接收事件从所述第一存储器中取出所述第一ipmi命令;
62、根据所述第一ipmi命令的数据包中的所述第一ipmi命令的长度,确定是否已接收所述第一ipmi命令的全部数据包;
63、在未接收所述第一ipmi命令的全部数据包的情况下,继续确定其他的所述第一存储器是否产生中断;
64、在已接收所述第一ipmi命令的全部数据包的情况下,将所述第一ipmi命令的全部数据包放入所述第二接收队列中,以供所述第二执行事件执行所述第二接收队列中第一ipmi命令的全部数据包。
65、本技术还提供一种ipmi命令传输装置,包括:
66、第一发送模块,用于在bmc的第一存储器未写满的情况下,将所述bios所在主机的第一内存空间中第一ipmi命令的数据包通过pcie总线发送给所述第一存储器;
67、第一接收模块,用于接收所述bmc通过所述pcie总线向所述主机的第二内存空间发送的第二ipmi命令的数据包,所述第二ipmi命令位于所述bmc的第二存储器,所述第二ipmi命令由所述bmc在所述第二内存空间未写满的情况下发送。
68、本技术还提供一种ipmi命令传输装置,包括:
69、第二发送模块,用于在主机的第二内存空间未写满的情况下,将所述bmc的第二存储器中第二ipmi命令的数据包通过pcie总线发送给所述第二内存空间;
70、第二接收模块,用于在所述主机上的bios通过所述pcie总线向所述bmc的第一存储器写入第一ipmi命令的数据包后,接收所述第一ipmi命令的数据包,所述第一ipmi命令位于所述主机的第一内存空间,所述第一ipmi命令由所述bios在所述第一存储器未写满的情况下写入。
71、本技术还提供一种ipmi命令传输系统,包括上述两个ipmi命令传输装置。
72、本技术还提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现如上述任一种所述ipmi命令传输方法的步骤。
73、本技术还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述ipmi命令传输方法的步骤。
74、本技术还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述ipmi命令传输方法的步骤。
75、本技术提供的ipmi命令传输方法、装置、系统及电子设备,通过bios将所述bios所在主机的第一内存空间中第一ipmi命令的数据包通过pcie总线发送给bmc的第一存储器,通过bios接收bmc通过所述pcie总线向所述主机的第二内存空间发送的第二存储器内第二ipmi命令的数据包,一方面bios和bmc之间通过pcie总线传输ipmi命令,提高ipmi命令的传输速度,降低硬件成本;另一方面bios的发送数据通道与接收数据通道互相独立,减少数据发送与接收之间的影响,提高数据传输的准确性。