CN117348905A - Bmc固件更新方法、系统、终端及存储介质 - Google Patents
Bmc固件更新方法、系统、终端及存储介质 Download PDFInfo
- Publication number
- CN117348905A CN117348905A CN202311367075.9A CN202311367075A CN117348905A CN 117348905 A CN117348905 A CN 117348905A CN 202311367075 A CN202311367075 A CN 202311367075A CN 117348905 A CN117348905 A CN 117348905A
- Authority
- CN
- China
- Prior art keywords
- firmware
- bmc
- type information
- version
- header data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及服务器技术领域,具体提供一种BMC固件更新方法、系统、终端及存储介质,包括:解析第一版本固件的第一类型信息和第二版本固件的第二类型信息,其中第一版本固件为目标版本固件,第二版本固件为BMC的原有固件;确认第一类型信息与第二类型信息不一致,获取第一版本固件的偏移参数和BMC配置数据;在执行固件更新之前,将BMC配置数据基于所述偏移参数导入主板存储器。本发明能够自动为新版本固件匹配BMC配置数据,保证BMC固件升级的成功率,提升了设备的可靠性。
Description
技术领域
本发明属于服务器技术领域,具体涉及一种BMC固件更新方法、系统、终端及存储介质。
背景技术
主板设有一个存储器用于存储主板的FRU信息和BMC的配置数据。BMC在启动时从该存储器读取配置数据进行初始化。但是BMC的配置数据在存储器中的存储位置并不统一,当BMC执行固件更新时,由于不同固件对应的在存储器中的存储位置不同,新版本固件在按照自身的存储位置去读取配置信息时,会读取到错误配置数据或读取配置数据失败。这就导致BMC在升级固件后不可用,固件升级失败,降低了服务器的可靠性。
发明内容
针对现有技术的上述不足,本发明提供一种BMC固件更新方法、系统、终端及存储介质,以解决上述技术问题。
第一方面,本发明提供一种BMC固件更新方法,包括:
解析第一版本固件的第一类型信息和第二版本固件的第二类型信息,其中第一版本固件为目标版本固件,第二版本固件为BMC的原有固件;
确认第一类型信息与第二类型信息不一致,获取第一版本固件的偏移参数和BMC配置数据;
在执行固件更新之前,将BMC配置数据基于所述偏移参数导入主板存储器。
在一个可选的实施方式中,解析第一版本固件的第一类型信息和第二版本固件的第二类型信息,其中第一版本固件为目标版本固件,第二版本固件为BMC的原有固件,包括:
提取待升级的第一版本固件的头部数据;
基于预存的头部数据解析规则从所述头部数据中提取第一类型信息、偏移参数和校验和,所述第一类型信息包括厂商信息和BMC类型信息;
基于所述校验和对所述头部数据的完整性进行校验,若所述头部数据未通过校验则重新采集第一版本固件的头部数据或重新下载第一版本固件文件,直至所述头部数据通过完整性校验;
将所述偏移参数保存至结构体。
在一个可选的实施方式中,基于预存的头部数据解析规则从所述头部数据中提取第一类型信息、偏移参数和校验和,包括:
提取头部数据中第三位字节、第四位字节和第五位字节组成的字段,得到厂商信息;
提取头部数据中第六位字节组成的字段,得到BMC类型信息;
提取头部数据中第七位字节和第八位字节组成的字段,得到偏移量位置;
提取头部数据中最后一位字节,得到校验和。
在一个可选的实施方式中,在确认第一类型信息与第二类型信息不一致之前,所述方法还包括:
比对第一类型信息和第二类型信息,若两者一致,则将BMC的固件由第二版本固件更新为第一版本固件。
在一个可选的实施方式中,确认第一类型信息与第二类型信息不一致,则获取第一版本固件的偏移参数和BMC配置数据,包括:
获取第二版本固件的第二头部数据,从第二头部数据提取第二偏移参数;
基于所述第二偏移参数从主板存储器读取BMC配置数据,并将所述BMC配置数据保存至指定路径。
在一个可选的实施方式中,在执行固件更新之前,将BMC配置数据基于所述偏移参数导入主板存储器,包括:
将BMC配置数据从所述偏移参数指示的偏移位置开始写入主板寄存器。
在一个可选的实施方式中,所述方法还包括:
BMC基于VGA显存的剩余空间为固件文件分配存储区域;
将所述存储区域的容量值通过VGA接口发送至带内主机,以使带内主机将固件文件分割为子文件,所述子文件的大小不超过所述容量值;
通过VGA接口接收的子文件缓存至VGA显存的所述存储区域,从所述存储区域提取子文件并将提取的子文件转存至固件文件存储路径;
不断对所述固件文件存储路径下的新增子文件进行整合,直至通过KCS接口接收到带内主机发送的提示文件发送完成的信息,得到第一版本固件文件;
确认第一类型信息与第二类型信息一致,或将BMC配置数据基于所述偏移参数导入主板存储器的操作完成,将第一版本固件文件写入用于存储固件文件的存储器,并覆盖掉所述存储器内的第二版本固件文件。
第二方面,本发明提供一种BMC固件更新系统,包括:
固件解析模块,用于解析第一版本固件的第一类型信息和第二版本固件的第二类型信息,其中第一版本固件为目标版本固件,第二版本固件为BMC的原有固件;
数据获取模块,用于确认第一类型信息与第二类型信息不一致,获取第一版本固件的偏移参数和BMC配置数据;
配置导入模块,用于在执行固件更新之前,将BMC配置数据基于所述偏移参数导入主板存储器。
在一个可选的实施方式中,解析第一版本固件的第一类型信息和第二版本固件的第二类型信息,其中第一版本固件为目标版本固件,第二版本固件为BMC的原有固件,包括:
提取待升级的第一版本固件的头部数据;
基于预存的头部数据解析规则从所述头部数据中提取第一类型信息、偏移参数和校验和,所述第一类型信息包括厂商信息和BMC类型信息;
基于所述校验和对所述头部数据的完整性进行校验,若所述头部数据未通过校验则重新采集第一版本固件的头部数据或重新下载第一版本固件文件,直至所述头部数据通过完整性校验;
将所述偏移参数保存至结构体。
在一个可选的实施方式中,基于预存的头部数据解析规则从所述头部数据中提取第一类型信息、偏移参数和校验和,包括:
提取头部数据中第三位字节、第四位字节和第五位字节组成的字段,得到厂商信息;
提取头部数据中第六位字节组成的字段,得到BMC类型信息;
提取头部数据中第七位字节和第八位字节组成的字段,得到偏移量位置;
提取头部数据中最后一位字节,得到校验和。
在一个可选的实施方式中,在确认第一类型信息与第二类型信息不一致之前,所述方法还包括:
比对第一类型信息和第二类型信息,若两者一致,则将BMC的固件由第二版本固件更新为第一版本固件。
在一个可选的实施方式中,确认第一类型信息与第二类型信息不一致,则获取第一版本固件的偏移参数和BMC配置数据,包括:
获取第二版本固件的第二头部数据,从第二头部数据提取第二偏移参数;
基于所述第二偏移参数从主板存储器读取BMC配置数据,并将所述BMC配置数据保存至指定路径。
在一个可选的实施方式中,在执行固件更新之前,将BMC配置数据基于所述偏移参数导入主板存储器,包括:
将BMC配置数据从所述偏移参数指示的偏移位置开始写入主板寄存器。
在一个可选的实施方式中,所述方法还包括:
BMC基于VGA显存的剩余空间为固件文件分配存储区域;
将所述存储区域的容量值通过VGA接口发送至带内主机,以使带内主机将固件文件分割为子文件,所述子文件的大小不超过所述容量值;
通过VGA接口接收的子文件缓存至VGA显存的所述存储区域,从所述存储区域提取子文件并将提取的子文件转存至固件文件存储路径;
不断对所述固件文件存储路径下的新增子文件进行整合,直至通过KCS接口接收到带内主机发送的提示文件发送完成的信息,得到第一版本固件文件;
确认第一类型信息与第二类型信息一致,或将BMC配置数据基于所述偏移参数导入主板存储器的操作完成,将第一版本固件文件写入用于存储固件文件的存储器,并覆盖掉所述存储器内的第二版本固件文件。
第三方面,提供一种终端,包括:
处理器、存储器,其中,
该存储器用于存储计算机程序,
该处理器用于从存储器中调用并运行该计算机程序,使得终端执行上述的终端的方法。
第四方面,提供了一种计算机存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
本发明的有益效果在于,本发明提供的BMC固件更新方法、系统、终端及存储介质,通过在固件升级之前比较两版固件文件的类型信息,若两版固件文件的类型信息不一致则说明存在配置偏差的风险,因此获取新版本固件的偏移参数和当前BMC配置数据,重新向主板存储器导入BMC配置数据,以使新版本固件能够准确识别BMC配置数据。本发明能够自动为新版本固件匹配BMC配置数据,保证BMC固件升级的成功率,提升了设备的可靠性。
本发明提供的BMC固件更新方法,通过比较FW vendor和FW type,只有在供应商或类型不同的情况下才执行BMC固件更新。这种精确控制机制避免了对相同供应商或类型的BMC执行不必要的固件更新,节省了时间和资源,提高了系统效率。
本发明通过分批次接收固件文件,最终整合为完整的固件文件,在整个固件传输过程中,既能通过高速的VGA接口传输固件文件以提升传输效率,又可以降低固件文件对VGA显存的占用,降低对其它业务的影响。
此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例的方法的示意性流程图。
图2是本发明一个实施例的方法的另一示意性流程图。
图3是本发明一个实施例的系统的示意性框图。
图4为本发明实施例提供的一种终端的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
下面对本发明中出现的关键术语进行解释。
BMC,执行伺服器远端管理控制器,英文全称为Baseboard ManagementController. 为基板管理控制器。它可以在机器未开机的状态下,对机器进行固件升级、查看机器设备、等一些操作。在BMC中完全实现IPMI功能需要一个功能强大的16位元或32位元微控制器以及用于数据储存的RAM、用于非挥发性数据储存的快闪记忆体和韧体,在安全远程重启、安全重新上电、LAN警告和系统健康监视方面能提供基本的远程可管理性。除了基本的IPMI功能和系统工作监视功能外,通过利用2个快闪记忆体之一储存以前的BIOS,mBMC还能实现BIOS快速元件的选择和保护。例如,在远程BIOS升级後系统不能启动时,远程管理人员可以切换回以前工作的BIOS映像来启动系统。一旦BIOS升级後,BIOS映像还能被锁住,可有效防止病毒对它的侵害。
固件(Firmware)就是写入EPROM(可擦写可编程只读存储器)或EEPROM(电可擦可编程只读存储器)中的程序。固件是担任着一个系统最基础最底层工作的软件。而在硬件设备中,固件就是硬件设备的灵魂,因为一些硬件设备除了固件以外没有其它软件组成,因此固件也就决定着硬件设备的功能及性能。
VGA(Video Graphics Array)视频图形阵列是IBM于1987年提出的一个使用模拟信号的电脑显示标准。VGA接口即电脑采用VGA标准输出数据的专用接口。VGA接口共有15针,分成3排,每排5个孔,显卡上应用最为广泛的接口类型,绝大多数显卡都带有此种接口。
KCS接口协议KCS(Keyboard Controller Style,键盘控制器方式)是用于BMC 和SMS的一种传输协议,早期用于传输键盘敲击的数据,其速度和效率都不高。
进一步由背景技术可知, 在相同平台上可支持不同型态的BMC固件(例如OpenBMC或AMI基于BMC的固件),甚至不同厂家出版的BMC FW互相刷新时,常常遇到以下问题:BMC使用不同的EEPROM offset里的设定值来做设定,造成BMC在运行时出现问题,例如: 当BMCFW 1使用EEPROM offset 0x1000的设定值当作风扇控制的依据(设定值为1时代表手动控制风扇,设定值为0时代表自动控制风扇), 而BMC FW 2使用EEPROM offset 0x1000的设定值当作用户配置的依据(设定值为1时代表user account使用大写,设定值为0时代表useraccount使用小写), 当平台原本使用BMC FW 2, 此时的EEPROM offset 0x1000的设定值当作用户配置的依据且设定值为1,刷新到BMC FW 1后,BMC FW 1是把EEPROM offset0x1000的设定值当作风扇控制的依据,此时设定值为1,故平台变为手动控制风扇,与预期行为不符合。然而,不同的BMC固件可能根据不同的EEPROM偏移值进行设定,这是无法控制的,因为无法保证所有BMC都使用相同的EEPROM偏移值。这可能导致在互相刷新时,使用了错误的EEPROM偏移值作为设定的依据。
目前的现有技术中,解决这一问题的方式通常是手动修改EEPROM的设定值或进行EEPROM的重新刻录。然而,这些方式存在一些限制和风险。手动修改EEPROM的设定值容易出错且耗时,可能引入设定错误或遗漏。而重新刻录EEPROM则需要额外的操作步骤,且可能导致生产线或系统停机时间增加。因此,需要一种更有效和可靠的方法来确保BMC在互相刷新时使用正确的EEPROM设定值,从而提高系统的稳定性和可靠性。
本发明实施例提供的BMC固件更新方法由计算机设备执行,相应地,BMC固件更新系统运行于计算机设备中。
图1是本发明一个实施例的方法的示意性流程图。其中,图1执行主体可以为一种BMC固件更新系统。根据不同的需求,该流程图中步骤的顺序可以改变,某些可以省略。
如图1所示,该方法包括:
步骤110,解析第一版本固件的第一类型信息和第二版本固件的第二类型信息,其中第一版本固件为目标版本固件,第二版本固件为BMC的原有固件;
步骤120,确认第一类型信息与第二类型信息不一致,获取第一版本固件的偏移参数和BMC配置数据;
步骤130,在执行固件更新之前,将BMC配置数据基于所述偏移参数导入主板存储器。
为了便于对本发明的理解,下面以本发明BMC固件更新方法的原理,结合实施例中对BMC固件进行更新的过程,对本发明提供的BMC固件更新方法做进一步的描述。
本发明的核心是通过定义和解析BMC固件映像的Header来精确控制BMC固件的更新过程,Header的结构包括Header size、BMC FW vendor、BMC FW type、EEPROM偏移值和对应的设定值字段,最后是checksum用于校验Header的完整性,若FW vendor或FW type与当前BMC不相同,根据Header中的EEPROM偏移值和对应的设定值字段,将系统的相关配置灵活地写入EEPROM,以确保与新固件兼容的配置。接下来,执行BMC固件更新操作,将更新的FW映像写入BMC芯片,完成BMC的更新,若FW vendor和FW type与当前BMC相同,由于供应商和类型相同,无需重新写入EEPROM offset设置值。直接执行BMC固件更新操作,以确保BMC固件的最新版本被正确地写入。
具体的,请参考图2,所述BMC固件更新方法包括:
S1、接收目标版本的固件文件。
BMC基于VGA显存的剩余空间为固件文件分配存储区域;将所述存储区域的容量值通过VGA接口发送至带内主机,以使带内主机将固件文件分割为子文件,所述子文件的大小不超过所述容量值;通过VGA接口接收的子文件缓存至VGA显存的所述存储区域,从所述存储区域提取子文件并将提取的子文件转存至固件文件存储路径;不断对所述固件文件存储路径下的新增子文件进行整合,直至通过KCS接口接收到带内主机发送的提示文件发送完成的信息,得到第一版本固件文件。
由于KCS接口的传输效率较慢,采用VGA接口作为数据传输通道以提升固件文件传输效率。同时BMC通过规划一块VGA显存存储区域用于存储固件文件的子文件,然后将区域的容量值发送至主机端,以使主机将固件文件分隔为相应大小的子文件。主机将子文件通过VGA接口发送至BMC并缓存至VGA显存内,BMC随即不断从VGA显存内提取子文件并转存至其他存储器,在其他存储器内对子文件进行整合拼接,由此实现对VGA接口和VGA显存的最小占用,降低对其它业务的影响。最终得到固件文件。
S2、解析第一版本固件的第一类型信息和第二版本固件的第二类型信息,其中第一版本固件为目标版本固件,第二版本固件为BMC的原有固件。
提取待升级的第一版本固件的头部数据;基于预存的头部数据解析规则从所述头部数据中提取第一类型信息、偏移参数和校验和,所述第一类型信息包括厂商信息和BMC类型信息;基于所述校验和对所述头部数据的完整性进行校验,若所述头部数据未通过校验则重新采集第一版本固件的头部数据或重新下载第一版本固件文件,直至所述头部数据通过完整性校验;将所述偏移参数保存至结构体。
BMC update firmware image的header定义如下表所示:
表1 header结构定义
Header结构包括Header size, BMC FW vendor, BMC FW type, EEPROM偏移值和对应的设定值字段(以EEPROM offset 1/Data size/Offset 1 data为offset 1的组),以此类推,最后为checksum。
详细定义如下:
Header size:这是一个2字节的字段,指示整个Header的总大小。
FW vendor:这是一个3字节的字段,用于标识BMC固件的供货商或制造商ID。
FW type:这是一个1字节的字段,指示BMC的类型,例如Open BMC或AMI BMC。
EEPROM offset N:这是一个2字节的字段,指示EEPROM中的偏移量N的位置。
Data size:这是一个1字节的字段,指示从偏移量N开始需要写入多少字节的数据。
Offset N data:这是一个N字节的字段,表示需要写入偏移量N位置的数据值。
Checksum:这是一个1字节的字段,用于校验Header的完整性。
当需要进行BMC更新时,按照以下步骤执行:
解析更新的FW Header:对接收到的FW Header进行解析,根据Header定义,提取各个字段的值。将提取的内容保存至结构体以便后续取用。
具体解析过程例如:提取头部数据中第三位字节、第四位字节和第五位字节组成的字段,得到厂商信息;提取头部数据中第六位字节组成的字段,得到BMC类型信息;提取头部数据中第七位字节和第八位字节组成的字段,得到偏移量位置;提取头部数据中最后一位字节,得到校验和。
S3、比对第一类型信息和第二类型信息,若两者一致,则将BMC的固件由第二版本固件更新为第一版本固件。
比较FW vendor和FW type:将解析得到的FW vendor和FW type与当前BMC的供货商和类型进行比较,以确认是否需要进行更新。若FW vendor和FW type与当前BMC相同,则直接执行BMC更新。由于供应商和类型相同,无需重新写入EEPROM offset设置值。对于相同类型的BMC,其偏移量定义应该是相同的,因此不需要考虑不兼容的问题。可以直接执行BMC固件更新操作,以确保BMC固件的最新版本被正确地写入。
通过比较FW vendor和FW type,只有在供应商或类型不同的情况下才执行BMC固件更新。这种精确控制机制避免了对相同供应商或类型的BMC执行不必要的固件更新,节省了时间和资源,提高了系统效率。
S4、确认第一类型信息与第二类型信息不一致,获取第一版本固件的偏移参数和BMC配置数据;在执行固件更新之前,将BMC配置数据基于所述偏移参数导入主板存储器。
若FW vendor或FW type与当前BMC不相同: i. 根据Header中的EEPROM偏移值和对应的设定值字段,将系统的相关配置写入EEPROM,以确保与新固件兼容的配置。 ii. 执行BMC更新:根据更新的FW映像,将新的BMC固件写入BMC芯片中,以完成BMC的更新。
具体的,当前BMC配置数据的获取方法包括:获取第二版本固件的第二头部数据,从第二头部数据提取第二偏移参数;基于第二偏移参数从主板存储器读取BMC配置数据,并将所述BMC配置数据保存至指定路径。
从结构体读取第一版本固件的偏移参数,将BMC配置数据从该偏移参数指示的偏移位置开始写入主板寄存器。
S5、刷新固件。
利用固件文件中的刷新工具将第一版本固件写入BMC的flash(Flash存储器属,内存器件的一种,是一种非易失性( Non-Volatile )内存)。
上述方法具有以下有益效果:
精确控制更新:通过比较FW vendor和FW type,只有在供应商或类型不同的情况下才执行BMC固件更新。这种精确控制机制避免了对相同供应商或类型的BMC执行不必要的固件更新,节省了时间和资源,提高了系统效率。
灵活的配置管理:针对不同供应商或类型的BMC,通过EEPROM offset设置值和配置字段的灵活管理,实现了与新固件兼容的配置。这意味着系统可以根据需要灵活地写入EEPROM,自动适配不同的BMC设备,提高了系统的可定制性和适应性。这种灵活配置的优势使得固件更新过程更加灵活、便捷,并且减少了人工配置的工作量。
自动检测与默认值写入:通过BMC固件更新的过程,本发明技术方案能够自动检测BMC的类型或供应商差异,并根据需要将默认值写入EEPROM。这消除了手动设置和烧录EEPROM的需要,大大简化了更新过程,降低了人工错误的风险。自动检测和默认值写入的优点提高了更新的准确性和可靠性。
综上所述,本发明技术方案通过精确控制更新、灵活的配置管理和自动检测与默认值写入,为BMC固件更新带来了多重有益效果与优点。这些优势包括节省时间和资源、提高系统效率、增强可定制性和适应性,以及简化更新过程并降低人工错误的风险。这些效果和优点共同提升了BMC固件更新的质量和效率,提供了更可靠和方便的解决方案。
在一些实施例中,所述BMC固件更新系统可以包括多个由计算机程序段所组成的功能模块。所述BMC固件更新系统中的各个程序段的计算机程序可以存储于计算机设备的存储器中,并由至少一个处理器所执行,以执行(详见图1描述)BMC固件更新的功能。
本实施例中,所述BMC固件更新系统根据其所执行的功能,可以被划分为多个功能模块,如图3所示。系统300的功能模块可以包括:固件解析模块310、数据获取模块320、配置导入模块330。本发明所称的模块是指一种能够被至少一个处理器所执行并且能够完成固定功能的一系列计算机程序段,其存储在存储器中。在本实施例中,关于各模块的功能将在后续的实施例中详述。
固件解析模块,用于解析第一版本固件的第一类型信息和第二版本固件的第二类型信息,其中第一版本固件为目标版本固件,第二版本固件为BMC的原有固件;
数据获取模块,用于确认第一类型信息与第二类型信息不一致,获取第一版本固件的偏移参数和BMC配置数据;
配置导入模块,用于在执行固件更新之前,将BMC配置数据基于所述偏移参数导入主板存储器。
可选地,作为本发明一个实施例,解析第一版本固件的第一类型信息和第二版本固件的第二类型信息,其中第一版本固件为目标版本固件,第二版本固件为BMC的原有固件,包括:
提取待升级的第一版本固件的头部数据;
基于预存的头部数据解析规则从所述头部数据中提取第一类型信息、偏移参数和校验和,所述第一类型信息包括厂商信息和BMC类型信息;
基于所述校验和对所述头部数据的完整性进行校验,若所述头部数据未通过校验则重新采集第一版本固件的头部数据或重新下载第一版本固件文件,直至所述头部数据通过完整性校验;
将所述偏移参数保存至结构体。
可选地,作为本发明一个实施例,基于预存的头部数据解析规则从所述头部数据中提取第一类型信息、偏移参数和校验和,包括:
提取头部数据中第三位字节、第四位字节和第五位字节组成的字段,得到厂商信息;
提取头部数据中第六位字节组成的字段,得到BMC类型信息;
提取头部数据中第七位字节和第八位字节组成的字段,得到偏移量位置;
提取头部数据中最后一位字节,得到校验和。
可选地,作为本发明一个实施例,在确认第一类型信息与第二类型信息不一致之前,所述方法还包括:
比对第一类型信息和第二类型信息,若两者一致,则将BMC的固件由第二版本固件更新为第一版本固件。
可选地,作为本发明一个实施例,确认第一类型信息与第二类型信息不一致,则获取第一版本固件的偏移参数和BMC配置数据,包括:
获取第二版本固件的第二头部数据,从第二头部数据提取第二偏移参数;
基于所述第二偏移参数从主板存储器读取BMC配置数据,并将所述BMC配置数据保存至指定路径。
可选地,作为本发明一个实施例,在执行固件更新之前,将BMC配置数据基于所述偏移参数导入主板存储器,包括:
将BMC配置数据从所述偏移参数指示的偏移位置开始写入主板寄存器。
可选地,作为本发明一个实施例,所述方法还包括:
BMC基于VGA显存的剩余空间为固件文件分配存储区域;
将所述存储区域的容量值通过VGA接口发送至带内主机,以使带内主机将固件文件分割为子文件,所述子文件的大小不超过所述容量值;
通过VGA接口接收的子文件缓存至VGA显存的所述存储区域,从所述存储区域提取子文件并将提取的子文件转存至固件文件存储路径;
不断对所述固件文件存储路径下的新增子文件进行整合,直至通过KCS接口接收到带内主机发送的提示文件发送完成的信息,得到第一版本固件文件;
确认第一类型信息与第二类型信息一致,或将BMC配置数据基于所述偏移参数导入主板存储器的操作完成,将第一版本固件文件写入用于存储固件文件的存储器,并覆盖掉所述存储器内的第二版本固件文件。
图4为本发明实施例提供的一种终端400的结构示意图,该终端400可以用于执行本发明实施例提供的BMC固件更新方法。
其中,该终端400可以包括:处理器410、存储器420及通信单元430。这些组件通过一条或多条总线进行通信,本领域技术人员可以理解,图中示出的服务器的结构并不构成对本发明的限定,它既可以是总线形结构,也可以是星型结构,还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
其中,该存储器420可以用于存储处理器410的执行指令,存储器420可以由任何类型的易失性或非易失性存储终端或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。当存储器420中的执行指令由处理器410执行时,使得终端400能够执行以下上述方法实施例中的部分或全部步骤。
处理器410为存储终端的控制中心,利用各种接口和线路连接整个电子终端的各个部分,通过运行或执行存储在存储器420内的软件程序和/或模块,以及调用存储在存储器内的数据,以执行电子终端的各种功能和/或处理数据。所述处理器可以由集成电路(Integrated Circuit,简称IC) 组成,例如可以由单颗封装的IC 所组成,也可以由连接多颗相同功能或不同功能的封装IC而组成。举例来说,处理器410可以仅包括中央处理器(Central Processing Unit,简称CPU)。在本发明实施方式中,CPU可以是单运算核心,也可以包括多运算核心。
通信单元430,用于建立通信信道,从而使所述存储终端可以与其它终端进行通信。接收其他终端发送的用户数据或者向其他终端发送用户数据。
本发明还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本发明提供的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:read-only memory,简称:ROM)或随机存储记忆体(英文:random access memory,简称:RAM)等。
因此,本发明通过在固件升级之前比较两版固件文件的类型信息,若两版固件文件的类型信息不一致则说明存在配置偏差的风险,因此获取新版本固件的偏移参数和当前BMC配置数据,重新向主板存储器导入BMC配置数据,以使新版本固件能够准确识别BMC配置数据。本发明能够自动为新版本固件匹配BMC配置数据,保证BMC固件升级的成功率,提升了设备的可靠性,本实施例所能达到的技术效果可以参见上文中的描述,此处不再赘述。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中如U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质,包括若干指令用以使得一台计算机终端(可以是个人计算机,服务器,或者第二终端、网络终端等)执行本发明各个实施例所述方法的全部或部分步骤。
本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于终端实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,系统或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种BMC固件更新方法,其特征在于,包括:
解析第一版本固件的第一类型信息和第二版本固件的第二类型信息,其中第一版本固件为目标版本固件,第二版本固件为BMC的原有固件;
确认第一类型信息与第二类型信息不一致,获取第一版本固件的偏移参数和BMC配置数据;
在执行固件更新之前,将BMC配置数据基于所述偏移参数导入主板存储器。
2.根据权利要求1所述的方法,其特征在于,解析第一版本固件的第一类型信息和第二版本固件的第二类型信息,其中第一版本固件为目标版本固件,第二版本固件为BMC的原有固件,包括:
提取待升级的第一版本固件的头部数据;
基于预存的头部数据解析规则从所述头部数据中提取第一类型信息、偏移参数和校验和,所述第一类型信息包括厂商信息和BMC类型信息;
基于所述校验和对所述头部数据的完整性进行校验,若所述头部数据未通过校验则重新采集第一版本固件的头部数据或重新下载第一版本固件文件,直至所述头部数据通过完整性校验;
将所述偏移参数保存至结构体。
3.根据权利要求2所述的方法,其特征在于,基于预存的头部数据解析规则从所述头部数据中提取第一类型信息、偏移参数和校验和,包括:
提取头部数据中第三位字节、第四位字节和第五位字节组成的字段,得到厂商信息;
提取头部数据中第六位字节组成的字段,得到BMC类型信息;
提取头部数据中第七位字节和第八位字节组成的字段,得到偏移量位置;
提取头部数据中最后一位字节,得到校验和。
4.根据权利要求1所述的方法,其特征在于,在确认第一类型信息与第二类型信息不一致之前,所述方法还包括:
比对第一类型信息和第二类型信息,若两者一致,则将BMC的固件由第二版本固件更新为第一版本固件。
5.根据权利要求1或2所述的方法,其特征在于,确认第一类型信息与第二类型信息不一致,则获取第一版本固件的偏移参数和BMC配置数据,包括:
获取第二版本固件的第二头部数据,从第二头部数据提取第二偏移参数;
基于所述第二偏移参数从主板存储器读取BMC配置数据,并将所述BMC配置数据保存至指定路径。
6.根据权利要求1所述的方法,其特征在于,在执行固件更新之前,将BMC配置数据基于所述偏移参数导入主板存储器,包括:
将BMC配置数据从所述偏移参数指示的偏移位置开始写入主板寄存器。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
BMC基于VGA显存的剩余空间为固件文件分配存储区域;
将所述存储区域的容量值通过VGA接口发送至带内主机,以使带内主机将固件文件分割为子文件,所述子文件的大小不超过所述容量值;
通过VGA接口接收的子文件缓存至VGA显存的所述存储区域,从所述存储区域提取子文件并将提取的子文件转存至固件文件存储路径;
不断对所述固件文件存储路径下的新增子文件进行整合,直至通过KCS接口接收到带内主机发送的提示文件发送完成的信息,得到第一版本固件文件;
确认第一类型信息与第二类型信息一致,或将BMC配置数据基于所述偏移参数导入主板存储器的操作完成,将第一版本固件文件写入用于存储固件文件的存储器,并覆盖掉所述存储器内的第二版本固件文件。
8.一种BMC固件更新系统,其特征在于,包括:
固件解析模块,用于解析第一版本固件的第一类型信息和第二版本固件的第二类型信息,其中第一版本固件为目标版本固件,第二版本固件为BMC的原有固件;
数据获取模块,用于确认第一类型信息与第二类型信息不一致,获取第一版本固件的偏移参数和BMC配置数据;
配置导入模块,用于在执行固件更新之前,将BMC配置数据基于所述偏移参数导入主板存储器。
9.一种终端,其特征在于,包括:
存储器,用于存储BMC固件更新程序;
处理器,用于执行所述BMC固件更新程序时实现如权利要求1-7任一项所述BMC固件更新方法的步骤。
10.一种存储有计算机程序的计算机可读存储介质,其特征在于,所述可读存储介质上存储有BMC固件更新程序,所述BMC固件更新程序被处理器执行时实现如权利要求1-7任一项所述BMC固件更新方法的步骤。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202311367075.9A CN117348905A (zh) | 2023-10-20 | 2023-10-20 | Bmc固件更新方法、系统、终端及存储介质 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202311367075.9A CN117348905A (zh) | 2023-10-20 | 2023-10-20 | Bmc固件更新方法、系统、终端及存储介质 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN117348905A true CN117348905A (zh) | 2024-01-05 |
Family
ID=89367612
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202311367075.9A Pending CN117348905A (zh) | 2023-10-20 | 2023-10-20 | Bmc固件更新方法、系统、终端及存储介质 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN117348905A (zh) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN119676083A (zh) * | 2024-12-20 | 2025-03-21 | 苏州元脑智能科技有限公司 | 一种网络设置方法、装置、设备及介质 |
-
2023
- 2023-10-20 CN CN202311367075.9A patent/CN117348905A/zh active Pending
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN119676083A (zh) * | 2024-12-20 | 2025-03-21 | 苏州元脑智能科技有限公司 | 一种网络设置方法、装置、设备及介质 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN110045991B (zh) | 服务器的raid配置方法、装置、计算机设备和存储介质 | |
| US20080270677A1 (en) | Safe software revision for embedded systems | |
| US20120303940A1 (en) | System, method and program product to manage firmware on a system board | |
| CN108509215B (zh) | 一种系统软件的更换方法、装置、终端设备及存储介质 | |
| CN112231005A (zh) | 一种基于uboot管理fpga版本的方法 | |
| CN111813428A (zh) | 终端固件的升级方法、装置、电子设备及存储介质 | |
| CN108153548A (zh) | 一种emmc固件升级方法和装置 | |
| CN118051277A (zh) | 服务器的启动方法、装置、存储介质和电子设备 | |
| CN113835729B (zh) | 升级方法、装置、终端设备及计算机可读存储介质 | |
| CN111026428A (zh) | 能同时远程在线更新多个板卡中fpga固件程序的系统及方法 | |
| CN117348905A (zh) | Bmc固件更新方法、系统、终端及存储介质 | |
| CN117194306A (zh) | 设备信息显示方法及系统 | |
| US11061689B2 (en) | Synchronization method for performing bi-directional data synchronization for bios | |
| CN114116027A (zh) | Pcie设备自动安装驱动的方法、系统、终端及存储介质 | |
| CN107908418B (zh) | 光纤通道节点卡的逻辑程序升级方法及光纤通道总线设备 | |
| CN114253573A (zh) | PCIe设备固件批量升级方法、系统、终端及存储介质 | |
| CN112860283B (zh) | Sp升级包的自识别升级方法、装置及计算机设备 | |
| CN109783031B (zh) | 用于RAID卡的盘符和slot号校验方法、装置、终端及存储介质 | |
| CN119576420A (zh) | 基本输入输出系统的配置方法及装置 | |
| CN119105784A (zh) | 设备升级方法、装置、电子设备及存储介质 | |
| CN117742761A (zh) | 固件更新方法及装置、存储介质和电子设备 | |
| CN118796306A (zh) | 一种计算设备的部件配置方法及计算设备 | |
| CN113900934B (zh) | 多镜像混合刷新测试方法、系统、终端及存储介质 | |
| CN117215656A (zh) | 基于Linux系统自适配车机芯片方法、装置、电子设备及车辆 | |
| CN116719564A (zh) | 基于存储器分区的设备启动方法、装置及电子设备 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination |