本发明涉及计算机硬件和系统管理领域的,特别是涉及一种内存条的初始化方法、装置、设备及存储介质。
背景技术:
1、现有技术中,在面对多编程接口/多芯片的i2c总线和内存条的情况下,由于i2c总线和内存条的初始化通常是分开进行的,两者缺乏联系,导致内存条上电后无法快速确认i2c总线的可用性,且目前还没有针对内存条与i2c总线的读写应用程序编程接口(application programming interface,api)绑定的结构,因此,在内存条初始化过程中需要逐个尝试不同的i2c总线来建立通信连接,导致在读写访问时需要从头开始寻址并找到相应总线的基地址,过程会耗费大量的时间,导致内存条的初始化效率低下。
技术实现思路
1、本发明要解决的技术问题是:提供一种内存条的初始化方法、装置、设备及存储介质,提高内存条的初始化效率。
2、为了解决上述技术问题,本发明提供了一种内存条的初始化方法,包括:
3、获取服务器中的每个i2c总线对应的i2c总线信息,将所述i2c总线信息存储在预构建的i2c数据结构中,其中,所述i2c总线信息包括i2c初始化状态标志、第一编程接口编号、第一芯片编号和第一控制器编号;
4、获取服务器中的每个内存条对应的内存条信息,将所述内存条信息存储在预构建的内存条数据结构中,其中,所述内存条信息包括内存条上电状态标志、第二编程接口编号、第二芯片编号和第二控制器编号;
5、基于预设的解析器对所述i2c数据结构中的第一i2c总线信息以及所述内存条数据结构中的第一内存条信息进行解析,将所述每个第一内存条信息依次与所述所有第一i2c总线信息进行对比,确定可用内存条及所述可用内存条对应的可用i2c总线;
6、获取所述可用i2c总线对应的api函数指针,将所述可用内存条与所述api函数指针进行关联处理;
7、在控制器初始化主函数,遍历到所述可用内存条时,基于所述api函数指针对所述可用内存条进行初始化处理。
8、在一种可能的实现方式中,获取服务器中的每个i2c总线对应的i2c总线信息,具体包括:
9、根据服务器中的所有编程接口编号和所有芯片编号,确定所述服务器中的所有i2c总线;
10、分别对所述所有i2c总线进行初始化处理,基于初始化结果,分别对每个i2c总线设置对应的i2c初始化状态标志;
11、并获取所述每个i2c总线对应的第一编程接口编号、第一芯片编号和第一控制器编号,将所述i2c初始化状态标志、所述第一编程接口编号、所述第一芯片编号和所述第一控制器编号作为所述每个i2c总线对应的i2c总线信息。
12、进一步地,根据服务器中的编程接口编号和芯片编号,能够高效、准确地获取到服务器中所有i2c总线,对所有i2c总线进行初始化处理,基于初始化结果,设置每个i2c总线的初始化状态标志,可以记录每个总线的初始化状态,以便后续能基于初始化状态标志快速从所有i2c总线中得到初始化成功的i2c总线。
13、在一种可能的实现方式中,将所述i2c总线信息存储在预构建的i2c数据结构中后,还包括:
14、根据所述初始化结果,获取所述初始化结果为初始化成功的所有目标i2c总线;
15、获取每个目标i2c总线对应的目标api函数指针,并将所述目标api函数指针存储在预设的堆空间中。
16、进一步地,通过根据初始化结果,筛选出初始化成功的目标i2c设备,可以排除掉初始化失败或有其他问题的设备,只关注可用的设备,有助于减少后续处理的负担,提高系统的稳定性和可靠性;同时通过获取每个目标i2c设备对应的目标api函数指针,并将其存储在预设的堆空间中,可以方便地对api函数进行管理和调用。
17、在一种可能的实现方式中,基于初始化结果,分别对每个i2c总线设置对应的i2c初始化状态标志后,还包括:
18、获取所述i2c初始化状态标志为1的所有第一i2c总线,并实时检测每个第一i2c总线对应的时钟信号;
19、当检测到所述时钟信号为低电平信号,且所述低电平信号的持续时间大于预设时间阈值时,确定当前第一i2c总线出现驱动故障,并将所述当前第一i2c总线对应的所述i2c初始化状态标志调整为0。
20、进一步地,通过实时检测每个第一i2c总线对应的时钟信号,可以监测总线的工作状态,正常情况下,时钟信号会周期性地在高电平和低电平之间切换;因此,通过实时检测时钟信号,可以快速发现异常情况;且一旦确定第一i2c总线出现驱动故障,将对应的i2c初始化状态标志调整为0,这样可以明确标记当前总线的故障状态,使后续操作时能够避免与故障总线的通信交互。
21、在一种可能的实现方式中,获取服务器中的每个内存条对应的内存条信息,具体包括:
22、基于所述服务器中的所有i2c总线,确定所述服务器中的所有内存条;
23、分别对所述所有内存条进行上电处理,基于上电结果,分别对每个内存条设置对应的内存条上电状态标志;
24、获取所述每个内存条对应的第一i2c总线,并基于所述第一i2c总线,确定所述每个内存条对应的第二编程接口编号、第二芯片编号和第二控制器编号;
25、将所述内存条上电状态标志、所述第二编程接口编号、所述第二芯片编号和所述第二控制器编号作为所述每个内存条对应的内存条信息。
26、进一步地,根据服务器中的所有i2c总线,能够高效、准确地获取到服务器中所有内存条,对所有内存条进行上电处理,基于上电结果,设置每个所有内存条的内存条上电状态标志,可以记录每个内存条的上电状态,以便后续能基于内存条上电状态标志快速从所有内存条中得到上电成功的内存条。
27、在一种可能的实现方式中,分别对所述所有内存条进行上电处理,基于上电结果,分别对每个内存条设置对应的内存条上电状态标志,具体包括:
28、分别对每个内存条设置控制与监控端口位;
29、在确定分别向所述所有内存条输入预设电压后,获取每个内存条对应的所述控制与监控端口位的电平跳动状态,当所述控制与监控端口位存在电平跳动时,确定内存条的上电结果为上电成功,否则,确定内存条的上电结果为上电失败;
30、当所述上电结果为上电成功时,设置所述内存条对应的内存条上电状态标志为1,当所述上电结果为上电失败时,设置所述内存条对应的内存条上电状态标志为0。
31、进一步地,通过对每个内存条设置控制与监控端口位,可以实现对每个内存条的控制和监控,通过检测控制与监控端口位的电平跳动状态,可以判断每个内存条的上电结果;这样可以及时发现上电失败的内存条,并为每个内存条设置对应的上电状态标志,可以准确记录每个内存条的上电结果,这样可以在后续操作中方便地判断每个内存条的状态,快速识别出上电失败的内存条。
32、在一种可能的实现方式中,基于预设的解析器对所述i2c数据结构中的第一i2c总线信息以及所述内存条数据结构中的第一内存条信息进行解析,将所述每个第一内存条信息依次与所述所有第一i2c总线信息进行对比,确定可用内存条及所述可用内存条对应的可用i2c总线,具体包括:
33、设置i2c初始化状态标志为1为第一提取条件,从所述i2c数据结构中提取出满足所述第一提取条件的所有第一i2c总线信息;
34、设置内存条上电状态标志为1为第二提取条件,从所述内存条数据结构中提取出满足所述第二提取条件的所有第一内存条信息;
35、获取每个第一内存条信息对应的所述第二编程接口编号、所述第二芯片编号和所述第二控制器编号,同时获取每个第一i2c总线信息对应的所述第一编程接口编号、所述第一芯片编号和所述第一控制器编号;
36、将所述每个第一内存条信息依次与所述所有第一i2c总线信息进行对比,若满足所述第一编程接口编号与所述第二编程接口相同、所述第一芯片编号与所述第二芯片编号相同,以及所述第一控制器编号和所述第二控制器编号相同,则将当前第一内存条信息对应的内存条作为可用内存条,并将当前第一i2c总线信息对应的i2c总线作为所述可用内存条对应的可用i2c总线。
37、进一步地,由于设置的初始化状态标志和上电状态标志能准确记录i2c总线和内存条的状态,因此,基于初始化状态标志和上电状态标志能在后续操作中快速的提取出满足特定条件的第一i2c总线信息和第一内存条信息,可以将处理的重点集中在符合要求的信息上,减少不必要的操作和计算量,提高处理效率,并通过获取第一内存条信息和第一i2c总线信息中的编程接口、芯片和控制器编号,可以精确标识每个内存条和i2c总线的属性和位置,以使快速确定可用内存条及其对应的可用i2c总线。
38、本发明还提供了一种内存条的初始化装置,包括:i2c总线信息获取模块、内存条信息获取模块、信息解析模块、函数指针关联模块和内存条初始化处理模块;
39、其中,所述i2c总线信息获取模块,用于获取服务器中的每个i2c总线对应的i2c总线信息,将所述i2c总线信息存储在预构建的i2c数据结构中,其中,所述i2c总线信息包括i2c初始化状态标志、第一编程接口编号、第一芯片编号和第一控制器编号;
40、所述内存条信息获取模块,用于获取服务器中的每个内存条对应的内存条信息,将所述内存条信息存储在预构建的内存条数据结构中,其中,所述内存条信息包括内存条上电状态标志、第二编程接口编号、第二芯片编号和第二控制器编号;
41、所述信息解析模块,用于基于预设的解析器对所述i2c数据结构中的第一i2c总线信息以及所述内存条数据结构中的第一内存条信息进行解析,将所述每个第一内存条信息依次与所述所有第一i2c总线信息进行对比,确定可用内存条及所述可用内存条对应的可用i2c总线;
42、所述函数指针关联模块,用于获取所述可用i2c总线对应的api函数指针,将所述可用内存条与所述api函数指针进行关联处理;
43、所述内存条初始化处理模块,用于在控制器初始化主函数,遍历到所述可用内存条时,基于所述api函数指针对所述可用内存条进行初始化处理。
44、在一种可能的实现方式中,所述i2c总线信息获取模块,用于获取服务器中的每个i2c总线对应的i2c总线信息,具体包括:
45、根据服务器中的所有编程接口编号和所有芯片编号,确定所述服务器中的所有i2c总线;
46、分别对所述所有i2c总线进行初始化处理,基于初始化结果,分别对每个i2c总线设置对应的i2c初始化状态标志;
47、并获取所述每个i2c总线对应的第一编程接口编号、第一芯片编号和第一控制器编号,将所述i2c初始化状态标志、所述第一编程接口编号、所述第一芯片编号和所述第一控制器编号作为所述每个i2c总线对应的i2c总线信息。
48、本发明提供的一种内存条的初始化装置,还包括:api函数指针获取模块;
49、其中,所述api函数指针获取模块,用于根据所述初始化结果,获取所述初始化结果为初始化成功的所有目标i2c总线,获取每个目标i2c总线对应的目标api函数指针,并将所述目标api函数指针存储在预设的堆空间中。
50、在一种可能的实现方式中,所述i2c总线信息获取模块,用于基于初始化结果,分别对每个i2c总线设置对应的i2c初始化状态标志后,还包括:
51、获取所述i2c初始化状态标志为1的所有第一i2c总线,并实时检测每个第一i2c总线对应的时钟信号;
52、当检测到所述时钟信号为低电平信号,且所述低电平信号的持续时间大于预设时间阈值时,确定当前第一i2c总线出现驱动故障,并将所述当前第一i2c总线对应的所述i2c初始化状态标志调整为0。
53、在一种可能的实现方式中,所述内存条信息获取模块,用于获取服务器中的每个内存条对应的内存条信息,具体包括:
54、基于所述服务器中的所有i2c总线,确定所述服务器中的所有内存条;
55、分别对所述所有内存条进行上电处理,基于上电结果,分别对每个内存条设置对应的内存条上电状态标志;
56、获取所述每个内存条对应的第一i2c总线,并基于所述第一i2c总线,确定所述每个内存条对应的第二编程接口编号、第二芯片编号和第二控制器编号;
57、将所述内存条上电状态标志、所述第二编程接口编号、所述第二芯片编号和所述第二控制器编号作为所述每个内存条对应的内存条信息。
58、在一种可能的实现方式中,所述内存条信息获取模块,用于分别对所述所有内存条进行上电处理,基于上电结果,分别对每个内存条设置对应的内存条上电状态标志,具体包括:
59、分别对每个内存条设置控制与监控端口位;
60、在确定分别向所述所有内存条输入预设电压后,获取每个内存条对应的所述控制与监控端口位的电平跳动状态,当所述控制与监控端口位存在电平跳动时,确定内存条的上电结果为上电成功,否则,确定内存条的上电结果为上电失败;
61、当所述上电结果为上电成功时,设置所述内存条对应的内存条上电状态标志为1,当所述上电结果为上电失败时,设置所述内存条对应的内存条上电状态标志为0。
62、在一种可能的实现方式中,所述信息解析模块,用于基于预设的解析器对所述i2c数据结构中的第一i2c总线信息以及所述内存条数据结构中的第一内存条信息进行解析,将所述每个第一内存条信息依次与所述所有第一i2c总线信息进行对比,确定可用内存条及所述可用内存条对应的可用i2c总线,具体包括:
63、设置i2c初始化状态标志为1为第一提取条件,从所述i2c数据结构中提取出满足所述第一提取条件的所有第一i2c总线信息;
64、设置内存条上电状态标志为1为第二提取条件,从所述内存条数据结构中提取出满足所述第二提取条件的所有第一内存条信息;
65、获取每个第一内存条信息对应的所述第二编程接口编号、所述第二芯片编号和所述第二控制器编号,同时获取每个第一i2c总线信息对应的所述第一编程接口编号、所述第一芯片编号和所述第一控制器编号;
66、将所述每个第一内存条信息依次与所述所有第一i2c总线信息进行对比,若满足所述第一编程接口编号与所述第二编程接口相同、所述第一芯片编号与所述第二芯片编号相同,以及所述第一控制器编号和所述第二控制器编号相同,则将当前第一内存条信息对应的内存条作为可用内存条,并将当前第一i2c总线信息对应的i2c总线作为所述可用内存条对应的可用i2c总线。
67、本发明还提供了一种终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上述任意一项所述的内存条的初始化方法。
68、本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如上述任意一项所述的内存条的初始化方法。
69、本发明实施例一种内存条的初始化方法、装置、设备及存储介质,与现有技术相比,具有如下有益效果:
70、通过获取服务器中的每个i2c总线对应的i2c总线信息,将所述i2c总线信息存储在预构建的i2c数据结构中;获取服务器中的每个内存条对应的内存条信息,将所述内存条信息存储在预构建的内存条数据结构中;基于预设的解析器对所述i2c数据结构中的第一i2c总线信息以及所述内存条数据结构中的第一内存条信息进行解析,将所述每个第一内存条信息依次与所述所有第一i2c总线信息进行对比,确定可用内存条及所述可用内存条对应的可用i2c总线;获取所述可用i2c总线对应的ap i函数指针,将所述可用内存条与所述api函数指针进行关联处理;在控制器初始化主函数,遍历到所述可用内存条时,基于所述api函数指针对所述可用内存条进行初始化处理。与现有技术相比,本发明的技术方案通过预先获取和存储i2c总线和内存条的信息,并在控制器初始化过程中解析并确定可用的内存条和i2c总线,避免在内存条初始化过程中需要逐个尝试不同的i2c总线来建立通信连接,提高了内存条初始化的效率;同时,由于已经确定可用的内存条和i2c总线,通过获取可用i2c总线对应的api函数指针,并将可用内存条与api函数指针进行关联处理,同样避免导致在读写访问时需要从头开始寻址并找到相应总线的基地址,提高了读写访问速度,从而提高了内存条初始化的效率。