CN113568632B - 服务器电源固件更新方法、装置、计算机设备及存储介质 - Google Patents
服务器电源固件更新方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN113568632B CN113568632B CN202110694449.2A CN202110694449A CN113568632B CN 113568632 B CN113568632 B CN 113568632B CN 202110694449 A CN202110694449 A CN 202110694449A CN 113568632 B CN113568632 B CN 113568632B
- Authority
- CN
- China
- Prior art keywords
- firmware
- version
- power supply
- image file
- updating
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000003860 storage Methods 0.000 title claims abstract description 27
- 238000004458 analytical method Methods 0.000 claims description 8
- 238000000605 extraction Methods 0.000 claims description 5
- 238000007781 pre-processing Methods 0.000 claims description 4
- 238000012360 testing method Methods 0.000 abstract description 10
- 230000008569 process Effects 0.000 abstract description 6
- 230000006870 function Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 238000007405 data analysis Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本发明适用于计算机领域,公开了一种服务器电源固件更新方法、装置、计算机设备及存储介质,该方法通过获取服务器电源固件镜像文件,并将获取到的服务器电源固件镜像文件自动解析成字节数组格式的固件数据,再向电源端发送包含上述固件数据的版本更新指令,使得电源端可以根据上述版本更新指令,更新服务器电源固件的版本。整个更新过程,无需人工手动编辑固件数据,不仅省时省力,而且还可保证资料的正确性,降低因人为操作失误而导致的更新错误率;并且,在每次需要变更固件版本时,也无需逐笔修改固件镜像文件的相关数据,简化了更新的操作流程,大大提高了更新效率;还可实现固件更新压力的自动测试。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种服务器电源固件更新方法、装置、计算机设备及存储介质。
背景技术
服务器电源固件(例如,MCU固件)在实际使用过程中通常会涉及到版本升/降级的需求。
传统的服务器电源固件升/降级方式是利用PC端USB-I2C上位机软件,通过按顺序发送经过人工编辑的固件数据给电源端的方式来完成服务器电源固件的升/降级。这种方式存在诸多问题:采用人工方式逐笔编辑每一笔固件数据,按每一笔16或32字节的格式,最多需要发送7810笔数据,不仅费时,而且容易因为人工疏忽等原因而导致无法保证资料的正确性;另外,在固件版本变更的情况下,每次变更都需要逐笔修改镜像数据后再发送,更新效率低,且无法自动做固件更新压力测试(不同版本来回更新)。
可见,现有的服务器电源固件的升/降级更新方式存在耗时长、更新效率低的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种服务器电源固件更新方法、装置、计算机设备及存储介质,以解决现有的服务器电源固件的升/降级更新方式存在耗时长、更新效率低的问题。
一种服务器电源固件更新方法,包括:
获取服务器电源固件镜像文件,并将所述服务器电源固件镜像文件解析成字节数组格式的固件数据;
向电源端发送包含所述固件数据的版本更新指令,以使所述电源端根据所述版本更新指令,更新所述服务器电源固件的版本。
一种服务器电源固件更新装置,包括:
固件数据获取模块,用于获取服务器电源固件镜像文件,并将所述服务器电源固件镜像文件解析成字节数组格式的固件数据;
版本更新模块,用于向电源端发送包含所述固件数据的版本更新指令,以使所述电源端根据所述版本更新指令,更新所述服务器电源固件的版本。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机可读指令,所述处理器执行所述计算机可读指令时实现上述服务器电源固件更新方法。
一个或多个存储有计算机可读指令的可读存储介质,所述计算机可读指令被一个或多个处理器执行时,使得所述一个或多个处理器执行如上述服务器电源固件更新方法。
上述服务器电源固件更新方法、装置、计算机设备及存储介质,本发明在需要对服务器电源固件进行升级或者降级时,通过获取服务器电源固件镜像文件,并将获取到的服务器电源固件镜像文件自动解析成字节数组格式的固件数据,再向电源端发送包含上述固件数据的版本更新指令,使得电源端可以根据上述版本更新指令,更新服务器电源固件的版本。整个更新过程,无需人工手动编辑固件数据,不仅省时省力,而且还可保证资料的正确性,降低因人为操作失误而导致的更新错误率;并且,在每次需要变更固件版本时,也无需逐笔修改固件镜像文件的相关数据,简化了更新的操作流程,大大提高了更新效率;还可实现固件更新压力的自动测试,无需操作员“蹲岗”执行更新压力测试操作,大大减轻了操作员的工作强度和压力。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中服务器电源固件更新方法的应用环境示意图;
图2是本发明实施例提供的一种服务器电源固件更新方法的硬件架构示意图;
图3是本发明一实施例中服务器电源固件更新方法的流程示意图;
图4是传统上位机更新版本软件界面的部分截图;
图5是本发明一实施例中的Bin格式的镜像文件的部分内容截图;
图6是本发明一实施例中的Hex格式的镜像文件的部分内容截图;
图7是本发明一实施例中Hex格式的镜像文件中包括文件结束行的部分内容截图;
图8是本发明一实施例中Hex格式的镜像文件中包括扩展线性地址行的部分内容截图;
图9是本发明一实施例中服务器电源固件更新装置的结构示意图;
图10是本发明一实施例中计算机设备的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本实施例提供的服务器电源固件更新方法,可应用在如图1的应用环境中,包括电源端和电源外部的客户端(或服务器),客户端(或服务器)可通过I2C总线与电源端连接。客户端(或服务器)通过获取电源端的服务器电源固件镜像文件,并将所述服务器电源固件镜像文件解析成字节数组格式的固件数据,并将包含上述固件数据的更新指令发送给电源端,电源端在接收到上述更新指令后,利用上述固件数据更新服务器电源固件的版本。其中,客户端包括但不限于各种个人计算机、笔记本电脑、智能手机、平板电脑,比如,可以是利用USB-I2C适配卡搭配PC(个人计算机)端软件的模拟系统主机。服务器可以是独立的服务器或者是多个服务器组成的服务器集群。
图2示出了本发明实施例提供的一种服务器电源固件更新方法的硬件架构示意图,包括PC(个人计算机)端、USB-I2C Adaptor(USB转I2C界面卡,是支持I2C总线技术的硬件装置)和Digital Power Supply(服务器电源)。PC端通过USB线与USB-I2C Adaptor连接,USB转I2C界面卡通过I2C总线与服务器电源连接。存储在PC端的上位机软件可通过USB转I2C界面卡获取服务器电源的固件镜像文件,将服务器电源固件镜像文件解析成字节数组格式的固件数据;再通过I2C总线协议向服务器电源发送包含上述固件数据的更新指令,服务器电源在接收到该更新指令后,可由其内部的微处理器执行固件的版本更新操作。
本发明利用微软Visual Studio平台的C#编程语言实现,其程序软件源代码包含I2C_Comm.cs和Main_Form.cs两个文件。其中,I2C_Comm.cs文件用于通过APIDllImport方式调用WinI2CUSBpro.dll(为USB转I2C适配卡的动态链接库)的所有函数,库函数说明可以在手册中查询,再调用SetI2CFrequency设置通讯频率为100Khz,以及Enable3VOutputPower置1来使能I2C总线的3.3V上拉电压,接着调用I2CWriteArray函数和I2CReadArray函数,并分别封装成I2C_Write和I2C_Read两个函数备用,完成I2C通讯模组。
Main_Form.cs文件用于整合服务器电源固件镜像文件导入,并将服务器电源固件镜像文件解析成字节数组格式的固件数据,并向电源端发送包含该固件数据的版本更新指令,以使电源端根据所述版本更新指令,更新服务器电源固件的版本这些更新流程为一个函数,并利用动态链接库整合的读、写指令中的写指令,按每一笔16或32字节的格式逐笔发送固件数据给电源端,并可利用动态链接库整合的读、写指令中的读指令,读取服务器电源固件版本更新前后的版本信息,并判断服务器电源固件版本更新前后的版本信息是否一致,以确定更新成功与否。另外,还可以实现自动记录每次版本更新的更新结果(更新失败/成功)并展示给用户,供用户参考。
在一实施例中,如图3所示,提供一种服务器电源固件更新方法,该方法应用在图1中的客户端,包括如下步骤:
步骤S10,获取服务器电源固件镜像文件,并将所述服务器电源固件镜像文件解析成字节数组格式的固件数据。
镜像文件是指将特定的一系列文件按照一定的格式制作成单一的文件。在本发明实施例中,服务器电源固件镜像文件,例如,MCU固件镜像文件,是指将内容为经电源端的软件编译后得到的,控制芯片可识别的一系列机器码按照一定的格式制作成单一的文件。
在本发明实施例中,服务器电源固件镜像文件可以存储在电源端,或者预先存储在本地客户端,当需要对服务器电源固件进行版本升/降级更新时,直接调取相关的服务器电源固件镜像文件。
固件数据通常是指转换成字节数组格式的服务器电源固件镜像文件的文件内容(例如,图4中的“Data”列所展示的内容)。
步骤S20,向电源端发送包含所述固件数据的版本更新指令,以使所述电源端根据所述版本更新指令,更新所述服务器电源固件的版本。
在本发明实施例中,所述电源端根据所述版本更新指令,更新所述服务器电源固件的版本,具体地,电源端接收到客户端发送的包含所述固件数据的版本更新指令后,将当前使用版本的固件数据相应地替换成接收到的固件数据。例如,电源端当前使用的固件版本是版本A,从客户端处接收到与版本B对应的固件数据后,用版本B的固件数据替换掉版本A的固件数据,即完成版本更新。
本发明的服务器电源固件更新方法,在需要对服务器电源固件进行升级或者降级时,通过获取服务器电源固件镜像文件,并将获取到的服务器电源固件镜像文件自动解析成字节数组格式的固件数据,再向电源端发送包含上述固件数据的版本更新指令,使得电源端可以根据上述版本更新指令,更新服务器电源固件的版本。整个更新过程,无需人工手动编辑固件数据,不仅省时省力,而且还可保证资料的正确性,降低因人为操作失误而导致的更新错误率;并且,在每次需要变更固件版本时,也无需逐笔修改固件镜像文件的相关数据,简化了更新的操作流程,大大提高了更新效率;还可实现固件更新压力的自动测试,无需操作员“蹲岗”执行更新压力测试操作,大大减轻了操作员的工作强度和压力。
在本发明实施例中,上述服务器电源固件镜像文件包括Bin格式的镜像文件和/或Hex格式的镜像文件。其中,Bin格式的镜像文件是按顺序将机器码逐一写入而成的文件,如图5中的黑色框内“0-9”和“A-F”列所展示的机器码为Bin格式的镜像文件中所记录的文件内容,这些文件内容可以直接读取出来。Hex格式的镜像文件是依据Intel Hex格式将机器码增加Record信息和checksum得到的,如图6中的黑色框内的机器码是Hex格式的镜像文件记录的文件内容。
在另一实施例中,上述步骤S10包括如下步骤:
根据预设的第一文件解析规则,将所述Bin格式的镜像文件解析为字节数组格式的第一固件数据。
在本发明实施例中,根据预设的第一文件解析规则,将所述Bin格式的镜像文件解析为字节数组格式的第一固件数据,具体地,可以根据预设的第一读取规则,读取所述Bin格式的镜像文件中的Bin格式数据,将所述Bin格式数据读入为第一字节数组,得到第一固件数据。
其中,第一读取规则可以是IO.BinaryReader类中的Read(ByteArray,0,Length)方法。
在应用时,可先调用并实例化OpenFileDialog类,设定对话框文件类型为Bin或Hex,默认打开文件筛选器限定这两种格式,再在打开文件对话框选择Bin或Hex格式的镜像文件。
对于Bin格式的镜像文件的解析,可以通过调用并实例化IO.FileStream类,设置只读打开Bin格式文件,再调用并实例化IO.BinaryReader类,使用其Read(ByteArray,0,Length)方法,即可将所有Bin格式数据(如图4中的黑色框内“0-9”和“A-F”列所展示的机器码)读入为第一字节数组(ByteArray),得到第一固件数据。
根据预设的第二文件解析规则,将所述Hex格式的镜像文件解析为字节数组格式的第二固件数据。
在本发明实施例中,根据预设的第二文件解析规则,将所述Hex格式的镜像文件解析为字节数组格式的第二固件数据。具体地,可以根据预设的子函数,对所述Hex格式的镜像文件进行预处理,得到预处理后的Hex格式的镜像文件;将所述预处理后的Hex格式的镜像文件转换成十六进制数据并加入第二字节数组中,得到第二固件数据。
其中,上述步骤“根据预设的子函数,对所述Hex格式的镜像文件进行预处理,得到预处理后的Hex格式的镜像文件”具体包括:根据预设的第二读取规则,读取所述Hex格式的镜像文件中的所有行数据,并去掉其中的文件结束行和扩展线性地址行,得到读取数据。逐行提取出所述读取数据中的字符串,并将所述字符串复制到一维字符数组中,得到预处理后的Hex格式的镜像文件。
在本发明实施例中,第二读取规则可以是List类的ReadAllLines。
在本发明实施例中,首先,利用List类的ReadAllLines读取Hex格式的镜像文件中的所有行数据,去掉其中的文件结束行(如图7中的黑色框所示的End of File Record行)和扩展线性地址行(如图8中的黑色框所示的Extended Linear Address Record行),得到读取数据,再利用List.GetRange逐行提取出上述读取数据中的字符串,并调用CopyTo()的方法将这些字符串逐行复制到一维字符数组中,即得到预处理后的Hex格式的镜像文件。
上述步骤“将所述预处理后的Hex格式的镜像文件转换成十六进制数据并加入字节数组中,得到第二固件数据”包括:按照预设的字符串提取规则,提取出复制到所述一维字符数组中的字符串并存为第二字节数组,得到第二固件数据。
在本发明实施例中,上述预设的字符串提取规则可采用C#中的Substring(参数1,参数2);截取字串的一部分,参数1为左起始位数,参数2为截取几位。例如,预设的字符串提取规则是Substring(i*2+9,2),参数i*2+9为左起始位数,参数2为截取2位。在实际应用时,先去除复制到一维字符数组中的每行字符串的首尾共6个字节后,再通过Substring(i*2+9,2)循环提取出复制到一维字符数组中每行字符串,并强制转换为16进制数据并存为第二字节数组,按此方法直到取完复制到一维字符数组中的所有行的字符串为止,得到第二固件数据。
上述步骤S20包括:向电源端发送包含所述第一固件数据和/或所述第二固件数据的版本更新指令,以使所述电源端根据所述版本更新指令,更新所述服务器电源固件的版本。
在本发明的示例性实施例中,向电源端发送包含上述第一固件数据和/或第二固件数据的版本更新指令,电源端在接收到该版本更新指令后,将当前版本的固件数据相应地替换成第一固件数据和/或第二固件数据,完成版本更新。
在又一实施例中,在执行上述步骤S10“获取服务器电源固件镜像文件”时,获取服务器电源固件的第一版本信息。
在上述步骤S20之后,还包括步骤:获取所述服务器电源固件的第二版本信息;若所述第一版本信息和第二版本信息不一致,则判定所述服务器电源固件的版本更新成功。
在本发明实施例中,第一版本信息和第二版本信息包括服务器电源固件的版本号。其中,版本号通常以数字和字母组合形式表示出来,有时候也根据版本发布时间来命名,命名规则由生产开发商自行定义。
在本发明一示例性实施例中,假设在更新前获取到的电源固件第一版本的版本号为A,在电源端完成版本更新后的第二版本的版本号为A’,通过比较A与A’是否一致(即相同)可以判定出本次的电源固件版本更新结果。若A与A’一致,那么本次的电源固件版本更新失败;若A与A’不一致,那么本次的电源固件版本更新成功。
在本发明的另一示例性实施例中,通常版本更新的目的是为了修复以往固件中存在的BUG以及优化相关性能,因此,上述第一版本信息和第二版本信息还可以是通过电源端运行更新前的服务器电源固件版本和更新后的服务器电源固件版本,获得更新前和更新后的运行结果。通过检测更新版本后的电源固件是否解决了更新版本前的电源固件所存在的BUG或者是优化了更新版本前的电源固件的相关性能来判断更新是否成功。如果更新版本后的电源固件解决了更新版本前的电源固件所存在的BUG或者是优化了更新版本前的电源固件的相关性能,那么可判定本次更新成功,否则,更新失败。
在再一实施例中,上述步骤S10包括:获取与电源端当前使用的第一固件版本对应的第一服务器电源固件镜像文件,以及与待更新的第二固件版本对应的第二服务器电源固件镜像文件,并将所述第一服务器电源固件镜像文件解析成第一版本固件数据,所述第二服务器电源固件镜像文件解析成第二版本固件数据。
上述步骤S20包括:向电源端发送所述第二版本固件数据,以使所述电源端使用所述第二版本固件数据将当前使用的第一固件版本更新为第二固件版本,完成第一次版本更新;待完成第一次版本更新后,向电源端发送所述第一版本固件数据,以使所述电源端将当前使用的第二固件版本更新为第一固件版本,完成第二次版本更新;重复所述第一次版本更新和第二次版本更新的步骤,直至达到预设的更新次数阈值,记录更新结果,并根据所述更新结果计算得出所述服务器电源固件的更新成功率。
在一示例性实施例中,假设电源端当前使用的第一固件版本为版本A,待更新的第二固件版本为版本B,获取与版本A对应的第一服务器电源固件镜像文件并解析成第一版本固件数据,与版本B对应的第二服务器电源固件镜像文件并解析成第二版本固件数据。向电源端发送与版本B对应的第二版本固件数据,使电源端可使用与版本B对应的第二版本固件数据替换掉与版本A对应的第一版本固件数据,以从版本A更新为版本B,完成第一次版本更新,记录更新结果;接着,向电源端发送与版本A对应的第一版本固件数据,使电源端可使用与版本A对应的第一版本固件数据替换掉与版本B对应的第二版本固件数据,以从版本B更新为版本A,完成第二次版本更新,记录更新结果。上述第一次版本更新和第二次版本更新为一次不同版本的来回更新。
在实际应用中,可通过调用I2C_Read读取电源端使用的当前固件版本A的版本信息并显示于第一标签控件,调用I2C_Write开始执行上述更新版本的动作,同时界面上可设置用于显示整个版本更新进度,即向电源端发送固件数据的进度的进度条ProgressBar.Value,通过该进度条可以看到当前的版本更新进度,当完成第一次版本更新后,读取更新后的固件版本B的版本信息并显示于更新后的第二标签控件,通过比对第一标签控件和第二标签控件的标签框内容是否一致来确定更新是否成功,若两标签框内容一致,则表示更新失败,否则表示更新成功。更新结果可通过在标签控件上显示“失败”或“成功”的字样来展示给用户。
类似地,从版本B更新为版本A的更新流程可参照上述从版本A更新为版本B,在此不做赘述。
为了了解电源固件的更新压力(即测试不同版本来回更新时的失败率或成功率),以供技术员作为软件程序改进等做参考,可以重复上述第一次版本更新和第二次版本更新的步骤,直至达到预设的更新次数阈值,记录更新结果(更新成功/失败),并根据所述更新结果计算得出所述服务器电源固件的更新成功率。其中,预设的更新次数阈值可以是100、200次不等,具体的更新次数可以根据实际需求确定,在此不做限定。另外,更新次数阈值可以通过用户预先设置在更新界面的TextBox中,在更需要进行更新压力测试时,可以从该TextBox中获取更新次数阈值。
例如,预设的更新次数阈值为200次,按照上述第一次版本更新和第二次版本更新的步骤重复更新100个来回(即版本A→版本B和版本B→版本A各100次)。第一个来回更新,完成第一次版本更新后,记录更新结果G1(更新失败/成功),完成第二次版本更新后,记录更新结果G2(更新成功/失败);第二个来回更新,完成第一次版本更新后,记录更新结果G3(更新失败/成功),完成第二次版本更新后,记录更新结果G4(更新成功/失败)……直至更新到第100个来回,完成第一次版本更新后,记录更新结果G99(更新失败/成功),完成第二次版本更新后,记录更新结果G100(更新成功/失败),并统计更新成功/失败的次数,计算出服务器电源固件的更新成功率。比如,在这200次更新中,更新成功的次数有195次,更新失败5次,那么更新成功率则为97.5%,更新失败率为2.5%。
本发明方法可一次性获取更新前、后两个不同版本的镜像文件,并通过获取预设的更新次数阈值,即可按照上述更新流程自动执行来回更新的动作,期间,测试人员无需一直蹲守在测试座位上,相比于传统的上位机软件是每次更新固件,都需要手动发送一次固件数据,且固件更新的压力测试需要专职专人,节省了大量的测试时间,减轻了测试人员的工作强度和压力。如果固件更新压力测试的更新次数在一百次以上,使用本发明方法相比传统的手动更新方式可节省2/3以上的时间。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种服务器电源固件更新装置,该服务器电源固件更新装置与上述实施例中服务器电源固件更新方法一一对应。如图9所示,该服务器电源固件更新装置包括固件数据获取模块11和版本更新模块12。各功能模块详细说明如下:
固件数据获取模块11,用于获取服务器电源固件镜像文件,并将所述服务器电源固件镜像文件解析成字节数组格式的固件数据;
版本更新模块12,用于向电源端发送包含所述固件数据的版本更新指令,以使所述电源端根据所述版本更新指令,更新所述服务器电源固件的版本。
在本发明实施例中,所述服务器电源固件镜像文件包括Bin格式的镜像文件和/或Hex格式的镜像文件。
上述固件数据获取模块11包括第一固件数据解析单元和第二固件数据解析单元。
第一固件数据解析单元,用于根据预设的第一文件解析规则,将所述Bin格式的镜像文件解析为字节数组格式的第一固件数据。
第二固件数据解析单元,用于根据预设的第二文件解析规则,将所述Hex格式的镜像文件解析为字节数组格式的第二固件数据。
上述版本更新模块12包括版本更新单元,用于向电源端发送包含所述第一固件数据和/或所述第二固件数据的版本更新指令,以使所述电源端根据所述版本更新指令,更新所述服务器电源固件的版本。
在本发明实施例中,上述第一固件数据解析单元具体用于:根据预设的第一读取规则,读取所述Bin格式的镜像文件中的Bin格式数据,将所述Bin格式数据读入为第一字节数组,得到第一固件数据。
在本发明实施例中,上述第二固件数据解析单元具体用于:根据预设的子函数,对所述Hex格式的镜像文件进行预处理,得到预处理后的Hex格式的镜像文件。具体地,根据预设的第二读取规则,读取所述Hex格式的镜像文件中的所有行数据,并去掉其中的文件结束行和扩展线性地址行,得到读取数据;逐行提取出所述读取数据中的字符串,并将所述字符串复制到一维字符数组中,得到预处理后的Hex格式的镜像文件。
将所述预处理后的Hex格式的镜像文件转换成十六进制数据并加入第二字节数组中,得到第二固件数据。具体地,按照预设的字符串提取规则,提取出复制到所述一维字符数组中的字符串并存为第二字节数组,得到第二固件数据。
在本发明实施例中,上述固件数据获取模块11还包括第一版本信息获取单元,用于获取服务器电源固件的第一版本信息。
上述服务器电源固件更新装置还包括第二版本信息获取模块和判断模块。
第二版本信息获取模块,用于获取所述服务器电源固件的第二版本信息。
判断模块,用于判断所述第一版本信息和第二版本信息是否一致,若不一致,则更新成功。
在本发明实施例中,上述固件数据获取模块11还用于:获取与电源端当前使用的第一固件版本对应的第一服务器电源固件镜像文件,以及与待更新的第二固件版本对应的第二服务器电源固件镜像文件,并将所述第一服务器电源固件镜像文件解析成第一版本固件数据,所述第二服务器电源固件镜像文件解析成第二版本固件数据。
上述版本更新模块12还用于:向电源端发送所述第二版本固件数据,以使所述电源端使用所述第二版本固件数据将当前使用的第一固件版本更新为第二固件版本,完成第一次版本更新。
待完成第一次版本更新后,向电源端发送所述第一版本固件数据,以使所述电源端将当前使用的第二固件版本更新为第一固件版本,完成第二次版本更新。
重复所述第一次版本更新和第二次版本更新的步骤,直至达到预设的更新次数阈值,记录更新结果,并根据所述更新结果计算得出所述服务器电源固件的更新成功率。
关于服务器电源固件更新装置的具体限定可以参见上文中对于服务器电源固件更新方法的限定,在此不再赘述。上述服务器电源固件更新装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括可读存储介质、内存储器。该可读存储介质存储有操作系统、计算机可读指令和数据库。该内存储器为可读存储介质中的操作系统和计算机可读指令的运行提供环境。该计算机设备的数据库用于存储服务器电源固件更新方法所涉及的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机可读指令被处理器执行时以实现一种服务器电源固件更新方法。本实施例所提供的可读存储介质包括非易失性可读存储介质和易失性可读存储介质。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括可读存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机可读指令。该内存储器为可读存储介质中的操作系统和计算机可读指令的运行提供环境。该计算机设备的网络接口用于与外部服务器通过网络连接通信。该计算机可读指令被处理器执行时以实现一种服务器电源固件更新方法。本实施例所提供的可读存储介质包括非易失性可读存储介质和易失性可读存储介质。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机可读指令,处理器执行计算机可读指令时实现以下步骤:
获取服务器电源固件镜像文件,并将所述服务器电源固件镜像文件解析成字节数组格式的固件数据;
向电源端发送包含所述固件数据的版本更新指令,以使所述电源端根据所述版本更新指令,更新所述服务器电源固件的版本。
在一个实施例中,提供了一个或多个存储有计算机可读指令的计算机可读存储介质,本实施例所提供的可读存储介质包括非易失性可读存储介质和易失性可读存储介质。可读存储介质上存储有计算机可读指令,计算机可读指令被一个或多个处理器执行时实现以下步骤:
获取服务器电源固件镜像文件,并将所述服务器电源固件镜像文件解析成字节数组格式的固件数据;
向电源端发送包含所述固件数据的版本更新指令,以使所述电源端根据所述版本更新指令,更新所述服务器电源固件的版本。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指令相关的硬件来完成,所述的计算机可读指令可存储于一非易失性可读取存储介质或易失性可读存储介质中,该计算机可读指令在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (9)
1.一种服务器电源固件更新方法,其特征在于,包括:
获取服务器电源固件镜像文件,并将所述服务器电源固件镜像文件解析成字节数组格式的固件数据;
通过I2C总线协议向电源端发送包含所述固件数据的版本更新指令,以使所述电源端根据所述版本更新指令,更新所述服务器电源固件的版本;
所述获取服务器电源固件镜像文件,并将所述服务器电源固件镜像文件解析成字节数组格式的固件数据,包括:
获取与电源端当前使用的第一固件版本对应的第一服务器电源固件镜像文件,以及与待更新的第二固件版本对应的第二服务器电源固件镜像文件,并将所述第一服务器电源固件镜像文件解析成第一版本固件数据,所述第二服务器电源固件镜像文件解析成第二版本固件数据;
所述向电源端发送包含所述固件数据的版本更新指令,以使所述电源端根据所述版本更新指令,更新所述服务器电源固件的版本,包括:
向电源端发送所述第二版本固件数据,以使所述电源端使用所述第二版本固件数据将当前使用的第一固件版本更新为第二固件版本,完成第一次版本更新;
待完成第一次版本更新后,向电源端发送所述第一版本固件数据,以使所述电源端将当前使用的第二固件版本更新为第一固件版本,完成第二次版本更新;
重复所述第一次版本更新和第二次版本更新的步骤,直至达到预设的更新次数阈值,记录更新结果,并根据所述更新结果计算得出所述服务器电源固件的更新成功率。
2.如权利要求1所述的服务器电源固件更新方法,其特征在于,所述服务器电源固件镜像文件包括Bin格式的镜像文件和/或Hex格式的镜像文件;
所述获取服务器电源固件镜像文件,并将所述服务器电源固件镜像文件解析成字节数组格式的固件数据,包括:
根据预设的第一文件解析规则,将所述Bin格式的镜像文件解析为字节数组格式的第一固件数据;
根据预设的第二文件解析规则,将所述Hex格式的镜像文件解析为字节数组格式的第二固件数据;
所述向电源端发送包含所述固件数据的版本更新指令,以使所述电源端根据所述版本更新指令,更新所述服务器电源固件的版本,包括:
向电源端发送包含所述第一固件数据和/或所述第二固件数据的版本更新指令,以使所述电源端根据所述版本更新指令,更新所述服务器电源固件的版本。
3.如权利要求2所述的服务器电源固件更新方法,其特征在于,所述根据预设的第一文件解析规则,将所述Bin格式的镜像文件解析为字节数组格式的第一固件数据,包括:
根据预设的第一读取规则,读取所述Bin格式的镜像文件中的Bin格式数据,将所述Bin格式数据读入为第一字节数组,得到第一固件数据。
4.如权利要求2所述的服务器电源固件更新方法,其特征在于,所述根据预设的第二文件解析规则,将所述Hex格式的镜像文件解析为字节数组格式的第二固件数据,包括:
根据预设的子函数,对所述Hex格式的镜像文件进行预处理,得到预处理后的Hex格式的镜像文件;
将所述预处理后的Hex格式的镜像文件转换成十六进制数据并加入第二字节数组中,得到第二固件数据。
5.如权利要求4所述的服务器电源固件更新方法,其特征在于,所述根据预设的子函数,对所述Hex格式的镜像文件进行预处理,得到预处理后的Hex格式的镜像文件,包括:
根据预设的第二读取规则,读取所述Hex格式的镜像文件中的所有行数据,并去掉其中的文件结束行和扩展线性地址行,得到读取数据;
逐行提取出所述读取数据中的字符串,并将所述字符串复制到一维字符数组中,得到预处理后的Hex格式的镜像文件;
所述将所述预处理后的Hex格式的镜像文件转换成十六进制数据并加入第二字节数组中,得到第二固件数据,包括:
按照预设的字符串提取规则,提取出复制到所述一维字符数组中的字符串并存为第二字节数组,得到第二固件数据。
6.如权利要求1所述的服务器电源固件更新方法,其特征在于,所述获取服务器电源固件镜像文件,包括:
获取服务器电源固件的第一版本信息;
所述向电源端发送包含所述固件数据的版本更新指令,以使所述电源端根据所述版本更新指令,更新所述服务器电源固件的版本之后,还包括:
获取所述服务器电源固件的第二版本信息;
若所述第一版本信息和第二版本信息不一致,则判定所述服务器电源固件的版本更新成功。
7.一种服务器电源固件更新装置,其特征在于,包括:
固件数据获取模块,用于获取服务器电源固件镜像文件,并将所述服务器电源固件镜像文件解析成字节数组格式的固件数据;
版本更新模块,用于通过I2C总线协议向电源端发送包含所述固件数据的版本更新指令,以使所述电源端根据所述版本更新指令,更新所述服务器电源固件的版本;
其中,所述固件数据获取模块,还用于获取与电源端当前使用的第一固件版本对应的第一服务器电源固件镜像文件,以及与待更新的第二固件版本对应的第二服务器电源固件镜像文件,并将所述第一服务器电源固件镜像文件解析成第一版本固件数据,所述第二服务器电源固件镜像文件解析成第二版本固件数据;
所述版本更新模块,还用于向电源端发送所述第二版本固件数据,以使所述电源端使用所述第二版本固件数据将当前使用的第一固件版本更新为第二固件版本,完成第一次版本更新;待完成第一次版本更新后,向电源端发送所述第一版本固件数据,以使所述电源端将当前使用的第二固件版本更新为第一固件版本,完成第二次版本更新;重复所述第一次版本更新和第二次版本更新的步骤,直至达到预设的更新次数阈值,记录更新结果,并根据所述更新结果计算得出所述服务器电源固件的更新成功率。
8.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机可读指令,其特征在于,所述处理器执行所述计算机可读指令时实现如权利要求1至6中任一项所述服务器电源固件更新方法。
9.一个或多个存储有计算机可读指令的可读存储介质,所述计算机可读指令被一个或多个处理器执行时,使得所述一个或多个处理器执行如权利要求1至6中任一项所述服务器电源固件更新方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110694449.2A CN113568632B (zh) | 2021-06-22 | 2021-06-22 | 服务器电源固件更新方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110694449.2A CN113568632B (zh) | 2021-06-22 | 2021-06-22 | 服务器电源固件更新方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113568632A CN113568632A (zh) | 2021-10-29 |
CN113568632B true CN113568632B (zh) | 2024-06-21 |
Family
ID=78162507
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110694449.2A Active CN113568632B (zh) | 2021-06-22 | 2021-06-22 | 服务器电源固件更新方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113568632B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109656605A (zh) * | 2018-12-12 | 2019-04-19 | 中国兵器装备集团自动化研究所 | 一种vpx架构下的多处理器固件在线互更新方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102779057A (zh) * | 2012-06-29 | 2012-11-14 | 浪潮(北京)电子信息产业有限公司 | 一种基板管理控制器及其自动升级系统和方法 |
JP5929809B2 (ja) * | 2013-03-27 | 2016-06-08 | 株式会社沖データ | ファームウェア更新方法及びファームウェアプログラム |
CN109634634A (zh) * | 2018-12-12 | 2019-04-16 | 浪潮(北京)电子信息产业有限公司 | 一种bmc固件升级方法、装置及终端 |
CN110365524B (zh) * | 2019-06-27 | 2022-07-08 | 苏州浪潮智能科技有限公司 | 服务器节点固件的镜像升级方法及系统 |
CN111538517B (zh) * | 2020-04-24 | 2023-07-14 | 苏州浪潮智能科技有限公司 | 一种服务器固件升级方法、系统及电子设备和存储介质 |
-
2021
- 2021-06-22 CN CN202110694449.2A patent/CN113568632B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109656605A (zh) * | 2018-12-12 | 2019-04-19 | 中国兵器装备集团自动化研究所 | 一种vpx架构下的多处理器固件在线互更新方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113568632A (zh) | 2021-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110941546A (zh) | Web页面用例的自动化测试方法、装置、设备及存储介质 | |
CN112486828A (zh) | 测试用例生成方法、装置、计算机设备和存储介质 | |
CN110765152B (zh) | Sql提取方法、装置、计算机设备和存储介质 | |
CN113094252A (zh) | 测试用例生成方法、装置、计算机设备及存储介质 | |
CN113568632B (zh) | 服务器电源固件更新方法、装置、计算机设备及存储介质 | |
CN116302011B (zh) | 一种电缆监测设备固件升级方法 | |
CN111078529A (zh) | 客户端写入模块测试方法、装置、电子设备 | |
CN115437943A (zh) | 接口文档自动化验证方法、装置和服务器 | |
CN111552498B (zh) | 一种实现显示屏的屏参升级的方法及系统 | |
CN104317724A (zh) | Linux平台下CLI模块的代码自动化测试方法 | |
CN112435007A (zh) | 基于Node.js的代码提交方法、装置、计算机设备及存储介质 | |
CN115705297A (zh) | 代码调用检测方法、装置、计算机设备以及存储介质 | |
CN112445670B (zh) | 一种eMMC测试方法和装置 | |
CN113064617B (zh) | 一种进行smbios信息更新的方法、系统及存储介质 | |
CN113157322A (zh) | 一种自动显示软件编译时间的方法和系统 | |
CN112527265A (zh) | 一种日志自动注入的方法和计算机设备 | |
CN116774988B (zh) | 解除框架包模式符号依赖的方法及装置 | |
CN118295678A (zh) | 一种基本输入输出系统固件烧写方法、装置及介质 | |
CN111522737B (zh) | 一种前端界面的自动化测试校验方法、装置及存储介质 | |
CN114218441B (zh) | 对uof文档进行调用和展示的方法 | |
CN112115010B (zh) | 一种自助设备的模拟测试方法、智能终端、存储介质 | |
CN114675735A (zh) | 配置与电源管理接口表调试、芯片调试方法、设备及介质 | |
CN114116439A (zh) | 调试信息输出方法、装置、软件调试设备及存储介质 | |
CN117093490A (zh) | 代码的处理方法、装置、计算机设备及存储介质 | |
CN117215656A (zh) | 基于Linux系统自适配车机芯片方法、装置、电子设备及车辆 |
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 | ||
GR01 | Patent grant |