一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

服务器组件信息收集方法、装置、设备及介质与流程

2022-02-20 00:18:57 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,特别涉及一种服务器组件信息收集方法、装置、设备及介质。


背景技术:

2.当前服务器中存在这样一类组件,它们在服务器操作系统启动之前便已经开始运行,并通过串口进行信息的输出。这类组件在运行过程中,会产生相应的能够表征其自身状态的组件信息,这些组件信息往往与服务器操作系统能否正常启动有着比较紧密的联系。例如,bios(即basis input output system,基本输入输出系统)作为这类组件的一种,在服务器操作系统的启动阶段起着非常重要的作用,它可以实现硬件自检、参数初始化、系统引导等重要功能,如果bios启动异常,也会影响着服务器操作系统的启动。
3.为此,如果在服务器操作系统启动之后能够将这类组件的组件信息保存至服务器的存储系统中,后续便可以在有需要时通过查阅并分析存储系统中保存下来的组件信息,以确定其与操作系统启动结果之间的联系,这对分析操作系统异常启动原因是有较大帮助的。然而,这类组件作为一种通过串口进行信息输出的组件,目前其所输出的组件信息是无法被直接保存在服务器的存储系统中,导致用户无法从服务器的存储系统中查询并分析上述组件信息。
4.综上可见,对于服务器中的在服务器操作系统启动之前运行的并基于串口进行数据输出的组件来说,如何将相应的组件信息保存至服务器的存储系统是目前有待解决的问题。


技术实现要素:

5.有鉴于此,本发明的目的在于提供一种服务器组件信息收集方法、装置、设备及介质,对于服务器中的在服务器操作系统启动之前运行的并基于串口进行数据输出的组件来说,将相应的组件信息保存至服务器的存储系统,方便后续的通过文件查看相应的组件信息,提高开发调试和故障定位的效率。其具体方案如下:
6.第一方面,本技术公开了一种服务器组件信息收集方法,应用于服务器中的目标组件,所述目标组件为在服务器操作系统启动之前运行的并基于串口进行数据输出的组件,其中,所述方法包括:
7.通过预先基于目标串行总线协议在ses程序与所述目标组件之间搭建的串行通信链路,将目标探测指令发送至所述ses程序;所述目标探测指令为用于检测所述ses程序是否已处于准备接收信息的状态的指令;
8.获取所述ses程序返回的针对所述目标探测指令的应答指令;
9.如果所述应答指令表明所述ses程序已处于准备接收信息的状态,则通过所述串行通信链路,将本地收集的组件信息传输至所述ses程序,以便所述ses程序将接收到的所述组件信息转发至主存储程序,并通过所述主存储程序将所述组件信息以文件形式进行保
存。
10.可选的,所述通过预先基于目标串行总线协议在ses程序与所述目标组件之间搭建的串行通信链路,将目标探测指令发送至所述ses程序之前,还包括:
11.基于目标串行总线协议在所述ses程序与所述目标组件之间搭建串行通信链路;
12.控制所述ses程序上电启动,并将所述ses程序配置为用于通过所述串行通信链路从主模块中获取信息的从模块,然后控制所述目标组件上电启动,并将所述目标组件配置为用于通过所述串行通信链路将自身信息传输至所述从模块的主模块。
13.可选的,所述基于目标串行总线协议在所述ses程序与所述目标组件之间搭建串行通信链路之前,还包括:
14.基于预设的用于表征协议复杂程度的协议参数,从多个串行总线协议中提取出每个所述串行总线协议中相应的目标协议参数;
15.确定每个串行总线协议中的每个所述目标协议参数各自表征的复杂度;
16.基于所述目标协议参数对应的所述复杂度以及预设的与所述目标协议参数对应的权重系数,计算每个所述串行总线协议对应的总复杂度;
17.将所述总复杂度小于预设复杂度阈值的一个所述串行总线协议作为所述目标串行总线协议。
18.可选的,所述基于目标串行总线协议在所述ses程序与所述目标组件之间搭建串行通信链路,包括:
19.基于两线式串行总线协议或串行外设接口协议在ses程序与所述目标组件之间搭建串行通信链路。
20.可选的,所述将本地收集的组件信息传输至所述ses程序,以便所述ses程序将接收到的所述组件信息转发至主存储程序,包括:
21.基于所述目标串行总线协议确定信息拆包规则,按照所述信息拆包规则将本地收集的组件信息拆分为多个信息包;
22.将所述多个信息包依次传输至所述ses程序,以便所述ses程序将接收到的所述多个信息包整合为所述组件信息并保存在本地,以及在预设状态信息保存页上为整合后的所述组件信息设置相应的标志位,然后将所述组件信息转发至主存储程序。
23.可选的,所述ses程序将接收到的所述组件信息转发至主存储程序之前,还包括:
24.触发启动控制指令,并利用所述启动控制指令控制所述主存储程序启动,以便所述主存储程序查询所述ses程序的所述预设状态信息保存页上是否保存有所述标志位,并基于查询结果确定是否向所述ses程序发送用于读取整合后的所述组件信息的读取指令。
25.第二方面,本技术公开了一种服务器组件信息收集方法,应用于ses程序,包括:
26.通过预先基于串行总线协议在ses程序与服务器的目标组件之间搭建的串行通信链路获取目标探测指令;所述目标组件为在服务器操作系统启动之前运行的并基于串口进行数据输出的组件,所述目标探测指令为所述目标组件触发的用于检测所述ses程序是否已处于准备接收信息的状态的指令;
27.向所述目标组件发送针对所述目标探测指令的应答指令;
28.如果所述应答指令表明自身已处于准备接收信息的状态,则通过所述串行通信链路接收由所述目标组件发送的组件信息;
29.将所述组件信息发送至主存储程序,以便所述主存储程序将所述组件信息以文件形式进行保存。
30.第三方面,本技术公开了一种服务器组件信息收集装置,应用于服务器中的目标组件,所述目标组件为在服务器操作系统启动之前运行的并基于串口进行数据输出的组件,其中,所述装置包括:
31.指令发送模块,用于通过预先基于目标串行总线协议在ses程序与所述目标组件之间搭建的串行通信链路,将目标探测指令发送至所述ses程序;所述目标探测指令为用于检测所述ses程序是否已处于准备接收信息的状态的指令;
32.指令获取模块,用于获取所述ses程序返回的针对所述目标探测指令的应答指令;
33.信息传输模块,用于如果所述应答指令表明所述ses程序已处于准备接收信息的状态,则通过所述串行通信链路,将本地收集的组件信息传输至所述ses程序,以便所述ses程序将接收到的所述组件信息转发至主存储程序,并通过所述主存储程序将所述组件信息以文件形式进行保存。
34.第四方面,本技术公开了一种计算机设备,包括:
35.存储器,用于保存计算机程序;
36.处理器,用于执行所述计算机程序,以实现前述公开的服务器组件信息收集方法的步骤。
37.第五方面,本技术公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的服务器组件信息收集方法的步骤。
38.可见,本技术提供了一种应用于服务器中的目标组件的服务器组件信息收集方法,首先通过预先基于目标串行总线协议在ses程序与所述目标组件之间搭建的串行通信链路,将目标探测指令发送至所述ses程序;所述目标组件为在服务器操作系统启动之前运行的并基于串口进行数据输出的组件,所述目标探测指令为用于检测所述ses程序是否已处于准备接收信息的状态的指令;然后获取所述ses程序返回的针对所述目标探测指令的应答指令;如果所述应答指令表明所述ses程序已处于准备接收信息的状态,则通过所述串行通信链路,将本地收集的组件信息传输至所述ses程序,以便所述ses程序将接收到的所述组件信息转发至主存储程序,并通过所述主存储程序将所述组件信息以文件形式进行保存。由此可见,本技术在向ses程序传输组件信息之前,通过获取ses程序已处于准备接收信息的状态的应答指令以确定ses程序能够接收组件信息,提高组件信息传输的可靠性;通过所述串行通信链路,将本地收集的组件信息传输至所述ses程序,实现ses程序中接收到的串口组件信息的目的,以便ses程序将接收到的所述组件信息转发至主存储程序,并通过所述主存储程序将所述组件信息以文件形式进行保存,这种简单的方式,完成了通过借助ses程序接收服务器组件信息,且后续进行读取服务器组件信息的目的。
附图说明
39.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
40.图1为本技术公开的一种服务器组件信息收集方法流程图;
41.图2为本技术公开的一种具体的服务器组件信息收集方法流程图;
42.图3为本技术公开的一种中央处理器与扩展卡之间的通信链路图;
43.图4为本技术公开的另一种服务器组件信息收集方法流程图;
44.图5为本技术公开的一种具体的服务器组件信息收集方法流程图;
45.图6为本技术公开的一种具体的服务器组件信息收集方法示意图;
46.图7为本技术公开的一种服务器组件信息收集装置结构示意图;
47.图8为本技术公开的一种计算机设备结构图。
具体实施方式
48.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
49.当前服务器中存在这样一类组件,它们在服务器操作系统启动之前便已经开始运行,并通过串口进行信息的输出。这类组件在运行过程中,会产生相应的能够表征其自身状态的组件信息,这些组件信息往往与服务器操作系统能否正常启动有着比较紧密的联系。然而,目前这类组件所输出的组件信息是无法被直接保存在服务器的存储系统中,导致用户无法从服务器的存储系统中查询并分析上述组件信息。
50.为此,对于服务器中的在服务器操作系统启动之前运行的并基于串口进行数据输出的组件来说,本发明实施例公开了一种服务器组件信息收集方法能够将相应的组件信息保存至服务器的存储系统。
51.参见图1所示,本发明实施例公开了一种服务器组件信息收集方法,应用于服务器中的目标组件,所述目标组件为在服务器操作系统启动之前运行的并基于串口进行数据输出的组件,该方法包括:
52.步骤s11:通过预先基于目标串行总线协议在ses程序与所述目标组件之间搭建的串行通信链路,将目标探测指令发送至所述ses程序;所述目标探测指令为用于检测所述ses程序是否已处于准备接收信息的状态的指令。
53.本实施例中,首先通过所述串行通信链路将所述目标探测指令发送至所述ses(即scsi enclosure service,其中,scsi即small computer system interface,小型计算机系统接口)程序,用来探测所述ses程序是否已做好接收信息准备,其中所述ses程序可以实现数据采集和状态上报,例如高频率循环读取设备的外围状态,如风扇、电压、风扇等信息,并做异常判定;当判定出现异常状态,则将其状态和信息上报给em线程,其中所述em线程作为存储主程序的一部分可以执行的任务如下:接收所述ses程序发来的数据和状态,更新内部数据;当检测到异常状态,则发起用户可以直观查看的告警,并通知主系统是否要针对异常做其他处理,如当某些关键元件温度超高,是否要进行关机保护;当主系统在程序运行中控制某个硬件,则需要经过所述em线程下发至所述ses程序,由所述ses程序实际控制,如读写vpd(即virtual product data,虚拟产品数据)配置信息,点亮某个异常控制灯等。
54.本实施例中,向ses程序传输组件信息之前,需要通过预先基于目标串行总线协议
在ses程序与目标组件之间搭建的串行通信链路向ses程序发送目标探测指令,该目标探测指令用于探测ses程序是否有响应,也即确认ses程序是否已处于准备接收组件信息的状态。其中,所述目标串行总线协议可以包括但不限于两线式串行总线协议(即i2c协议,inter-integrated circuit)或串行外设接口协议(即spi协议,serial peripheral interface)。
55.步骤s12:获取所述ses程序返回的针对所述目标探测指令的应答指令。
56.本实施例中,在ses程序接收到上述目标探测指令后,会向目标组件返回针对上述目标探测指令的应答结果,所述应答结果会表明ses程序是否已处于准备接收组件信息的状态,因此所述目标组件在获取该应答指令之后,以确定是否向ses程序传输组件信息。
57.步骤s13:如果所述应答指令表明所述ses程序已处于准备接收信息的状态,则通过所述串行通信链路,将本地收集的组件信息传输至所述ses程序,以便所述ses程序将接收到的所述组件信息转发至主存储程序,并通过所述主存储程序将所述组件信息以文件形式进行保存。
58.本实施例中,通过所述目标串行总线协议获取到的应答指令是基于所述ses程序基于是否处于数据准备接收状态返回的指令,以便后续基于应答指令选择是否进行组件信息传输,如果获取到的应答指令是用于表明所述ses程序未处于准备接收信息的状态,则可以选择延迟传输组件信息,并向所述ses程序发送目标探测指令直至获取到的应答指令表明所述ses程序已处于准备接收信息的状态。如果获取到的应答指令是用于表明所述ses程序已处于准备接收信息的状态,ses程序则会申请一定的内存空间,并做好接收组件信息的准备,其中,所述内存空间指多个固定长度的缓冲区;目标组件则会通过上述预先基于目标串行总线协议在ses程序与目标组件之间搭建的串行通信链路,将本地收集的组件信息传输至所述ses程序,以便所述ses程序将接收到的所述组件信息转发至主存储程序。
59.需要指出的是,上述将本地收集的组件信息传输至所述ses程序,以便所述ses程序将接收到的所述组件信息转发至主存储程序,具体可以包括:基于所述目标串行总线协议确定信息拆包规则,按照所述信息拆包规则将本地收集的组件信息拆分为多个信息包;将所述多个信息包依次传输至所述ses程序,以便所述ses程序将接收到的所述多个信息包整合为所述组件信息并保存在本地,以及在预设状态信息保存页上为整合后的所述组件信息设置相应的标志位,然后将所述组件信息转发至主存储程序。可以理解的是,不同的串行总线协议有不同的数据传输规定,例如,两线式串行总线协议规定,单次传输的数据信息长度最大为255个字节,那么对于大于255字节的信息包,需要对原信息进行信息拆包处理,并以多包发送的方式将原信息发送至接收方。本实施例中,由目标组件串口输出的组件信息通常大于255个字节,因此,根据上述两线式串行总线协议的规定,需要基于两线式串行总线协议确定信息拆包规则,并对该组件信息进行信息拆包处理,并将拆分后的多个信息包依次传输至ses程序,以便ses程序将接收到的所述多个信息包整合为所述组件信息并保存在本地。
60.例如,上述信息拆包规则可以定义为除最后一个信息包外,其余信息包的数据长度为128字节,同时可以将上述缓冲区的长度定为128个字节,那么假设本地收集的组件信息的总长度为1000个字节,那么根据信息拆包规则,会将组件信息拆分为8个信息包,其中前7个信息包的数据长度为128字节,第8个信息包的长度为104个字节之后,将这8个信息包
依次传输至ses程序,在ses程序接收到这8个信息包后,逐个保存于预先申请的缓冲区中,最后将这8个缓冲区的信息包进行整合得到所述组件信息,并保存在本地。
61.并且,将组件信息整合完整之后,还需要在预设状态信息保存页上为整合后的所述组件信息设置相应的标志位,以表示信息收集完成,以便后续主存储程序通过状态查询指令对该标志位进行查询,以确定ses程序是否将组件信息收集完整。通过这种方式避免了ses程序未将信息收集完整就转发至主存储程序,从而导致故障定位错误或者调试异常。本实施例中,上述预设状态信息保存页指page2,page2主要用于记录元件的状态信息。
62.可以理解的是,上述ses程序将接收到的所述组件信息转发至主存储程序之前,还可以包括:触发启动控制指令,并利用所述启动控制指令控制所述主存储程序启动,以便所述主存储程序查询所述ses程序的所述预设状态信息保存页上是否保存有所述标志位,并基于查询结果确定是否向所述ses程序发送用于读取整合后的所述组件信息的读取指令。本实施例中,通过目标组件触发的启动控制指令控制所述主存储程序启动后,主存储程序建立集群业务,并准备向ses程序发送相关指令。首先需要先向ses程序发送状态查询指令,所述状态查询指令主要用于查询ses程序的预设状态信息保存页上是否保存有上述标志位,该标志位用于表征ses程序是否已将组件信息收集完整,以便主存储程序基于查询结果确定是否向ses程序发送用于读取整合后的组件信息的读取指令。在一种具体实施方式中,如果查询到ses程序的预设状态信息保存页上保存有上述标志位,主存储程序则向ses程序发送读取指令,所述读取指令一方面用于查询上述整合后的组件信息的数据长度,另一方面接收由ses程序转发的上述整合后的组件信息,并将所述组件信息以文件形式保存。在另一种具体实施方式中,如果查询到ses程序的预设状态信息保存页上没有上述标志位,则说明ses程序还未将组件信息整合完整,因此还需每隔固定的时间段继续向ses程序发送状态查询指令,直到查询到ses程序的预设状态信息保存页上保存有上述标志位为止,以便进行后续组件信息读取步骤。需要注意的是,如果目标组件出现异常情况,则无法触发启动控制指令,也即无法控制所述主存储程序启动,此时可以利用所述ses程序提供一个cli(即command line interface,命令行界面),可以明文打印所述bios数据。例如当出现下面的异常场景,可以通过上述方法实现数据不丢失,并可以查询;当所述bios异常,导致所述主存储程序无法启动时,可以直接在所述ses程序上提供的所述cli直接查询所述bios数据,定位卡死原因;当所述主存储程序还没来得及时读取所述bios数据时,或者因为某种异常导致所述主存储程序无法正常启动时,在所述ses程序中做好备份,保证不丢失所述bios数据;所述ses程序与所述主存储程序是独立运行的,确保所述ses程序可以记录多次系统启动的bios记录,对系统频繁启动的场景,做记录,尤为重要,可以提高开发和定位问题的效率。
63.可见,本技术提供了一种应用于服务器中的目标组件的服务器组件信息收集方法,首先通过预先基于目标串行总线协议在ses程序与所述目标组件之间搭建的串行通信链路,将目标探测指令发送至所述ses程序;所述目标组件为在服务器操作系统启动之前运行的并基于串口进行数据输出的组件,所述目标探测指令为用于检测所述ses程序是否已处于准备接收信息的状态的指令;然后获取所述ses程序返回的针对所述目标探测指令的应答指令;如果所述应答指令表明所述ses程序已处于准备接收信息的状态,则通过所述串行通信链路,将本地收集的组件信息传输至所述ses程序,以便所述ses程序将接收到的所
述组件信息转发至主存储程序,并通过所述主存储程序将所述组件信息以文件形式进行保存。由此可见,本技术在向ses程序传输组件信息之前,通过获取ses程序已处于准备接收信息的状态的应答指令以确定ses程序能够接收组件信息,提高组件信息传输的可靠性;通过所述串行通信链路,将本地收集的组件信息传输至所述ses程序,实现ses程序中接收到的串口组件信息的目的,以便ses程序将接收到的所述组件信息转发至主存储程序,并通过所述主存储程序将所述组件信息以文件形式进行保存,利用这种简单的方式,完成了通过借助ses程序接收服务器组件信息,且后续进行读取服务器组件信息的目的。
64.参见图2所示,本发明实施例公开了一种具体的服务器组件信息收集方法,应用于服务器中的目标组件,所述目标组件为在服务器操作系统启动之前运行的并基于串口进行数据输出的组件,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化,具体包括:
65.步骤s21:基于目标串行总线协议在ses程序与目标组件之间搭建串行通信链路。
66.本实施例中,上述基于目标串行总线协议在ses程序与目标组件之间搭建串行通信链路之前,还可以包括:基于预设的用于表征协议复杂程度的协议参数,从多个串行总线协议中提取出每个所述串行总线协议中相应的目标协议参数;确定每个串行总线协议中的每个所述目标协议参数各自表征的复杂度;基于所述目标协议参数对应的所述复杂度以及预设的与所述目标协议参数对应的权重系数,计算每个所述串行总线协议对应的总复杂度;将所述总复杂度小于预设复杂度阈值的一个所述串行总线协议作为所述目标串行总线协议。可以理解的是,对于目标组件与ses程序之间的通信,只需要做组件信息的串口输出,不需要支持复杂的数据交互,因此选择功能简单、开发工作量较小的串行总线协议更为适合,同时也能够提高数据传输的效率和减少开发成本。所以,本实施例中,所述协议参数可以是用于表征一个协议的功能数量以及开发难易程度或其他信息的具体参数,并基于这些参数可以得到该协议的总复杂度,并在多个串行总线协议中选择总复杂度低于预设复杂度阈值的一个串行总线协议作为目标串行总线协议,通过上述方式,可以方便本实施例依据所述串行总线协议搭建相应复杂程度低的所述串行通信链路,所以在所述组件信息传输到所述ses程序的过程中实现了传输过程中不需要复杂的适配与节约搭建所述串行通信链路的时间和资源。
67.具体的,上述基于目标串行总线协议在ses程序与目标组件之间搭建串行通信链路,可以包括:基于两线式串行总线协议或串行外设接口协议在ses程序与所述目标组件之间搭建串行通信链路。
68.步骤s22:控制所述ses程序上电启动,并将所述ses程序配置为用于通过所述串行通信链路从主模块中获取信息的从模块,然后控制所述目标组件上电启动,并将所述目标组件配置为用于通过所述串行通信链路将自身信息传输至所述从模块的主模块。
69.本实施例中,由复杂可编程逻辑器件(complex programmable logic device,即cpld)控制ses程序和目标组件按照预先设置的上电顺序上电启动,所述上电顺序为ses程序优先启动,然后再启动目标组件。并且,在ses程序启动后,将ses程序配置为用于通过上述串行通信链路从目标组件中获取信息的从模块,也即等待接收目标组件发送的指令,并提前做好接收指令的准备;在目标组件启动后,将目标组件配置为用于通过上述串行通信链路将自身信息传输至ses程序的主模块,用于主动向ses程序发送指令。可以理解的是,通
过上述主从设备模式的设置,提高了数据传输的性能,还具备一定的可靠性和安全性。
70.步骤s23:通过所述串行通信链路将目标探测指令发送至所述ses程序;所述目标探测指令为用于检测所述ses程序是否已处于准备接收信息的状态的指令。
71.步骤s24:获取所述ses程序返回的针对所述目标探测指令的应答指令。
72.步骤s25:如果所述应答指令表明所述ses程序已处于准备接收信息的状态,则通过所述串行通信链路,将本地收集的组件信息传输至所述ses程序,以便所述ses程序将接收到的所述组件信息转发至主存储程序,并通过所述主存储程序将所述组件信息以文件形式进行保存。
73.本实施例中,需要指出的是,当由ses程序将接收到的所述组件信息转发至主存储程序时,此时ses程序与主存储程序两者之间的数据交互所用的通信链路不再是前述所提到的基于总复杂度较低的串行总线协议搭建的通信链路,例如基于i2c协议搭建的i2c链路。这个阶段所用的链路为扩展能力较高的sas(serial attached scsi,即串行scsi技术,其中,scsi即small computer system interface,小型计算机系统接口)链路,并且,sas链路所用的协议是ses协议,ses协议相比前述提到的i2c协议更为复杂,适合于主系统的运行阶段。图3公开了一种中央处理器与扩展卡之间的通信链路图,可以理解的是,中央处理器上运行主系统,扩展卡上运行ses程序,主系统在启动和运行阶段会分别运行目标组件和主存储程序,当目标组件与ses程序之间进行通信时,所用到的通信链路是i2c链路,当主存储程序和ses程序之间进行通信时,所用到的通信链路是sas链路。
74.其中,关于上述步骤s23、s24更加具体的处理过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
75.可见,本技术实施例公开了一种应用于服务器中的目标组件的服务器组件信息收集方法。首先通过在多个串行总线协议中基于预设的用于表征协议复杂程度的协议参数,选择总复杂度低于预设复杂度阈值的一个串行总线协议作为目标串行总线协议,例如可以将两线式串行总线协议或串行外设接口协议作为该目标串行总线协议,通过选择功能简单且开发工作量较小的串行总线协议达到提高数据传输的效率和减少开发成本的目的,并且通过先后对ses程序设置为从模块和对目标组件设置为主模块这种方式,以提高数据传输过程中的可靠性和安全性。本方法通过借助功能较简单的串行总线协议搭建的串行通信链路和ses程序,将收集到的组件信息以文件形式保存于主存储程序中,便于后续从ses程序和主存储程序两端都可以对相关组件信息进行查看,从而提高了对目标组件进行开发调试和故障定位的效率。
76.参见图4所示,本发明实施例公开了一种服务器组件信息收集方法,应用于ses程序,包括:
77.步骤s31:通过预先基于串行总线协议在ses程序与服务器的目标组件之间搭建的串行通信链路获取目标探测指令;所述目标组件为在服务器操作系统启动之前运行的并基于串口进行数据输出的组件,所述目标探测指令为所述目标组件触发的用于检测所述ses程序是否已处于准备接收信息的状态的指令。
78.本实施例中,通过预设的用于表征协议复杂程度的协议参数,从多个串行总线协议中确定出总复杂度低于预设复杂度阈值的一个串行总线协议作为目标串行总线协议,具体的,所述目标串行总线协议可以包括但不限于两线式串行总线协议或串行外设接口协
议。基于该目标串行总线协议搭建串行通信链路,并通过所述串行通信链路获取由目标组件发送的用于检测ses程序是否已处于准备接收信息的状态的目标探测指令。所述目标组件为在服务器操作系统启动之前运行的并基于串口进行数据输出的组件。
79.步骤s32:向所述目标组件发送针对所述目标探测指令的应答指令。
80.本实施例中,在接收到上述目标探测指令之后,会判断自身当前的状态是否已处于准备接收组件信息的状态,并基于判断结果向目标组件发送相应的应答指令。
81.步骤s33:如果所述应答指令表明自身已处于准备接收信息的状态,则通过所述串行通信链路接收由所述目标组件发送的组件信息。
82.本实施例中,如果所述应答指令表明自身已处于准备接收信息的状态,则会申请一定的内存空间,做好接收组件信息的准备,而目标组件接收到该应答指令后,会将组件信息按照预先确定的信息拆包规则将本地收集的组件信息拆分为多个信息包通过所述串行通信链路依次发送至ses程序;ses程序会将接收到的多个信息包进行整合得到完整的组件信息,并保存在本地,以及在预设状态信息保存页上为整合后的所述组件信息设置相应的标志位。如果所述应答指令表明自身未处于准备接收信息的状态,则不会获取到由目标组件发送的组件信息。
83.步骤s34:将所述组件信息发送至主存储程序,以便所述主存储程序将所述组件信息以文件形式进行保存。
84.本实施例中,首先通过目标组件触发的启动控制指令控制所述主存储程序启动,然后接收由主存储程序发送的用于查询ses程序的预设状态信息保存页上是否保存有上述标志位状态查询指令,如果预设状态信息保存页上保存有上述标志位,则将所述组件信息发送至主存储程序,以便所述主存储程序将所述组件信息以文件形式进行保存。
85.其中,关于上述步骤s31、s32、s33、s34更加具体的处理过程可以参考前述实施例中公开的相应内容,在此不再进行赘述
86.可见,本技术实施例中,在将目标组件的组件信息传输至ses程序之前,还需要基于用于表征协议复杂程度的协议参数从多个串行总线协议中确定出总复杂度低于预设复杂度阈值的一个目标串行总线协议,并基于该串行总线协议搭建的链路向ses程序发送目标探测指令以确定是否向ses程序发送组件信息,以及在数据传输过程中,需要基于具体的串行总线协议确定相应的信息拆包规则将组件信息拆分为多个信息包发送至ses程序,以便ses程序将多个信息包进行整合并保存在本地,最后基于读取指令将将所述组件信息发送至主存储程序,以便所述主存储程序将所述组件信息以文件形式进行保存。通过上述方法,不仅保证了数据传输过程中的安全性和可靠性,还便于后续对目标组件进行开发调试和故障定位。
87.参见图5和图6所示,本发明实施例公开了一种具体的服务器组件信息收集方法流程,该方法包括:
88.步骤s41:利用复杂可编程逻辑器件控制扩展卡中的ses程序上电启动,并将ses程序配置为主从设备模块中的从模块,再控制中央处理器中的bios上电启动,并将bios配置为主从设备模块中的主模块。
89.本实施例中,可以理解的是,由复杂可编程逻辑器件控制程序上电先后顺序,所述上电先后顺序为:ses优先启动,然后再启动bios,并且将ses程序配置为主从设备模块中的
从模块,将bios配置为主从设备模块中的主模块。
90.步骤s42:由所述bios向所述ses程序发送探测指令,以确认所述ses程序是否已处于准备接收组件信息的状态;所述ses程序基于所述探测指令向所述bios回复已准备好接收所述组件信息的应答结果。
91.本实施例中,在将组件信息发送至ses程序之前,需要先通过预先搭建好的通信链路向ses程序发送探测指令,以确定ses程序是否已处于准备接收组件信息的状态,并由ses程序向bios回复针对所述探测指令的应答结果,只有当ses程序已处于准备接收组件信息的状态时,才可向ses程序发送组件信息。本实施例中,上述通信链路可以是基于i2c协议搭建的i2c链路。
92.步骤s43:所述bios将本地收集的组件信息拆分为多个信息包发送至所述ses程序,以便所述ses程序将所述多个信息包进行整合得到整合后的所述组件信息并保存在本地日志,以及在page2上为整合后的所述组件信息设置相应的完成标志。
93.可以理解的是,不同的串行总线协议有不同的数据传输规定,例如,两线式串行总线协议规定,单次传输的数据信息长度最大为255个字节,那么对于大于255字节的信息包,需要对原信息进行信息拆包处理。因此在将组件信息发送至所述ses程序时,需要将所述组件信息拆分为多个信息包再依次发送至所述ses程序,并且,ses程序在接收到多个信息包后,需要进行整合得到所述组件信息,并保存至ses程序本地日志,以及在page2上设置完成标志。
94.步骤s44:通过所述bios引导主存储程序启动,并向所述ses程序发送page2状态查询指令,以确认所述ses程序是否含有所述完成标志。
95.本实施例中,在主存储程序启动之后,首先向ses程序发送page2状态查询指令,判断所述ses程序的page2上是否含有上述完成标志,并基于该判断结果确定是否向ses程序发送读取指令。
96.步骤s45:如果所述ses程序含有所述完成标志,则所述主存储程序向所述ses程序中发送数据长度获取指令和数据读取指令,并将读取后的所述组件信息以文件形式保存。
97.可以理解的是,如果所述ses程序含有上述完成标志,主存储程序则向ses程序发送读取指令,所述读取指令一方面用于查询上述整合后的组件信息的数据长度,另一方面接收由ses程序转发的上述整合后的组件信息,并将所述组件信息以文件形式保存。
98.参见图7所示,本发明实施例公开了一种服务器组件信息收集装置,应用于服务器中的目标组件,所述目标组件为在服务器操作系统启动之前运行的并基于串口进行数据输出的组件,该装置包括:
99.指令发送模块11,用于通过预先基于目标串行总线协议在ses程序与所述目标组件之间搭建的串行通信链路,将目标探测指令发送至所述ses程序;所述目标探测指令为用于检测所述ses程序是否已处于准备接收信息的状态的指令;
100.指令获取模块12,用于获取所述ses程序返回的针对所述目标探测指令的应答指令;
101.信息传输模块13,用于如果所述应答指令表明所述ses程序已处于准备接收信息的状态,则通过所述串行通信链路,将本地收集的组件信息传输至所述ses程序,以便所述ses程序将接收到的所述组件信息转发至主存储程序,并通过所述主存储程序将所述组件
信息以文件形式进行保存。
102.可见,本技术提供了一种应用于服务器中的目标组件的服务器组件信息收集方法,首先通过预先基于目标串行总线协议在ses程序与所述目标组件之间搭建的串行通信链路,将目标探测指令发送至所述ses程序;所述目标组件为在服务器操作系统启动之前运行的并基于串口进行数据输出的组件,所述目标探测指令为用于检测所述ses程序是否已处于准备接收信息的状态的指令;然后获取所述ses程序返回的针对所述目标探测指令的应答指令;如果所述应答指令表明所述ses程序已处于准备接收信息的状态,则通过所述串行通信链路,将本地收集的组件信息传输至所述ses程序,以便所述ses程序将接收到的所述组件信息转发至主存储程序,并通过所述主存储程序将所述组件信息以文件形式进行保存。由此可见,本技术在向ses程序传输组件信息之前,通过获取ses程序已处于准备接收信息的状态的应答指令以确定ses程序能够接收组件信息,提高组件信息传输的可靠性;通过所述串行通信链路,将本地收集的组件信息传输至所述ses程序,实现ses程序中接收到的串口组件信息的目的,以便ses程序将接收到的所述组件信息转发至主存储程序,并通过所述主存储程序将所述组件信息以文件形式进行保存,利用这种简单的方式,完成了通过借助ses程序接收服务器组件信息,且后续进行读取服务器组件信息的目的。
103.在一些具体实施例中,所述指令发送模块11之前,还可以包括:
104.链路搭建单元,用于基于目标串行总线协议在所述ses程序与所述目标组件之间搭建串行通信链路;
105.主从模块配置单元,用于控制所述ses程序上电启动,并将所述ses程序配置为用于通过所述串行通信链路从主模块中获取信息的从模块,然后控制所述目标组件上电启动,并将所述目标组件配置为用于通过所述串行通信链路将自身信息传输至所述从模块的主模块。
106.在一些具体实施例中,所述链路搭建单元,具体用于基于两线式串行总线协议或串行外设接口协议在ses程序与所述目标组件之间搭建串行通信链路。
107.在一些具体实施例中,所述服务器组件信息收集装置还包括:
108.参数提取模块,用于基于预设的用于表征协议复杂程度的协议参数,从多个串行总线协议中提取出每个所述串行总线协议中相应的目标协议参数;
109.复杂度确定模块,用于确定每个串行总线协议中的每个所述目标协议参数各自表征的复杂度;
110.总复杂度计算模块,用于基于所述目标协议参数对应的所述复杂度以及预设的与所述目标协议参数对应的权重系数,计算每个所述串行总线协议对应的总复杂度;
111.目标串行总线协议确定模块,用于将所述总复杂度小于预设复杂度阈值的一个所述串行总线协议作为所述目标串行总线协议。
112.在一些具体实施例中,所述服务器组件信息收集装置还包括:
113.信息拆包模块,用于基于所述目标串行总线协议确定信息拆包规则,按照所述信息拆包规则将本地收集的组件信息拆分为多个信息包;
114.信息整合模块,用于将所述多个信息包依次传输至所述ses程序,以便所述ses程序将接收到的所述多个信息包整合为所述组件信息并保存在本地;
115.标志位设置模块,用于在预设状态信息保存页上为整合后的所述组件信息设置相
应的标志位;
116.信息转发模块,用于将所述组件信息转发至主存储程序。
117.在一些具体实施例中,所述服务器组件信息收集装置还包括:
118.主存储程序启动模块,用于触发启动控制指令,并利用所述启动控制指令控制所述主存储程序启动;
119.标志位查询模块,用于所述主存储程序查询所述ses程序的所述预设状态信息保存页上是否保存有所述标志位;
120.读取指令发送模块,用于基于查询结果确定是否向所述ses程序发送用于读取整合后的所述组件信息的读取指令。
121.图8为本发明实例提供的一种计算机设备的结构示意图。具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的由计算机设备执行的服务器组件信息收集方法中的相关步骤。
122.本实施例中,电源23用于为计算机设备20上的各硬件设备提供工作电压;通信接口24能够为计算机设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本技术技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
123.其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用dsp(digital signal processing,数字信号处理)、fpga(field-programmable gate array,现场可编程门阵列)、pla(programmable logic array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(central processing unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以在集成有gpu(graphics processing unit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括ai(artificial intelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。
124.另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源包括操作系统221、计算机程序222及数据223等,存储方式可以是短暂存储或者永久存储。
125.其中,操作系统221用于管理与控制计算机设备20上的各硬件设备以及计算机程序222,以实现处理器21对存储器22中海量数据223的运算与处理,其可以是windows、unix、linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由计算机设备20执行的服务器组件信息收集方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。数据223除了可以包括计算机设备接收到的由外部设备传输进来的数据,也可以包括由自身输入输出接口25采集到的数据等。
126.进一步的,本发明实施例还公开了一种存储介质,所述存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,实现前述任一实施例公开的由服务器组件
信息收集过程中执行的方法步骤。
127.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
128.以上对本发明所提供的一种服务器组件信息收集方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献