CN113553073A - 系统刷写方法、装置、电子设备及可读存储介质 - Google Patents

系统刷写方法、装置、电子设备及可读存储介质 Download PDF

Info

Publication number
CN113553073A
CN113553073A CN202110833717.4A CN202110833717A CN113553073A CN 113553073 A CN113553073 A CN 113553073A CN 202110833717 A CN202110833717 A CN 202110833717A CN 113553073 A CN113553073 A CN 113553073A
Authority
CN
China
Prior art keywords
storage medium
flash
program
boot
firmware
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
Application number
CN202110833717.4A
Other languages
English (en)
Inventor
顾国良
蔡成宝
李志�
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhongke Controllable Information Industry Co Ltd
Original Assignee
Zhongke Controllable Information Industry Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhongke Controllable Information Industry Co Ltd filed Critical Zhongke Controllable Information Industry Co Ltd
Priority to CN202110833717.4A priority Critical patent/CN113553073A/zh
Publication of CN113553073A publication Critical patent/CN113553073A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping

Abstract

本申请提供一种系统刷写方法、装置、电子设备及可读存储介质,涉及计算机技术领域。该方法通过获取各个存储介质的在位情况来分析各个存储介质的可刷写情况,然后将可刷写情况输出给前端页面,这样用户可通过前端页面知晓后端的各个存储介质的可刷写情况,进而能够灵活选择可刷写的存储介质进行刷写,避免对不可刷写的存储介质进行刷写造成刷写失败的问题。并且,用户可以按需选择对应的存储介质进行刷写,从而能够实现针对性刷写。

Description

系统刷写方法、装置、电子设备及可读存储介质
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种系统刷写方法、装置、电子设备及可读存储介质。
背景技术
基板管理控制器(Baseboard Management Controller,BMC)是服务器主板上负责监控各种硬件正常工作的控制单元。BMC的系统程序通常保存在存储介质中,为了添加功能或者其他情况下,会对BMC的系统程序进行更新,即对存储介质进行刷写。目前所采用的方案是技术人员使用相应的工具完成对存储介质的刷写,而技术人员在刷写之前不了解存储介质的情况,所以,容易导致刷写失败,也无法对存储介质进行有针对性的刷写。
发明内容
本申请实施例的目的在于提供一种系统刷写方法、装置、电子设备及可读存储介质,用以改善现有技术中技术人员不了解存储介质的情况,导致容易出现刷写失败,且无法进行针对性刷写的问题。
第一方面,本申请实施例提供了一种系统刷写方法,应用于基板管理控制器BMC,所述方法包括:获取用于存储系统固件的各个存储介质的在位情况;基于所述在位情况确定所述各个存储介质的可刷写情况;将所述各个存储介质的可刷写情况输出给前端页面。
在上述实现过程中,通过获取各个存储介质的在位情况来分析各个存储介质的可刷写情况,然后将可刷写情况输出给前端页面,这样用户可通过前端页面知晓后端的各个存储介质的可刷写情况,进而能够灵活选择可刷写的存储介质进行刷写,避免对不可刷写的存储介质进行刷写造成刷写失败的问题。并且,用户可以按需选择对应的存储介质进行刷写,从而能够实现针对性刷写。
可选地,所述将所述各个存储介质的可刷写情况输出给前端页面之后,还包括:
从所述前端页面接收刷写指令,所述刷写指令携带有需刷写的至少一个目标存储介质的标志位;
根据所述刷写指令对所述至少一个目标存储介质进行刷写。
在上述实现过程中,通过前端页面发送的刷写指令携带的标志位,可确定刷写的存储介质,如此可实现对存储介质的针对性刷写。
可选地,所述根据所述刷写指令对所述至少一个目标存储介质进行刷写,包括:
根据所述刷写指令中携带的所述至少一个目标存储介质的标志位,获取需刷写的各个存储介质的目标地址;
获取每个目标存储介质对应的待刷写的固件文件;
将对应的待刷写的固件文件写入各个存储介质的目标地址中。
在上述实现过程中,通过将固件文件写入对应的目标地址中,从而可完成对指定的存储介质的刷写,避免刷写错误的问题。
可选地,所述获取用于存储系统固件的各个存储介质的在位情况之前,还包括:
从用于存储系统固件的至少两个存储介质中的主存储介质加载第一引导程序,所述主存储介质存储的系统固件包括所述第一引导程序和第一内核程序;
运行所述第一引导程序,以引导所述第一内核程序启动,所述第一内核程序用于获取各个存储介质的在位情况。
在上述实现过程中,通过设置多个存储介质,可以确保在启动时可以选择在哪个存储介质上启动,灵活性更高,且可确保启动的可靠性。并且通过内核程序来获取存储介质的在位情况,这样可以在BMC启动后就对存储介质的可刷写情况进行分析,以便于用户能够及时知晓各个存储介质的情况。
可选地,所述运行所述第一引导程序,以引导所述第一内核程序启动之后,还包括:
若启动失败,则从所述至少两个存储介质中的备存储介质加载第二引导程序,所述备存储介质存储的系统固件包括所述第二引导程序和第二内核程序;
运行所述第二引导程序,以引导所述第二内核程序启动,所述第二内核程序用于获取各个存储介质的在位情况。
在上述实现过程中,在从主存储介质启动失败后,切换到备存储介质进行启动,这样可以确保BMC的正常启动。
可选地,通过以下方式确定是否启动失败:
启动看门狗;
在所述第一引导程序和所述第一内核程序的运行过程中,向所述看门狗按照设定时间间隔发送喂狗信号;
若在预设时间段内接收到所述看门狗发送的复位信号,则确定启动失败,所述复位信号为所述看门狗在未接收到喂狗信号时发送的。
在上述实现过程中,在引导程序和内核程序的运行过程中均启动看门狗,这样可以通过看门狗对整个启动过程进行监控,从而能够确保启动的可靠性。
可选地,所述运行所述第一引导程序,以引导所述第一内核程序启动之后,还包括:
通过所述第一内核程序获取各个存储介质中的固件信息,所述固件信息包括所述系统固件的版本信息;
所述基于所述在位情况确定各个存储介质的可刷写情况,包括:
在目标存储介质的在位情况为在位时,判断所述系统固件的版本信息是否为最新版本;
若否,则确定所述目标存储介质为可刷写的存储介质。
在上述实现过程中,通过结合版本信息和在位情况来确定存储介质是否可刷写,这样可以避免在版本信息没有更新时对存储介质进行重复刷写,造成资源浪费的问题。
第二方面,本申请实施例提供了一种系统刷写装置,运行于基板管理控制器BMC,所述装置包括:
在位情况获取模块,用于获取用于存储系统固件的各个存储介质的在位情况;
刷写情况获取模块,用于基于所述在位情况确定所述各个存储介质的可刷写情况;
刷写情况输出模块,用于将所述各个存储介质的可刷写情况输出给前端页面。
可选地,所述装置还包括:
刷写模块,用于从所述前端页面接收刷写指令,所述刷写指令携带有需刷写的至少一个目标存储介质的标志位;根据所述刷写指令对所述至少一个目标存储介质进行刷写。
可选地,所述刷写模块,用于根据所述刷写指令中携带的所述至少一个目标存储介质的标志位,获取需刷写的各个存储介质的目标地址;获取每个目标存储介质对应的待刷写的固件文件;将对应的待刷写的固件文件写入各个存储介质的目标地址中。
可选地,所述装置还包括:
启动模块,用于从用于存储系统固件的至少两个存储介质中的主存储介质加载第一引导程序,所述主存储介质存储的系统固件包括所述第一引导程序和第一内核程序;运行所述第一引导程序,以引导所述第一内核程序启动,所述第一内核程序用于获取各个存储介质的在位情况。
可选地,所述启动模块,还用于若启动失败,则从所述至少两个存储介质中的备存储介质加载第二引导程序,所述备存储介质存储的系统固件包括所述第二引导程序和第二内核程序;运行所述第二引导程序,以引导所述第二内核程序启动,所述第二内核程序用于获取各个存储介质的在位情况。
可选地,通过以下方式确定是否启动失败:
启动看门狗;
在所述第一引导程序和所述第一内核程序的运行过程中,向所述看门狗按照设定时间间隔发送喂狗信号;
若在预设时间段内接收到所述看门狗发送的复位信号,则确定启动失败,所述复位信号为所述看门狗在未接收到喂狗信号时发送的。
可选地,所述装置还包括:
固件信息获取模块,用于通过所述第一内核程序获取各个存储介质中的固件信息,所述固件信息包括所述系统固件的版本信息;
所述刷写情况获取模块,用于在目标存储介质的在位情况为在位时,判断所述系统固件的版本信息是否为最新版本;若否,则确定所述目标存储介质为可刷写的存储介质。
第三方面,本申请实施例提供一种电子设备,包括处理器以及存储器,所述存储器存储有计算机可读取指令,当所述计算机可读取指令由所述处理器执行时,运行如上述第一方面提供的所述方法中的步骤。
第四方面,本申请实施例提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时运行如上述第一方面提供的所述方法中的步骤。
本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种BMC系统的结构示意图;
图2为本申请实施例提供的一种系统刷写方法的流程图;
图3为本申请实施例提供的一种BMC启动过程的示意图;
图4为本申请实施例提供的一种系统刷写装置的结构框图;
图5为本申请实施例提供的一种用于执行系统刷写方法的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述。
本申请实施例的方法可通过BMC来执行,具体是指BMC中的BMC处理器来执行,其可采用ARM芯片实现,下面对整个BMC系统进行简单介绍。如图1所示,BMC系统可包含BMC处理器(本申请中简称BMC)以及外置的存储介质,为了确保BMC系统启动的可靠性,其外置的存储介质可以有多个,其外置的存储介质的数量可以根据实际需求灵活设置。如为节约设备成本,包括两个存储介质,如主存储介质和备存储介质。每个存储介质中存储有BMC系统启动的系统固件,包括引导程序uboot和内核程序。
为了使得用户能够及时感知到各个存储介质的可刷写情况,并能够使得用户根据需求选择可刷写的存储介质进行刷写,本申请中通过获取各个存储介质的在位情况,然后根据各个存储介质的在位情况来确定存储介质的可刷写情况,再将可刷写情况输出给前端页面,这样用户可通过前端页面知晓后端的各个存储介质的可刷写情况,进而能够灵活选择可刷写的存储介质进行刷写,避免对不可刷写的存储介质进行刷写造成刷写失败的问题。
请参照图2,图2为本申请实施例提供的一种系统刷写方法的流程图,该方法包括如下步骤:
步骤S110:获取用于存储系统固件的各个存储介质的在位情况。
其中,系统固件可以理解为系统程序,又可称为系统镜像,BMC的系统固件是存储在外置的各个存储介质中的,本申请中为了确保BMC启动的可靠性,设置有多个存储介质。为了获取各个存储介质的在位情况,可以通过系统固件的内核程序来获取,如在内核程序的启动后,获取各个存储介质的在位情况。各个存储介质可以为非易失性闪存(NORflash),也可以是NAND flash、eMMC、SPI EEPROM或SD存储器等。在存储介质为SPI EEPROM时,各个存储介质可以通过SPI总线与BMC处理器连接。所以,BMC可以通过向SPI EEPROM发送命令,以获取SPI EEPROM的设备信息,如型号信息,若获取不到,则表示对应的存储介质不在位,若获取得到,则将获取到的存储介质作为在位的存储介质。
例如,若系统中设置有主备两个存储介质,每个存储介质分别通过SPI总线与BMC连接,BMC可默认先从主存储介质中获取系统固件进行启动,在启动成功后,BMC读取备存储介质的设备信息以及主存储介质的设备信息,若读取不到备存储介质的设备信息,能读取到主存储介质的设备信息,则认为备存储介质不在位,主存储介质不在位。
步骤S120:基于所述在位情况确定所述各个存储介质的可刷写情况。
BMC处理器在获取到各个存储介质的在位情况后,可以通过分析获得各个存储介质的可刷写情况,如主存储介质在位,则认为主存储介质可刷写,若备存储介质不在位,则认为备存储介质不可刷写。
步骤S130:将所述各个存储介质的可刷写情况输出给前端页面。
BMC在获得各个存储介质的可刷写情况后,可以通过为前端页面提供的用户接口发送给前端页面。前端页面可以是指WEB页面,用户可以通过浏览器登录该WEB页面,在WEB页面可显示各个存储介质的可刷写情况。为了便于用户选择刷写的存储介质,可以在WEB页面显示可刷写情况的按钮,如包括“可刷写主存储介质”、“可刷写备存储介质”、“可刷写主备存储介质”这三个按钮,若可刷写情况是只有主存储介质可刷写,则在WEB页面的“可刷写主存储介质”的按钮是启用的,即能够被用户触发,而“可刷写备存储介质”和“可刷写主备存储介质”的按钮没有启用,即这两个按钮不能被触发;若可刷写情况是主备存储介质都可刷写,则这三个按钮都能被启用,即都能被用户触发,这样用户可以根据需求选择点击对应的按钮,即可触发对相应的存储介质进行刷写。
在上述实现过程中,通过获取各个存储介质的在位情况来分析各个存储介质的可刷写情况,然后将可刷写情况输出给前端页面,这样用户可通过前端页面知晓后端的各个存储介质的可刷写情况,进而能够灵活选择可刷写的存储介质进行刷写,避免对不可刷写的存储介质进行刷写造成刷写失败的问题。并且,用户可以按需选择对应的存储介质进行刷写,从而能够实现针对性刷写。
在一些实施方式中,BMC还可以将获取的各个存储介质的在位情况发送给前端,由前端基于在位情况确定各个存储介质的可刷写情况后,将可刷写情况显示在前端页面中,这样用户也可以根据需求在前端页面中选择需要刷写的存储介质进行刷写。
在上述实施例的基础上,用户可在前端页面上根据需求触发刷写指令,这样BMC即可按照刷写指令进行刷写,实现过程如:从前端页面接收刷写指令,刷写指令携带有需刷写的至少一个目标存储介质的标志位,然后根据刷写指令对至少一个目标存储介质进行刷写。
其中,标志位用于指示是刷写哪个存储介质,如是刷写主存储介质和/或备存储介质,即可同时触发对多个存储介质的刷写,相比于一个一个刷写的方式,这样效率更高。标志位可以理解为是需刷写的存储介质的标识。例如,用户在前端页面点击“可刷写主存储介质”的按钮后,即可触发刷写指令,该刷写指令中则可携带有主存储介质的标志位,然后BMC即可按照标志位查找到对应的主存储介质,然后对主存储介质进行刷写。若用户在前端页面点击“可刷写主备存储介质”的按钮后,即可触发刷写指令,该刷写指令中可携带有主存储介质的标志位和备存储介质的标志位,然后BMC即可按照标志位查找到对应的主存储介质和备存储介质,然后对主存储介质和备存储介质同时进行刷写。
在上述实现过程中,通过前端页面发送的刷写指令携带的标志位,可确定刷写的存储介质,如此可实现对存储介质的针对性刷写。
在上述实施例的基础上,BMC在进行刷写时,可以先根据刷写指令中携带的至少一个目标存储介质的标志位,获取需刷写的各个存储介质的目标地址,然后获取每个目标存储介质对应的待刷写的固件文件,将对应的待刷写的固件文件写入各个存储介质的目标地址中。
例如,若刷写指令中携带的标志位是主存储介质的标志位,则目标存储介质为主存储介质,然后BMC获取需刷写的目标地址,如主存储介质的目标地址为0,其主存储介质中存储的固件文件的大小为0x2000000,则BMC获取到主存储介质的目标地址后,修正刷写时的起始地址,即刷写的起始地址为0,终止地址为0x2000000,则可将获取的待刷写的固件文件写入到该目标地址中,从而完成对主存储介质的刷写。
又如,若刷写指令中携带的是备存储介质的标志位时,则获取备存储介质的目标地址,如备存储介质的目标地址为0x2000000,其备存储介质中存储的固件文件的大小也为0x2000000,BMC获取到备存储介质的目标地址后,修正刷写时的起始地址,即刷写的起始地址为0x2000000,终止地址为0x4000000,则可将获取的待刷写的固件文件写入到该目标地址中,从而完成对备存储介质的刷写。
其中,获取目标存储介质对应的待刷写的固件文件可以是携带在刷写指令中的,即前端页面可将获取的待刷写的固件文件打包在刷写指令中,一并发送给BMC,这样BMC可直接获得固件文件。或者,BMC还可以在获取目标存储介质的标志位后,查找内部存储的固件文件中是否有目标存储介质的固件文件(这个可以是在前端页面检测到各个存储介质的固件文件有更新时,将最新的固件文件发送给BMC存储的,在有刷写需求时则可直接读取出来进行刷写),若有,则获取该目标存储介质的固件文件,然后将其写入对应的目标地址中,从而可完成对指定的存储介质的刷写,避免刷写错误的问题。
另外,将固件文件写入目标地址中可以理解为是将固件文件复制到目标地址中进行存储,即将最新的固件文件覆盖掉原始的固件文件,这样即可实现对存储介质的刷写操作。
在一些实施方式中,为了确保刷写成功,BMC在获取到标志位后,还可以根据标志位对刷写指令进行校验,如判断标志位是否是系统中的存储介质的标志位,或者是否是可刷写的存储介质的标志位,若否,则可确定前端页面发送的刷写指令有误,BMC可认为刷写指令无效,不会执行刷写操作。BMC还可反馈信息给前端页面,告诉前端页面刷写指令无效的信息。
在上述实施例的基础上,BMC在获取到固件文件之后,为了确保固件文件的可靠性,还可以对固件文件进行校验,在校验通过后即可将固件文件写入对应的目标地址中。
其中,对固件文件进行校验的方式可以是从固件文件中提取对应的MD5值,该MD5值可以是前端页面在获得固件文件后,计算固件文件的MD5值后携带在固件文件中的,然后对当前的固件文件进行计算获得对应的MD5值,将两个MD5值进行比较,若不一致,则认为固件文件在传输过程中可能有损坏,或者是被篡改了,即检验不通过,此时则不对目标存储介质进行刷写,BMC可反馈信息给前端页面;反之,若两个MD5值一致,则校验通过,则继续对目标存储介质进行刷写。
或者,对固件文件进行校验的方式还可以是判断固件文件是否为目标存储介质的固件文件,如固件文件中也可携带有存储介质的标识(如标志位),BMC可从固件文件中提取出存储介质的标识后,然后判断该标识是否是可刷写的目标存储介质的标识,若是,则校验通过,反之,则校验不通过。
在BMC对目标存储介质刷写完成之后,BMC可自动重启,在重启时,BMC可选择从默认的存储介质中加载系统固件进行重启。
在上述实施例的基础上,BMC在上电后,可以从一个默认的存储介质中读取引导程序,然后加载引导程序到内存后运行引导程序,引导程序的作用是引导内核程序启动,也即在引导程序运行的过程中,引导内核程序加载到内存中,进而运行内核程序,以完成引导内核程序的启动。
若用于存储BMC的系统固件的存储介质包括至少两个时,则可预先配置至少两个存储介质中的其中一个存储介质作为主存储介质,默认BMC上电后先从主存储介质获取系统固件进行启动,然后配置其他存储介质作为备存储介质。各个存储介质中存储的系统固件包括引导程序和内核程序,如图1中,主存储介质中存储有第一引导程序和第一内核程序,BMC在启动时,可以先从主存储介质中加载第一引导程序,然后运行第一引导程序,以引导第一内核程序启动,第一内核程序可用于获取各个存储介质的在位情况。
例如,BMC根据内置逻辑自动从主存储介质中加载uboot程序,uboot程序引导内核程序加载到内存进行启动。为了存储各种程序,可以预先对存储介质进行分区,不同的分区存储有对应的程序,每个分区的起始位置设置有标识头。在获取uboot程序和内核程序时,可以先获取存储介质的分区信息,分区信息记录了各个程序的存储位置,如uboot程序是系统启动前执行的第一个软件,uboot程序可存储在存储介质的首地址处,如首地址为0x000000,在BMC上电后,BMC根据分区信息获取到uboot程序的存储位置,如0x000000,然后会调到0x000000去执行,这样就可以把uboot程序加载起来了。uboot程序可以首先对硬件设备进行初始化,初始化后,uboot程序执行命令,如将内核程序加载到内存中运行,进而引导BMC系统启动。
其中,在第一内核程序启动后,可以通过第一内核程序来获取各个存储介质的在位情况,如第一内核程序可读取各个存储介质的设备信息,如先读取主存储介质的设备信息,若读取到则确定主存储介质在位,然后读取备存储介质的设备信息,若读取不到,则确定备存储介质不在位。
在上述实现过程中,通过设置多个存储介质,可以确保在启动时可以选择在哪个存储介质上启动,灵活性更高,且可确保启动的可靠性。并且通过内核程序来获取存储介质的在位情况,这样可以在BMC启动后就对存储介质的可刷写情况进行分析,以便于用户能够及时知晓各个存储介质的情况。
为了确保BMC系统启动的可靠性,若在主存储介质中启动失败,还可以从备存储介质中加载第二引导程序,备存储介质存储的系统固件包括第二引导程序和第二内核程序,然后运行第二引导程序,以引导第二内核程序启动,第二内核程序用于获取各个存储介质的在位情况。
可以理解地,从备存储介质中启动的过程与在主存储介质中启动的过程一致,为了描述的简洁,在此不过多赘述。这样可以确保BMC从主存储介质中启动失败后,切换到备存储介质进行启动,从而确保BMC能够正常启动。
可以理解地,备存储介质可以有多个,BMC上电后,默认先从主存储介质进行启动,在BMC从主存储介质启动失败后,可以选择其中一个备存储介质进行启动,若在该备存储介质也启动失败,则可再选择另一个备存储介质进行启动。或者,也可以对多个备存储介质配置启动顺序,这样BMC在选择备存储介质进行启动时,可以根据配置的启动顺序选择优先启动的备存储介质。
在上述实施例的基础上,为了监控BMC的启动过程,还可以通过以下方式确定是否启动失败:启动看门狗,在第一引导程序和第一内核程序的运动过程中,向看门狗按照设定时间间隔发送喂狗信号,若在预设时间段内接收到看门狗发送的复位信号,则确定启动失败,复位信号为看门狗在未接收到喂狗信号时发送的。
可以理解地,第一引导程序(uboot)可以首先对硬件设备进行初始化,包括对看门狗硬件芯片进行初始化,以启动看门狗,然后在第一引导程序和第一内核程序的运行过程中,均按照设定时间间隔不断地向看门狗发送喂狗信号,看门狗可以通过接收喂狗信号来判断程序是否正常启动。若看门狗在未接收到喂狗信号,且看门狗在预设时间段内未关闭,则看门狗确定程序启动异常,可向BMC反馈复位信号,BMC接收到该复位信号后,可确定启动失败,然后可从备存储介质中重新加载第二引导程序进行启动。反之,若启动成功,则关闭看门狗。
对于从备存储介质中启动时,也可以启动看门狗,在引导程序和内核程序的运行过程中,不断地向看门狗发送喂狗信号,从而可以对启动过程进行监控,若启动失败,可继续从另一备存储介质中启动。反之,若启动成功,则关闭看门狗。
这样uboot启动阶段和内核运行阶段,都会进行喂狗操作,从而可以通过看门狗来监测启动过程,确保启动过程的可靠性,具体过程可如图3所示,包括如下步骤:
步骤S210:BMC上电;
步骤S220:uboot程序(这里指主存储介质的第一引导程序)启动;
步骤S230:启动看门狗;
步骤S240:引导内核程序(这里指主存储介质的第一内核程序)启动;
步骤S250:判断在预设时间段内是否关闭看门狗,在为是时,执行步骤S280,在为否时,执行步骤S260;
步骤S260:切换到备存储介质启动;
步骤S270:内核程序运行;
步骤S280:BMC启动完成。
在上述实施例的基础上,看门狗的驱动程序可以提供用户接口,以供内核程序通过用户接口获取看门狗的信息,如内核程序可以通过用户接口实时获取看门狗的状态信息,如检测看门狗是否关闭、是否有正常喂狗操作、是否异常等,这样可以监控到看门狗硬件的状态,从而实时感知到看门狗是否正常工作,以确保看门狗能够对启动过程进行实时监控。
在上述实施例的基础上,在运行第一引导程序,以引导第一内核程序启动之后,还可以通过第一内核程序获取各个存储介质中的固件信息,该固件信息包括系统固件的版本信息,然后在确定各个存储介质的可刷写情况时,可以在目标存储介质的在位情况为在位时,判断系统估计的版本信息是否为最新版本,若是,则确定目标存储介质为可刷写的存储介质。
即在内核程序启动时,可以通过内核程序抓取各个存储介质的固件信息,固件信息还可以包括固件的创建时间,其抓取的方式可以是先获取各个存储介质的分区信息,分区信息中记录了各个固件文件、固件的版本信息、创建时间等信息的存储位置,从而可以根据分区信息进行固件信息的抓取。当然,也可能抓取不到某个存储介质的固件信息,如分区的标识头丢失。
例如,可先判断主存储介质是否在位,若在位则获取主存储介质的固件的版本信息后,然后查找BMC中是否存储有最新的版本信息,若没有,则认为当前的版本信息为最新版本,确定主存储介质不可刷写,若有,则认为当前的版本信息不是最新版本,确定主存储介质可刷写。当然,BMC也可以向前端页面请求获取最新版本的版本信息,若前端页面反馈没有最新版本的版本信息,则认为对应的存储介质不可刷写,反之,则认为可以刷写。如此还可以结合版本信息来判断存储介质是否可以刷写,从而可以避免使用旧的固件文件对存储介质进行重复刷写浪费资源的问题。
在一些实施方式中,为了确保刷写成功,固件信息还可以包括存储介质中存储的固件文件,即系统固件,还可判断固件文件是否有异常,如判断固件文件是否完整,若不完整,也可确定该存储介质可刷写,即重新在存储介质中刷写准确的固件文件,从而可确保BMC从该存储介质中启动时能够正常启动。
另外,BMC还可以将获取到的在位情况以及固件信息反馈到前端页面并展示,这样用户可以清晰地看到各个存储介质的相关情况,然后可根据需求选择需要刷写的存储介质。当然,BMC还可以提供用户接口,前端页面可通过用户接口向BMC发送相应的指令,以获取相关的信息,如在位情况和/或固件信息等。
BMC在获取到固件信息后,还可以通过片选信号cs判断当前内核程序是运行在哪个存储介质上,如是在主存储介质或是备存储介质上,这样BMC可将当前使用的存储介质、各个存储介质的固件信息、在位情况、可刷写情况等信息在前端页面进行显示,以便于用户可以通过前端页面了解到各个存储介质的相关信息,对用户更友好。
另外,BMC还可以将BMC的各种启动情况进行分类,供前端页面进行查看(如调用库函数进行数据处理并对各种启动情况分类、封装供前端接口调用),如启动情况包括:断电启动、系统重启、只有主存储介质启动、只有备存储介质启动、主备存储介质都启动等。这样用户可以对BMC的启动情况进行了解,以便可以为对后续的启动方案的优化提供数据参考。
请参照图4,图4为本申请实施例提供的一种系统刷写装置300的结构框图,该装置300可以是电子设备上的模块、程序段或代码。应理解,该装置300与上述图2方法实施例对应,能够执行图2方法实施例涉及的各个步骤,该装置300具体的功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。
可选地,所述装置300包括:
在位情况获取模块310,用于获取用于存储系统固件的各个存储介质的在位情况;
刷写情况获取模块320,用于基于所述在位情况确定所述各个存储介质的可刷写情况;
刷写情况输出模块330,用于将所述各个存储介质的可刷写情况输出给前端页面。
可选地,所述装置300还包括:
刷写模块,用于从所述前端页面接收刷写指令,所述刷写指令携带有需刷写的至少一个目标存储介质的标志位;根据所述刷写指令对所述至少一个目标存储介质进行刷写。
可选地,所述刷写模块,用于根据所述刷写指令中携带的所述至少一个目标存储介质的标志位,获取需刷写的各个存储介质的目标地址;获取每个目标存储介质对应的待刷写的固件文件;将对应的待刷写的固件文件写入各个存储介质的目标地址中。
可选地,所述装置300还包括:
启动模块,用于从用于存储系统固件的至少两个存储介质中的主存储介质加载第一引导程序,所述主存储介质存储的系统固件包括所述第一引导程序和第一内核程序;运行所述第一引导程序,以引导所述第一内核程序启动,所述第一内核程序用于获取各个存储介质的在位情况。
可选地,所述启动模块,还用于若启动失败,则从所述至少两个存储介质中的备存储介质加载第二引导程序,所述备存储介质存储的系统固件包括所述第二引导程序和第二内核程序;运行所述第二引导程序,以引导所述第二内核程序启动,所述第二内核程序用于获取各个存储介质的在位情况。
可选地,通过以下方式确定是否启动失败:
启动看门狗;
在所述第一引导程序和所述第一内核程序的运行过程中,向所述看门狗按照设定时间间隔发送喂狗信号;
若在预设时间段内接收到所述看门狗发送的复位信号,则确定启动失败,所述复位信号为所述看门狗在未接收到喂狗信号时发送的。
可选地,所述装置300还包括:
固件信息获取模块,用于通过所述第一内核程序获取各个存储介质中的固件信息,所述固件信息包括所述系统固件的版本信息;
所述刷写情况获取模块320,用于在目标存储介质的在位情况为在位时,判断所述系统固件的版本信息是否为最新版本;若否,则确定所述目标存储介质为可刷写的存储介质。
需要说明的是,本领域技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再重复描述。
请参照图5,图5为本申请实施例提供的一种用于执行系统刷写方法的电子设备的结构示意图,所述电子设备可以包括:至少一个处理器410,例如BMC处理器,至少一个通信接口420,至少一个存储器430和至少一个通信总线440。其中,通信总线440用于实现这些组件直接的连接通信。其中,本申请实施例中设备的通信接口420用于与其他节点设备进行信令或数据的通信。存储器430可以是高速RAM存储器,也可以是非易失性的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器430可选的还可以是至少一个位于远离前述处理器的存储装置。存储器430中存储有计算机可读取指令,当所述计算机可读取指令由所述处理器410执行时,电子设备执行上述图2所示方法过程。
可以理解,图5所示的结构仅为示意,所述电子设备还可包括比图5中所示更多或者更少的组件,或者具有与图5所示不同的配置。图5中所示的各组件可以采用硬件、软件或其组合实现。
本申请实施例提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,执行如图2所示方法实施例中电子设备所执行的方法过程。
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如,包括:获取用于存储系统固件的各个存储介质的在位情况;基于所述在位情况确定所述各个存储介质的可刷写情况;将所述各个存储介质的可刷写情况输出给前端页面。
综上所述,本申请实施例提供一种系统刷写方法、装置、电子设备及可读存储介质,通过获取各个存储介质的在位情况来分析各个存储介质的可刷写情况,然后将可刷写情况输出给前端页面,这样用户可通过前端页面知晓后端的各个存储介质的可刷写情况,进而能够灵活选择可刷写的存储介质进行刷写,避免对不可刷写的存储介质进行刷写造成刷写失败的问题。并且,用户可以按需选择对应的存储介质进行刷写,从而能够实现针对性刷写。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种系统刷写方法,其特征在于,应用于基板管理控制器BMC,所述方法包括:
获取用于存储系统固件的各个存储介质的在位情况;
基于所述在位情况确定所述各个存储介质的可刷写情况;
将所述各个存储介质的可刷写情况输出给前端页面。
2.根据权利要求1所述的方法,其特征在于,所述将所述各个存储介质的可刷写情况输出给前端页面之后,还包括:
从所述前端页面接收刷写指令,所述刷写指令携带有需刷写的至少一个目标存储介质的标志位;
根据所述刷写指令对所述至少一个目标存储介质进行刷写。
3.根据权利要求2所述的方法,其特征在于,所述根据所述刷写指令对所述至少一个目标存储介质进行刷写,包括:
根据所述刷写指令中携带的所述至少一个目标存储介质的标志位,获取需刷写的各个存储介质的目标地址;
获取每个目标存储介质对应的待刷写的固件文件;
将对应的待刷写的固件文件写入各个存储介质的目标地址中。
4.根据权利要求1-3任一所述的方法,其特征在于,所述获取用于存储系统固件的各个存储介质的在位情况之前,还包括:
从用于存储系统固件的至少两个存储介质中的主存储介质加载第一引导程序,所述主存储介质存储的系统固件包括所述第一引导程序和第一内核程序;
运行所述第一引导程序,以引导所述第一内核程序启动,所述第一内核程序用于获取各个存储介质的在位情况。
5.根据权利要求4所述的方法,其特征在于,所述运行所述第一引导程序,以引导所述第一内核程序启动之后,还包括:
若启动失败,则从所述至少两个存储介质中的备存储介质加载第二引导程序,所述备存储介质存储的系统固件包括所述第二引导程序和第二内核程序;
运行所述第二引导程序,以引导所述第二内核程序启动,所述第二内核程序用于获取各个存储介质的在位情况。
6.根据权利要求5所述的方法,其特征在于,通过以下方式确定是否启动失败:
启动看门狗;
在所述第一引导程序和所述第一内核程序的运行过程中,向所述看门狗按照设定时间间隔发送喂狗信号;
若在预设时间段内接收到所述看门狗发送的复位信号,则确定启动失败,所述复位信号为所述看门狗在未接收到喂狗信号时发送的。
7.根据权利要求4所述的方法,其特征在于,所述运行所述第一引导程序,以引导所述第一内核程序启动之后,还包括:
通过所述第一内核程序获取各个存储介质中的固件信息,所述固件信息包括所述系统固件的版本信息;
所述基于所述在位情况确定各个存储介质的可刷写情况,包括:
在目标存储介质的在位情况为在位时,判断所述系统固件的版本信息是否为最新版本;
若否,则确定所述目标存储介质为可刷写的存储介质。
8.一种系统刷写装置,其特征在于,运行于基板管理控制器BMC,所述装置包括:
在位情况获取模块,用于获取用于存储系统固件的各个存储介质的在位情况;
刷写情况获取模块,用于基于所述在位情况确定所述各个存储介质的可刷写情况;
刷写情况输出模块,用于将所述各个存储介质的可刷写情况输出给前端页面。
9.一种电子设备,其特征在于,包括处理器以及存储器,所述存储器存储有计算机可读取指令,当所述计算机可读取指令由所述处理器执行时,运行如权利要求1-7任一所述的方法。
10.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时运行如权利要求1-7任一所述的方法。
CN202110833717.4A 2021-07-22 2021-07-22 系统刷写方法、装置、电子设备及可读存储介质 Pending CN113553073A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110833717.4A CN113553073A (zh) 2021-07-22 2021-07-22 系统刷写方法、装置、电子设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110833717.4A CN113553073A (zh) 2021-07-22 2021-07-22 系统刷写方法、装置、电子设备及可读存储介质

Publications (1)

Publication Number Publication Date
CN113553073A true CN113553073A (zh) 2021-10-26

Family

ID=78104228

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110833717.4A Pending CN113553073A (zh) 2021-07-22 2021-07-22 系统刷写方法、装置、电子设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN113553073A (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110442386A (zh) * 2019-06-25 2019-11-12 苏州浪潮智能科技有限公司 一种bmc启动方法、系统、电子设备及计算机存储介质
CN111176701A (zh) * 2019-12-13 2020-05-19 苏州浪潮智能科技有限公司 一种基于外部存储卡的固件升级方法和装置
CN111367556A (zh) * 2020-02-28 2020-07-03 苏州浪潮智能科技有限公司 一种刷写BMC Flash的装置以及方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110442386A (zh) * 2019-06-25 2019-11-12 苏州浪潮智能科技有限公司 一种bmc启动方法、系统、电子设备及计算机存储介质
CN111176701A (zh) * 2019-12-13 2020-05-19 苏州浪潮智能科技有限公司 一种基于外部存储卡的固件升级方法和装置
CN111367556A (zh) * 2020-02-28 2020-07-03 苏州浪潮智能科技有限公司 一种刷写BMC Flash的装置以及方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
李玮等: "光传输网技术综合实训", 31 July 2020, 北京邮电大学出版社, pages: 15 - 21 *
黎连业等: "红旗Linux系统基础教程", 30 June 2004, 北京航空航天大学出版社, pages: 37 - 39 *

Similar Documents

Publication Publication Date Title
US9158628B2 (en) Bios failover update with service processor having direct serial peripheral interface (SPI) access
US8468389B2 (en) Firmware recovery system and method of baseboard management controller of computing device
US9471435B2 (en) Information processing device, information processing method, and computer program
US9146839B2 (en) Method for pre-testing software compatibility and system thereof
US20240012706A1 (en) Method, system and apparatus for fault positioning in starting process of server
US7941658B2 (en) Computer system and method for updating program code
CN101650662B (zh) 一种嵌入式系统的存储器件的固件启动及升级方法
US9448889B2 (en) BIOS failover update with service processor
CN103827834B (zh) 一种内存数据的迁移方法、计算机和装置
TWI470420B (zh) 除錯方法及電腦系統
CN109960523B (zh) 一种嵌入式设备的固件升级方法及装置
US9448808B2 (en) BIOS update with service processor without serial peripheral interface (SPI) access
US10579300B2 (en) Information handling system firmware persistent memory runtime reclaim
CN101295255B (zh) 固件更新系统及方法
CN112667462B (zh) 一种服务器的双闪存运行监测的系统、方法及介质
US11841398B2 (en) Method and apparatus and non-transitory computer-readable storage medium for debugging solid-state disk (SSD) device
CN105760191A (zh) 嵌入式系统设备程序烧写量产方法
CN112015447B (zh) 电子设备的系统更新方法及装置、电子设备及存储介质
EP3534259B1 (en) Computer and method for storing state and event log relevant for fault diagnosis
CN116383012B (zh) 获取开机日志的方法及装置、传输开机日志的方法
JP6880961B2 (ja) 情報処理装置、およびログ記録方法
CN113553073A (zh) 系统刷写方法、装置、电子设备及可读存储介质
US11933847B2 (en) Apparatus and system for debugging solid-state disk (SSD) device
US20220413766A1 (en) Method and apparatus and non-transitory computer-readable storage medium for debugging solid-state disk (ssd) device
CN113849235A (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