一种节省bios存储空间的方法、装置、电子设备及介质
技术领域
1.本技术涉及数据存储领域,特别是涉及一种节省bios存储空间的方法、装置、电子设备及介质。
背景技术:2.随着信息化时代进程的不断深化,数据和视频等载体越来越大,通信智能、人工智能、互联网等领域的业务对数据存储和处理的需求越来越多,也越来越高,与此同时,这些业务的关键基础设施即服务器系统的部署和使用也越来越广泛。随着业务范围、客户群体和产品销量的增加,服务器制造商对于产品开发的效率、成本和质量提出了越来越高的要求,从硬件主板到软件代码,再到固件镜像文件,归一化复用已成为一种趋势。目前基本输入输出系统(bios)领域的归一化设计主要是在一套bios代码里集成所有服务器产品项目硬件配置的静态数据,然后通过在开机自检(post)过程中的可扩展固件接口前期初始化(pei)阶段根据不同的主板标识动态地加载对应的静态数据,再进行对应的硬件适配和初始化。由于每一个项目都对应一份静态数据,如果要在代码中增加对一个新项目的支持,就需要相应地增加一套静态数据,并将这些数据存储到bios的只读存储器(rom)中。虽然一套代码兼容多个产品项目的归一化设计有诸多的好处,但是由于bios的rom存储空间是有限的,在静态数据大小固定的情况下,归一化设计能兼容的产品项目是有限的。当前通过将所有产品项目按类型分组,每组共用一套bios代码的方法减少对bios空间的占用。
3.当前方法将所有产品项目分组,会导致多套代码分支,需要投入较多的人力资源进行代码维护。
4.由此可见,如何降低人力资源的投入是本领域技术人员亟待解决的问题。
技术实现要素:5.本技术的目的是提供一种节省bios存储空间的方法、装置、电子设备及介质,用于减少bios存储空间的占用,降低人力资源的投入。
6.为解决上述技术问题,本技术提供一种节省bios存储空间的方法,包括:
7.获取静态配置差异数据表,并判断该静态配置差异数据表是否为空;
8.若为空,则获取并使用默认静态配置数据表中的初始数据进行硬件初始化;
9.若不为空,则根据静态配置差异数据表中的第一数据和默认静态配置数据表中不需要被第一数据更新的初始数据进行硬件初始化;其中,初始数据为用于初始化的所有未更新的数据,静态配置差异数据表包括用于更新的第一数据和表征默认静态配置数据表中需要被更新的初始数据的位置的第二数据。
10.优选地,根据静态配置差异数据表中的第一数据和默认静态配置数据表中不需要被第一数据更新的初始数据进行硬件初始化包括:
11.判断默认静态配置数据表中的各初始数据是否需要更新;
12.若当前初始数据需要更新,则使用静态配置差异数据表中与当前需要更新的初始
数据对应的第一数据进行硬件初始化;
13.若当前初始数据不需要更新,则使用当前初始数据进行硬件初始化。
14.优选地,判断默认静态配置数据表中的各初始数据是否需要更新包括:
15.读取静态配置差异数据表中首行首列的数值loc#,将loc#减1赋值给line#,并设置line为1;
16.确定默认静态配置数据表中第line行至第line#行的初始数据不需要更新;
17.读取静态配置差异数据表中第二列的数值mask并转换为二进制表示,其中,mask与loc#在静态配置差异数据表的同一行;
18.提取转换后的mask的第一位bit值;
19.设置bit值的位数为bit#,并判断bit值是否为0;
20.若为0,则确定默认静态配置数据表中第loc#行第bit#列的初始数据不需要更新;
21.若不为0,则确定默认静态配置数据表中第loc#行第bit#列的初始数据需要更新,且用于更新默认静态配置数据表中第loc#行第bit#列的初始数据的第一数据为静态配置差异数据表第loc#行第col#列的数据,其中,col#与bit#对应,从三开始计数;
22.判断bit是否为mask的最后一位;
23.若不是最后一位,则读取下一位bit,进入设置bit值的位数为bit#,并判断bit值是否为0的步骤;
24.若是最后一位,则判断是否全部读完静态配置差异数据表;
25.若已全部读完,则确定默认静态配置数据表中第loc#行之后每一行的初始数据都不需要更新;
26.若未全部读完,则将loc#加1赋值给line,读取静态配置差异数据表中下一行首列新的loc#,将新的loc#减1赋值给line#,进入确定默认静态配置数据表中第line行至第line#行的初始数据不需要更新的步骤;
27.其中,loc#表征默认静态配置数据表的行号,且为正整数。
28.优选地,在获取默认静态配置数据表之前,若产品项目发生增减,则还包括:
29.判断默认静态配置数据表中的各初始数据是否需要根据增减的产品项目进行更新;
30.若需要,则更新默认静态配置数据表中的初始数据。
31.优选地,还包括:在硬件初始化失败时进行报错。
32.为解决上述技术问题,本发明还提供一种节省bios存储空间的装置,包括:
33.第一获取模块10,用于获取静态配置差异数据表;
34.判断模块11,用于判断静态配置差异数据表是否为空;
35.第二获取模块12,用于获取默认静态配置数据表;
36.初始化模块13,用于在静态配置差异数据表为空时,根据默认静态配置数据表中的初始数据进行硬件初始化,以及在静态配置差异数据表不为空时,根据静态配置差异数据表中的第一数据和默认静态配置数据表中不需要被第一数据更新的初始数据进行硬件初始化;
37.其中,初始数据为用于初始化的所有未更新的数据,静态配置差异数据表包括用于更新的第一数据和表征默认静态配置数据表中需要被更新的初始数据的位置的第二数
据。
38.为解决上述技术问题,本发明还提供一种电子设备,包括:
39.存储器20,用于存储计算机程序;
40.处理器21,用于执行计算机程序时实现上述节省bios存储空间的方法的步骤。
41.为解决上述技术问题,本发明还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述节省bios存储空间的方法的步骤。
42.本技术提出一种节省bios存储空间的方法,该方法先获取静态配置差异数据表,并判断静态配置差异数据表是否为空;若为空,则获取并使用默认静态配置数据表中的初始数据进行硬件初始化;若不为空,则根据静态配置差异数据表中的第一数据和默认静态配置数据表中不需要被第一数据更新的初始数据进行硬件初始化;其中,初始数据为用于初始化的所有未更新的数据,静态配置差异数据表包括用于更新的第一数据和表征默认静态配置数据表中需要被更新的初始数据的位置的第二数据。由此可见,相较于传统的将所有产品项目分组,每组共用一套bios代码的方法,本技术提出的方法只需要使用一份默认静态配置数据表,供所有项目在硬件初始化时进行动态调用,有效减少了bios存储空间的占用,确保了bios归一化设计的实现,降低了人力资源的投入,且每个产品项目都有其对应的静态配置差异数据表,保障了数据调用的准确性。
43.此外,本发明所提供的节省bios存储空间的装置、电子设备及介质与节省bios存储空间的方法相对应,效果如上。
附图说明
44.为了更清楚地说明本技术实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
45.图1为本技术提供的一种节省bios存储空间的方法的流程图;
46.图2为本技术提供的一种节省bios存储空间的装置的结构图;
47.图3为本技术提供的一种电子设备的结构图。
具体实施方式
48.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本技术保护范围。
49.本技术的核心是提供一种节省bios存储空间的方法,该方法在获取静态配置差异数据表后,判断该静态配置差异数据表是否为空;若为空,则获取并使用默认静态配置数据表中的初始数据进行硬件初始化;若不为空,则根据静态配置差异数据表中的第一数据和默认静态配置数据表中不需要被第一数据更新的初始数据进行硬件初始化;其中,初始数据为用于初始化的所有未更新的数据,静态配置差异数据表包括用于更新的第一数据和表征默认静态配置数据表中需要被更新的初始数据的位置的第二数据。由此可见,本技术提
供的方法只使用一份默认静态配置数据表,通过设计一种静态配置差异数据表及相关逻辑,供所有项目在硬件初始化时进行动态调用,有效减少了bios存储空间的占用,降低了人力资源的投入。
50.为了使本技术领域的人员更好地理解本技术方案,下面结合附图和具体实施方式对本技术作进一步的详细说明。
51.图1为本技术提供的一种节省bios存储空间的方法的流程图。如图1所示,该方法包括:
52.s1:获取静态配置差异数据表,并判断该静态配置差异数据表是否为空。
53.在本实施例中,每一个产品项目都会创建对应的静态配置差异数据表,静态配置差异数据表中的第一列数据是1个字节的16进制数,用于表示默认静态配置数据表中的行号;第二列数据是1字节按bit表示的16进制数,其中,置1的bit位表示该项目的静态配置差异数据表与默认静态配置数据表相比,第一列数据表示的行中对应该bit的数据需要更新;从第三列开始的数据为用于更新的数据,在第二列有几个bit位置1,从第三列开始就有几列数据,例如,假设第m行第二列数据为0x1c,转换为二进制数表示为00011100,由于二进制数右侧为低位,从0开始计数,可以看出bit2、bit3和bit4共3个bit位置1,即说明第m行从第三列开始共存在3列数据,用于更新默认静态配置数据表中第m行的第2、3、4列数据,其中,默认静态配置数据表中的列数从0开始计数。
54.在获取到一个产品项目对应的静态配置差异数据表之后,通过判断该静态配置差异数据表是否为空来确定是否需要对默认静态配置数据表中的初始数据进行更新。若静态配置差异数据表为空,则说明不需要对默认静态配置数据表中的初始数据进行更新,若静态配置差异数据表不为空,则说明需要根据静态配置差异数据表中数据对默认静态配置数据表中的初始数据进行更新。
55.s2:若为空,则获取并使用默认静态配置数据表中的初始数据进行硬件初始化。
56.在确定静态配置差异数据表为空,即不需要对默认静态配置数据表中的初始数据进行更新后,获取bios存储空间中的默认静态配置数据表,使用默认静态配置数据表中的初始数据进行硬件初始化。
57.s3:若不为空,则根据静态配置差异数据表中的第一数据和默认静态配置数据表中不需要被第一数据更新的初始数据进行硬件初始化;其中,初始数据为用于初始化的所有未更新的数据,静态配置差异数据表包括用于更新的第一数据和表征默认静态配置数据表中需要被更新的初始数据的位置的第二数据。
58.在本实施例中,静态配置差异数据表包括用于更新的第一数据和表征默认静态配置数据表中需要被更新的初始数据的位置的第二数据,例如,上述静态配置差异数据表中的第一列数据与第二列数据为表征默认静态配置数据表中需要被更新的初始数据的位置的第二数据,从第三列开始的数据为用于更新的第一数据。默认静态配置数据表中的初始数据为用于初始化的所有未更新的数据,根据产品开发经验统计,不同项目间的静态数据大约有70%的内容是相同的,因此初始数据可以是任意项目的全部静态数据,其中与当前产品项目相同的静态数据为不需要被更新的初始数据,与当前产品项目不同的静态数据则需要被当前产品项目对应的静态配置差异数据表中的第一数据更新,以便进行硬件初始化。
59.在确定静态配置差异数据表不为空,即需要根据静态配置差异数据表中数据对默认静态配置数据表中的初始数据进行更新时,通过静态配置差异数据表中的第二数据得到默认静态配置数据表中需要被更新的初始数据的位置,使用静态配置差异数据表中对应的第一数据进行硬件初始化。
60.本实施例提出了一种节省bios存储空间的方法,该方法先获取静态配置差异数据表,并判断其是否为空;若为空,则获取并使用默认静态配置数据表中的初始数据进行硬件初始化;若不为空,则根据静态配置差异数据表中的第一数据和默认静态配置数据表中不需要被第一数据更新的初始数据进行硬件初始化;其中,初始数据为用于初始化的所有未更新的数据,静态配置差异数据表包括用于更新的第一数据和表征默认静态配置数据表中需要被更新的初始数据的位置的第二数据。由此可见,相较于传统的将所有产品项目分组,每组共用一套bios代码的方法,本技术提出的方法只需要使用一份默认静态配置数据表,供所有项目在硬件初始化时进行动态调用,通过优化数据存储有效减少了bios存储空间的占用,尤其是在产品项目数量非常多的情况下效果显著。此外,该方法还确保了bios归一化设计的实现,降低了人力资源的投入,且每个产品项目都有其对应的静态配置差异数据表,保障了数据调用的准确性。
61.上述实施例中提到,在静态配置差异数据表不为空时,根据静态配置差异数据表中的第一数据和默认静态配置数据表中不需要被第一数据更新的初始数据进行硬件初始化,本实施例对此进行进一步说明。该步骤包括:
62.判断默认静态配置数据表中的各初始数据是否需要更新;
63.若当前初始数据需要更新,则使用静态配置差异数据表中与当前需要更新的初始数据对应的第一数据进行硬件初始化;
64.若当前初始数据不需要更新,则使用当前初始数据进行硬件初始化。
65.在本实施例中,由于静态配置差异数据表不为空,即说明默认静态配置数据表中存在需要更新的初始数据,因此先判断默认静态配置数据表中的各初始数据是否需要更新。若当前初始数据需要更新,则使用静态配置差异数据表中与当前需要更新的初始数据对应的第一数据进行硬件初始化;若当前初始数据不需要更新,则使用当前初始数据进行硬件初始化,以便准确调用静态数据进行硬件初始化。
66.在上述实施例中提到,需要判断默认静态配置数据表中的各初始数据是否需要更新,但是上述实施例未对判断步骤进行具体说明,本实施例对此进行补充说明。该步骤包括:
67.读取静态配置差异数据表中首行首列的数值loc#,将loc#减1赋值给line#,并设置line为1;
68.确定默认静态配置数据表中第line行至第line#行的初始数据不需要更新;
69.读取静态配置差异数据表中第二列的数值mask并转换为二进制表示,其中,mask与loc#在静态配置差异数据表的同一行;
70.提取转换后的mask的第一位bit值;
71.设置bit值的位数为bit#,并判断bit值是否为0;
72.若为0,则确定默认静态配置数据表中第loc#行第bit#列的初始数据不需要更新;
73.若不为0,则确定默认静态配置数据表中第loc#行第bit#列的初始数据需要更新,
且用于更新默认静态配置数据表中第loc#行第bit#列的初始数据的第一数据为静态配置差异数据表第loc#行第col#列的数据,其中,col#与bit#对应,从三开始计数;
74.判断bit是否为mask的最后一位;
75.若不是最后一位,则读取下一位bit,进入设置bit值的位数为bit#,并判断bit值是否为0的步骤;
76.若是最后一位,则判断是否全部读完静态配置差异数据表;
77.若已全部读完,则确定默认静态配置数据表中第loc#行之后每一行的初始数据都不需要更新;
78.若未全部读完,则将loc#加1赋值给line,读取静态配置差异数据表中下一行首列新的loc#,将新的loc#减1赋值给line#,进入确定默认静态配置数据表中第line行至第line#行的初始数据不需要更新的步骤;
79.其中,loc#表征默认静态配置数据表的行号,且为正整数。
80.在本实施例中,loc#和mask为表征默认静态配置数据表中需要被更新的初始数据的位置的第二数据,静态配置差异数据表中第col#列数据为用于更新的第一数据,其中,col#从三开始计数。在具体实施中,默认静态配置数据表往往不是每一行都需要更新,例如,假设默认静态配置数据表总共15行初始数据,其中可能只有第3、5、7、9行的初始数据需要更新,而其它行的初始数据不需要更新,根据静态配置差异数据表中每一行首列的数据可以得到默认静态配置数据表中需要更新的每一行初始数据的行号为3、5、7、9,此时可以直接确定默认静态配置数据表中除去第3、5、7、9行的每一行初始数据都不需要更新,不需要再对其进行判断,简化了步骤。显然,在读取静态配置差异数据表中首列的数据时,根据顺序从第一行开始读起。也就是说,读取时先读取到3,此时可以确定在第3行之前的第1行和第2行中的初始数据不需要更新,再读取到5,确定第3行与第5行中间的第4行不需要更新,依此类推,得到默认静态配置数据表中每一行的初始数据是否需要更新的结果,以便根据该结果调用数据进行硬件初始化。
81.本实施例对判断默认静态配置数据表中的各初始数据是否需要更新的步骤进行了详细说明,在具体实施时使用默认静态配置数据表中不需要更新的各初始数据以及静态配置差异数据表中的第一数据进行硬件初始化,保障了硬件初始化时调用数据的准确性。
82.在上述实施例获取默认静态配置数据表之前,若产品项目发生增减,可能导致默认静态配置数据表中的初始数据发生改变,因此在产品项目发生增减时需要对默认静态配置数据表中的各初始数据进行是否需要更新的判断。该步骤包括:
83.判断默认静态配置数据表中的各初始数据是否需要根据增减的产品项目进行更新;
84.若需要,则更新默认静态配置数据表中的初始数据。
85.本实施例对获取默认静态配置数据表之前,产品项目发生增减的情况进行了说明。在产品项目发生增减时判断默认静态配置数据表中的各初始数据是否需要根据增减的产品项目进行更新,若需要,则对默认静态配置数据表中的初始数据进行更新,以保障默认静态配置数据表中各初始数据的准确性。
86.在上述实施例调用数据进行硬件初始化时,由于硬件初始化可能会失败,可以添加一个报警方式,在硬件初始化失败时进行报错。
87.本实施例在硬件初始化失败时进行报错,以提示用户硬件初始化失败,再次调用数据进行硬件初始化。
88.在上述实施例中,对于节省bios存储空间的方法进行了详细描述,本技术还提供节省bios存储空间的装置对应的实施例。需要说明的是,本技术从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件的角度。
89.图2为本技术提供的一种节省bios存储空间的装置的结构图。如图2所示,该装置包括:
90.第一获取模块10,用于获取静态配置差异数据表;
91.判断模块11,用于判断静态配置差异数据表是否为空;
92.第二获取模块12,用于获取默认静态配置数据表;
93.初始化模块13,用于在静态配置差异数据表为空时,根据默认静态配置数据表中的初始数据进行硬件初始化,以及在静态配置差异数据表不为空时,根据静态配置差异数据表中的第一数据和默认静态配置数据表中不需要被第一数据更新的初始数据进行硬件初始化;
94.其中,初始数据为用于初始化的所有未更新的数据,静态配置差异数据表包括用于更新的第一数据和表征默认静态配置数据表中需要被更新的初始数据的位置的第二数据。
95.由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
96.图3为本技术另一实施例提供的电子设备的结构图,如图3所示,该电子设备包括:存储器20,用于存储计算机程序;
97.处理器21,用于执行计算机程序时实现如上述实施例中所提到的节省bios存储空间的方法的步骤。
98.本实施例提供的电子设备可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
99.其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用数字信号处理(digital signal processing,dsp)、现场可编程门阵列(field-programmable gate array,fpga)、可编程逻辑阵列(programmable logic array,pla)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(central processing unit,cpu);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以在集成有图像处理器(graphics processing unit,gpu),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括人工智能(artificial intelligence,ai)处理器,该ai处理器用于处理有关机器学习的计算操作。
100.存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的节省
bios存储空间的方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括windows、unix、linux等。数据203可以包括但不限于默认静态配置数据表中的初始数据、静态配置差异数据表中的第一数据等。
101.在一些实施例中,电子设备还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。
102.本领域技术人员可以理解,图3中示出的结构并不构成对该电子设备的限定,可以包括比图示更多或更少的组件。
103.最后,本技术还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的节省bios存储空间的方法的步骤。
104.可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
105.以上对本技术所提供的节省bios存储空间的方法、装置、电子设备及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围内。
106.还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。