CN116795592A - 一种固件启动方法、装置、背板及服务器 - Google Patents
一种固件启动方法、装置、背板及服务器 Download PDFInfo
- Publication number
- CN116795592A CN116795592A CN202310605987.9A CN202310605987A CN116795592A CN 116795592 A CN116795592 A CN 116795592A CN 202310605987 A CN202310605987 A CN 202310605987A CN 116795592 A CN116795592 A CN 116795592A
- Authority
- CN
- China
- Prior art keywords
- firmware
- memory
- backboard
- starting
- abnormal
- 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
- 238000000034 method Methods 0.000 title claims abstract description 141
- 230000002159 abnormal effect Effects 0.000 claims abstract description 97
- 230000008569 process Effects 0.000 claims abstract description 53
- 230000015654 memory Effects 0.000 claims description 209
- 238000011084 recovery Methods 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 30
- 238000012795 verification Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 238000012423 maintenance Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012827 research and development Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001680 brushing effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/142—Reconfiguring to eliminate the error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Abstract
一种固件启动方法,应用于背板,包括:在背板的启动过程中,获取背板的固件异常启动的次数;当固件异常启动的次数大于或等于阈值,对背板的固件进行重写;基于重写的固件进行固件启动。该方法能够使得背板可以基于重写的固件进行固件启动,降低了背板启动失败的风险。在一应用场景中,在背板的硬件器件完好的前提下,如果是软件方面的问题导致背板无法启动,都可以使用该方法进行恢复。因此,如果固件启动失败,可以基于重写的固件进行固件启动,无须返厂维修背板,极大提高用户体验,降低了成本。
Description
技术领域
本申请涉及服务器技术领域,尤其涉及一种固件启动方法、装置、背板及服务器。
背景技术
随着服务器业务的高速发展,存储系统日益庞大,服务器管理的硬盘数量越来越多,背板功能实现的重要性日益凸显。背板的功能通过固件(Firmware,FW)实现,固件的正常启动运行至关重要。因此,在背板启动时,需要一种应对固件启动失败的解决方案。
发明内容
为了解决上述的问题,本申请实施例提供了一种固件启动方法、装置、背板及服务器,通过获取固件异常启动的次数,判断是否重写固件,能够使得背板可以基于重写的固件进行固件启动,降低了固件启动失败的风险。
第一方面,本申请实施例提供了一种固件启动方法,应用于背板,该方法包括:在背板的启动过程中,获取背板的固件异常启动的次数;当固件异常启动的次数大于或等于阈值,对背板的固件进行重写;基于重写的固件进行固件启动。
在该实施方式中,本申请实施例的固件启动方法,通过检测固件异常重启的次数,判断是否进行固件重写。当次数大于或等于预设阈值时,便选择不再跳转到已有的固件启动流程,而是对固件的重新烧写。因此,该方法能够使得背板可以基于重写的固件进行固件启动,降低了背板启动失败的风险。在一应用场景中,在背板的硬件器件完好的前提下,如果是软件方面的问题导致背板无法启动,都可以使用本申请实施例的方法进行恢复。因此,在该方法中,如果固件启动失败,可以基于重写的固件进行固件启动,无须返厂维修背板,极大提高用户体验,降低了成本。进一步地,通过设立阈值的方法,对执行现有的固件启动方法的次数进行了冗余度设计,这就意味着,允许一定次数的固件异常重启,减少了不必要的重写固件工作。
在一个实施方式中,其中,对背板的固件进行重写,具体包括:初始化目标逻辑资源;目标逻辑资源提供了操作系统识别到背板所需的资源;基于目标逻辑资源,通过操作系统对背板的固件进行重写。
在该实施方式中,由于背板未启动成功,因此,需要初始化一部分逻辑资源(目标逻辑资源),以进行固件重写工作。目标逻辑资源是固件重写工作所必需的逻辑资源,因此,节省了不必要的初始化工作,提供了工作效率高。当对背板的固件进行重写时,可以使操作系统可以识别背板,也就是说,操作系统可以与背板进行通信,并对背板进行读写操作。在一个示例中,用户可以通过操作系统,对重写的固件进行操作,因此,该实施方式增加了固件重写操作的灵活性,提高了用户体验。
在另一个实施方式中,对所述背板的固件进行重写,包括:基于预先存储的固件,对所述背板的固件进行重写。
在该实施方式中,固件重写的过程,也可以不通过操作系统。也就是说,将至少一个固件预先存储于一个存储器中,当进行固件重写时,直接从该存储器中获取预先存储的一个固件,再将该固件重写到正常启动时存储固件的位置。该实施方式,可以实现重写固件的自动化过程,提高了重写固件的效率。
在另一个实施方式中,固件启动方法还包括:当固件异常启动的次数大于或等于阈值,对背板的配置文件进行重写。其中,基于重写的固件进行固件启动,包括:基于重写的固件和重写的配置文件,进行固件启动。
在该实施方式中,通过重写配置文件,解决了由于配置文件的相关错误而引起的固件启动失败问题。
在另一个实施方式中,固件启动方法还包括:当固件异常重启的次数小于阈值时,固件进入正常启动程序。
在该实施方式中,每次固件异常重启时,都需要判断固件异常重启的次数与阈值的关系。背板一般设置有固件正常启动的程序。该实施方式中,当固件异常重启的次数小于阈值时,可以直接借用现有的固件正常启动的程序,因此可以减少了研发成本。
在另一个实施方式中,其中,获取背板的固件异常启动的次数,包括:对固件的异常重启进行计数;获取计数结果,计数结果作为固件异常启动的次数。
在该实施方式中,当固件发生异常重启时,便记录异常启动的次数。该实施方式中,简化了获取异常重启次数的方式。
第二方面,本申请实施例提供了一种固件启动装置,应用于背板,该装置包括:获取模块,用于在背板的启动过程中,获取背板的固件异常启动的次数;固件重写模块,用于当固件异常启动的次数大于或等于阈值,对背板的固件进行重写;固件启动模块,用于基于重写的固件进行固件启动。
在另一个实施方式中,固件重写模块,还用于:初始化目标逻辑资源;目标逻辑资源,用于操作系统识别背板;基于目标逻辑资源,操作系统对背板的固件进行重写。
在另一个实施方式中,固件重写模块,还用于:基于预先存储的固件,对所述背板的固件进行重写。
在另一个实施方式中,固件重写模块,还用于:当固件异常启动的次数大于或等于阈值,对背板的配置文件进行重写;以及基于重写的固件和重写的配置文件,进行固件启动。
在另一个实施方式中,固件启动模块,还用于:当固件异常重启的次数小于阈值时,固件进入正常启动程序。
在另一个实施方式中,获取模块,还用于:对固件的异常重启进行计数;以及获取计数结果,计数结果作为固件异常启动的次数。
第三方面,本申请实施例提供了一种背板,包括:第一存储器,用于存储固件正常启动的指令、以及上述任意一个实施方式的方法对应的指令;至少一个处理器,处理器用于执行第一存储器中存储的指令,以使得背板执行上述任意一个实施方式的方法。
在该实施方式中,现有的固件正常启动的程序指令一般存储在一个存储器中。该实施方式中,在该存储器的空闲区域划分出一块固定区域,用于存储任意一个实施方式的方法对应的指令。因此,该实施方式不需要更改背板当前的硬件设计,节省了硬件改版成本。
在另一个实施方式中,第一存储器中的第一首地址设置为背板的上电启动地址,以使当背板上电时,处理器执行第一首地址的指令;第一首地址为第一存储器中的存储上述任意一个实施方式的方法对应的指令的首地址。
在该实施方式中,通过第一存储器中的第一首地址设置为背板的上电启动地址,实现了当背板上电时,上述任意一个实施方式的方法可以开始运行。现有背板一般将上电启动地址连接于现有的固件正常启动程序的地址。该实施方式通过改动上电启动地址的连接对象,使得背板上电时,处理器可以运行上述任意一项方法对应的指令。
第四方面,本申请实施例提供了一种背板,包括:第一存储器,用于存储固件正常启动的指令;第二存储器,用于存储上述任意一个实施方式的方法对应的指令;至少一个处理器,处理器用于执行第一存储器和第二存储器中存储的指令,以使得背板执行上述任意一个实施方式的方法。
在该实施方式中,在扩展背板处理任务时,存储固件正常启动的指令的第一存储器,一般具有业务频繁操作的特点。上述任意一个实施方式的方法对应的指令,则只在指导固件启动的阶段使用。因此,可以将固件正常启动的指令、上述任意一个实施方式的方法对应的指令分别存储与第一存储器、第二存储器,以防止第一存储器频繁操作时,对第二存储器的数据产生影响。进一步地,可以保证第二存储器的数据完整性,从而保证上述任意一个实施方式的方法对应的指令可以成功运行。
在另一个实施方式中,第二存储器中的第二首地址设置为背板的上电启动地址,以使当背板上电时,处理器执行第二首地址的指令;第二首地址为第二存储器中的存储上述任意一个实施方式的方法对应的指令的首地址。
第五方面,本申请实施例提供了一种服务器,包括:至少一个存储器,至少一个处理器。处理器用于执行存储器中存储的指令,以使得当服务器的背板启动时,实现上述任意一个实施方式的方法。
第六方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,当计算机程序在计算机中执行时,令计算机执行上述任意一个实施方式的方法。
第七方面,本申请实施例提供了一种计算机程序产品,计算机程序产品存储有指令,指令在由计算机执行时,使得计算机可以执行上述任意一个实施方式的方法。
附图说明
下面对实施例或现有技术描述中所需使用的附图作简单地介绍。
图1为本申请实施例中提供的一种服务器的场景示意图;
图2为本申请实施例中提供的第一种解决方案的示意图;
图3为本申请实施例中提供的第二种解决方案的示意图;
图4为本申请实施例中提供的操作系统与背板之间的通信和读写过程的示意图;
图5为本申请实施例中提供的包括对固件异常启动的次数进行计数的示意图;
图6为本申请实施例中提供的一种新增存储器的存储文件存储于存储器120的示意图;
图7为本申请实施例中提供的一种固件启动方法的流程示意图;
图8为本申请实施例中提供的一种固件启动方法对应的详细流程示意图;
图9为本申请实施例中提供的一种现有的固件启动流程的示意图;
图10为本申请实施例中提供的一种固件启动装置的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
本文中术语“和/或”,是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本文中符号“/”表示关联对象是“或者”的关系,例如A/B表示A或者B。
本文中的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一响应消息和第二响应消息等是用于区别不同的响应消息,而不是用于描述响应消息的特定顺序。
在“在一个示例中”或者“例如”等词是用于表示作例子、例证或说明。本申请实施例中被描述为“在一个示例中”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“在一个示例中”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或者两个以上,例如,多个处理单元是指两个或者两个以上的处理单元等;多个元件是指两个或者两个以上的元件等。
为了便于理解本申请实施例提供的方案,先对本方案涉及到的部分术语做简单介绍。
扩展背板:一种设备扩展器,相当于网络中的交换机和路由器。示例性的,扩展背板可以是串行SCSI技术(Serial Attached SCSI,SAS)Expander背板、高速串行计算机扩展总线标准(peripheral component interconnect express,PCIe)扩展背板、非易失性内存标准(non-volatile memory express,NVME)扩展背板等。
固件(Firmware,FW):计算机启动时连接硬件和操作系统(Operating System,OS)的底层代码。
引导加载程序(Boot Loader):是在操作系统内核运行之前运行,可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确环境的程序。
校验和(Check Sum):用于校验目的的一组数据项的和。
图1为本申请实施例中提供的一种服务器的场景示意图。如图1所示,本申请实施例提供了一种服务器100,主要包括:至少一个处理器110、至少一个存储器120。处理器110用于执行存储器120中存储的指令,以使得当服务器100的背板启动时,开始固件的启动工作。处理器110与存储器120之间,通过总线进行通信连接,并进行数据传输。
处理器110可以是通用处理器或者专用处理器。例如,处理器110可以包括中央处理器(central processing unit,CPU)和/或基带处理器。示例性的,处理器110可以根据各个控制指令中携带的优先级标识和/或功能类别信息确定一个控制指令。
存储器120上可以存有程序(也可以是指令或者代码),程序可被处理器110运行,使得处理器110执行本申请实施例中描述的方法。可选地,存储器120中还可以存储有数据。例如,处理器110可以读取存储器120中存储的数据,该数据可以与程序存储在相同的存储地址,该数据也可以与程序存储在不同的存储地址。本申请实施例中,处理器110和存储器120可以单独设置,也可以集成在一起,例如,集成在单板或者系统级芯片(system onchip,SOC)上。
可以理解的是,图1示出的服务器100的结构并不构成对服务器100的结构的限定,服务器100可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
图1示出的服务器100可以为多种服务器,例如X86架构的服务器,具体可以是刀片服务器、高密服务器、机架服务器或高性能服务器等。换言之,本申请实施例对于服务器的具体类别不进行具体限定。
在一个示例中,服务器100的背板可以是扩展背板,比如SAS Expander背板。SASExpander背板,一侧连接有很多硬盘,另一侧通过一个或者多个对外连接接口连接服务器100,使得服务器100可以通过有限的连接接口连接和管理更多的硬盘。
本申请实施例中,部分示例以扩展背板为研究对象进行说明,但扩展背板是背板的一种示例,并不构成对背板范围的限制。本申请实施例的技术方案也可以应用到其他背板,比如硬盘背板等。
示例性的,背板的功能依赖于背板的固件,因此,保证固件能正常启动运行至关重要。进一步地,固件能否正常启动运行,意味着背板(比如扩展背板)能否正常处理业务。第一种解决方案,如图2所示,处理器110设置有上电启动地址。存储器120存储有引导加载程序、固件、配置文件。
示例性的,处理器110中的上电启动地址设置为引导加载程序的首地址,使得当扩展背板上电时,处理器110执行该引导加载程序。
示例性的,扩展背板的启动过程主要包括:当扩展背板启动时,处理器110首先执行上电启动地址对应的存储于存储器120中的指令,即引导加载程序。引导加载程序中,基于配置文件,对固件进行检验和启动,初始化配置文件相对应的逻辑资源。其中,与固件相关的步骤主要包括:引导加载程序对固件进行完整性校验、固件初始化扩展背板对应的逻辑资源。
进一步地,引导加载程序存放在存储器120的特定位置,该特定位置被映射到处理器的上电启动地址。因此,扩展背板上电后,引导加载程序便被启动。其中,上电启动地址可以是默认启动地址,也可以是其他实现扩展背板上电后被启动的地址。引导加载程序可以包括Boot Loader程序。
进一步地,引导加载程序对固件进行完整性校验。通过对固件所在区域的数据进行完整性校验,来保证运行的固件是符合预期的。示例性的,这个校验包括签名校验、数据Check Sum校验、固件特定数据段校验等。
在一个示例中,固件按照优先级进行多次存储。比如,优先级高的存储区域称为主备份区,优先级低的存储区域称为从备份区。因此,存储器110中的存储固件的存储区域可以包括一个或者多个主备份区、一个或者多个从备份区。多个主备份区也可以按照优先级从高到低依次设置为第一主备份区、第二主备份区等。多个从备份区也可以按照优先级从高到低依次设置为第一从备份区、第二从备份区等。Boot Loader程序可以按照优先级从高到低依次对多个区域的固件进行完整性校验。因此,通过多次存储固件,降低了固件检测失败的风险。
进一步地,Boot Loader程序首先对主备分区的固件进行完整性校验。在主备份区的固件校验通过时,则启动该主备份区固件。在主备份区的固件校验失败时,引导加载程序启动从备份区固件。在从备份区的固件校验通过时,则启动该从备份区的固件。因此,在主备份区的固件校验失败时,可以进行检验从备份区的固件,降低了固件检验失败的可能性。
在一个应用场景中,可以对固件进行升级操作。在一个示例中,对固件升级时,只能升级主备份区的固件,从备份区固件在出厂后便不可更改。因此,当固件升级失败或者错误时,由于从备份区固件在升级时未被更改,因此,可以使用从备份区的固件进行固件启动。
在一个示例中,固件初始化扩展背板对应的逻辑资源。进一步地,固件初始化过程中,固件加载配置文件,以配置各项功能的参数。
本申请实施例中,扩展背板的逻辑资源,是指扩展背板需要的接口信息、存储信息等对应的可以完成逻辑功能的硬件资源。示例性的,接口信息包括接口规范、接口数量、接口位置等。示例性的,存储信息包括硬盘容量、硬盘数量、硬盘位置等。固件初始化扩展背板的逻辑资源后,操作系统便可以识别到扩展背板的逻辑资源,从而操作系统可以使用扩展背板的逻辑资源去处理任务。示例性的,逻辑资源比如是一个硬盘、该硬盘的容量、该硬盘对应的接口等。
当固件启动成功时,扩展背板的逻辑资源的初始化已经完成,扩展背板开始处理业务。当固件启动失败时,则进入异常处理程序。异常处理程序可以包括多种处理程序。示例性的,第一种处理程序,固件异常重启。第二种处理程序,固件异常启动,业务功能不符合预期,相当于强制启动。第三种处理程序,固件启动失败,也就是说,直接停止固件的启动。
在一个示例中,引导加载程序、固件、配置文件分别设置在存储器120的不同区域。示例性的,存储器可以是一种非易失性存储器(non-volatile memory,NVM),比如闪存(FLASH)。
示例性的,导致扩展背板的固件启动失败的原因有很多,主要包括硬件方面、软件方面。示例性的,硬件方面原因可以是硬件配置错误、硬件损坏等原因。软件方面的原因,可以是配置文件的参数与固件初始化的逻辑存在冲突的原因。或者配置文件参数与扩展背板芯片的规格不匹配的原因。或者固件完整性检验失败的原因。或者固件升级不完整、升级代码错误等固件升级相关的原因。
本申请实施例中,重新写入固件,有时也称固件刷新,刷写,重写,烧录或刷机,是指把新的固件写入芯片中,代替原有的固件的过程。进一步地,这里的重新写入固件,也可以理解为一种固件升级。
第一种解决方案中,扩展背板上电后,固件开始启动,并初始化扩展背板的资源。如果固件启动失败,则只能返厂维修,重新写入固件。
本申请实施例提出了第二种解决方案。如图3所示,一种背板,主要包括:处理器110、存储器120、新增存储器。在背板启动的过程中,新增存储器主要用于获取固件异常重启的次数,以及比较固件异常重启的次数与预设阈值。进一步地,当固件异常重启的次数大于或等于预设阈值时,进行固件重写;当固件异常重启的次数小于预设阈值时,进入固件启动流程,执行引导加载程序。
在一些示例中,存储器120也被称为第一存储器,新增存储器也被称为第二存储器。
本申请实施例中,新增存储器存储有程序(也可以是指令或者代码),程序可被处理器110运行,使得处理器110执行如图3所示的方案。
可选地,新增存储器中还可以存储有数据。例如,处理器110可以读取新增存储器中存储的数据,该数据可以与程序存储在相同的存储地址,该数据也可以与程序存储在不同的存储地址。本申请实施例中,处理器110和新增存储器可以单独设置,也可以集成在一起,例如,集成在单板或者系统级芯片(system on chip,SOC)上。
在一个示例中,新增存储器还用于建立新增存储器启动的基础环境。进一步地,当扩展背板上电时,或者当固件异常重启时,建立新增存储器运行的基础环境。
本申请实施例中,对扩展背板的种类不进行限定。本申请实施例的新增存储器,对不同规格的扩展背板具有极强的兼容性。
示例性的,存储器120中的固件启动流程对逻辑资源的初始化,也被称为第一次初始化。新增存储器中的固件重写流程对逻辑资源的初始化,也被称为第二次初始化。
为了便于区分重写前后的固件,将重写前的固件称为第一固件,重写后的固件称为第二固件。进一步地,第一固件、第二固件只是为了区分两个固件。第一固件、第二固件可以是相同的固件,也可以是不同的固件。
存储器120存储有第一固件。第一固件,用于初始化扩展背板的资源。使用第一固件进行第一次初始化。当第一固件的第一次初始化失败时,需要进入第一固件的异常重启流程。异常重启流程包括:需要重新进行固件的完整性检验、重新初始化扩展背板的资源。也就是说,相比于第一种解决方案,本申请实施例中,第一固件启动失败时,只进入固件异常重启的异常处理程序,不进入固件异常启动和固件启动失败的异常处理程序。存储器120的其他组成部件和功能,与第一种解决方案相同,不再赘述。
在一个实现方式中,当固件异常重启的次数大于或等于预设阈值时,初始化目标逻辑资源;目标逻辑资源,提供了操作系统识别背板所需的资源;基于目标逻辑资源,通过操作系统对背板的固件进行重写;基于重写完成后的固件进行启动,进入固件启动流程。
在一个示例中,如图4所示,当第一固件异常重启的次数大于或等于预设阈值时,新增存储器初始化目标逻辑资源。通过目标逻辑资源,操作系统可以识别到扩展背板。通过目标逻辑资源,操作系统进一步地向存储器120写入第二固件。重新写入第二固件后,存储器120便可以基于第二固件,进行固件启动,包括对第二固件进行完整性检验和初始化扩展背板的资源。进一步地,第二固件初始化成功后,扩展背板启动成功,扩展背板开始处理业务。目标逻辑资源,是指新增的存储器实现自身功能所必需的逻辑资源。逻辑资源的具体解释,与扩展背板的逻辑资源相同,不再赘述。
在一个实现方式中,如图4所示,新增存储器的功能主要包括读写功能和通信功能。进一步地,由于背板未启动,操作系统无法识别到背板,因此,需要初始化一些逻辑资源(即目标逻辑资源),使得操作系统可以识别到背板,并和背板进行通信和读写操作。
进一步地,读写功能,是指目标逻辑资源可以实现对扩展背板进行读写操作。在一个示例中,通过操作系统对扩展背板进行读写操作。示例性的,存储器120为FLASH芯片。目标逻辑资源让操作系统可以读写该FLASH芯片。
进一步地,通信功能,是指实现与扩展背板的通信。在一个示例中,目标逻辑资源,相当于建立了操作系统与扩展背板的信号通道。也就是说,目标逻辑资源可以让操作系统识别控制背板为通信设备。示例性的,目标逻辑资源可以让操作系统识别到扩展背板为SCSI设备。也就是说,操作系统,可以通过SCSI协议,与扩展背板进行通信。在另一个示例中,目标逻辑资源,相当于建立了内存与扩展背板的信号通道。
在另一个示例中,也可以不通过操作系统,而实现对扩展背板进行读写操作。也就是说,将第二固件预先存储于一个存储器中,当新增存储器进行固件重写时,直接从该存储器中获取预先存储的第二固件,再将该第二固件重写至存储器120中。因此,固件重写工作是第一固件异常重启的次数大于或等于预设阈值时自动触发的,可以实现固件重写过程的自动化,提高了固件启动过程的效率。
本申请实施例中,重新写入第二固件,不需要返厂维修。进一步地,解决了软件原因造成的固件不能正常运行时,只能返厂重写固件的问题。
本申请实施例中,如果是软件方面的原因导致的扩展背板的固件启动失败的问题,可以通过重新写入第二固件进行解决。如果是硬件方面的造成的固件启动失败,与第一种解决方案相同,只能更换或者替换新的硬件资源。
在一个应用场景中,随着扩展背板的应用场景的变化,经常需要刷新固件。因此,固件启动失败可能是升级过程产生的错误。进一步地,第一固件可以为升级错误的固件,第二固件可以为升级正确的固件。
本申请实施例的第二种解决方案,新增存储器获取存储器120异常重启的次数。新增存储器发现异常启动的次数大于或者等于预设阈值时,新增存储器便进行固件重写,再利用重写的固件进行固件启动。
在一个实现方式中,当第一固件异常重启的次数大于或等于预设阈值时,新增存储器可以选择不再跳转到存储器120,也就是不会再次进入现有的固件启动流程。进一步地,新增存储器,首先对目标逻辑资源(即自身功能必需的资源)进行初始化,再利用自身功能进一步实现对固件的重新烧写。
在一个实现方式中,当第一固件异常重启的次数小于预设阈值时,启动存储器120,进入第一固件的启动流程。也就是说,对第一固件的完整性进行检验,第一固件开始初始化扩展背板的资源。可以进一步理解的是,当第一固件异常重启的次数小于预设阈值时,进入了第一种解决方案的启动固件的流程。
在一个示例中,如图3所示,处理器110的上电启动地址连接于系统启动程序。扩展背板上电后,处理器110的上电启动地址对应的系统启动程序首先启动。进一步地,新增存储器第一次启动时,存储器120还未启动,因此,固件异常重启的次数为零。
可以进一步理解的是,存储器120每次重新初始化前,都需要先进入新增存储器,比较第一固件异常重启的次数是否大于或等于预设阈值。基于比较的结果,再确定是进入新增存储器进行重写固件,还是进入存储器120进行固件正常启动的流程。因此,新增存储器实现了对现有的存储器120的控制和管理。
进一步地,新增存储器中的系统启动程序与现有的Boot Loader类似,用于建立新增存储器运行的基础环境。
进一步地,处理器的上电启动地址连接于新增存储器中的系统启动程序。在一个示例中,可以将新增存储器中的系统启动程序的首地址设置为上电启动地址。
本申请实施例中,处理器110,与第一种解决方案相同,不再赘述。
在一个实现方式中,如图5所示,本申请实施例的新增存储器还用于对固件异常启动的次数进行计数,相应的程序称为计数程序。进一步地,新增存储器获取第一固件异常重启的信号,并记录第一固件异常重启的次数。新增存储器还用于对第一固件异常重启的次数的预设阈值进行比较。
本申请实施例中,对计数程序的位置不进行限定。在其他实现方式中,计数程序还可以存储于存储器120。进一步地,该计数程序还可以存储于扩展背板上的其他存储位置,也可以独立于扩展背板进行存储。
在一个实现方式中,预设阈值存储于寄存器中。示例性的,该寄存器通过硬件某个引脚的高低电平赋值实现。
在一个示例中,寄存器中预设阈值可以被手动修改,增加了设置预设阈值的灵活性。
在另一个示例中,也可以通过程序进行设定预设阈值,保证了预设阈值的稳定性,不容易被损坏和丢失数据。
本申请实施例,对寄存器的位置不进行限定。寄存器可以设置于扩展背板,也可以独立于扩展背板。
在一个实现方式中,如图3所示,存储器120还包括配置文件。为了便于区分重写前后的配置文件,将重写前的配置文件称为第一配置文件,重写后的配置文件称为第二配置文件。进一步地,第一配置文件、第二配置文件只是为了区分两个配置文件。进一步地,第一配置文件、第二配置文件既可以是相同的配置文件,也可以是不同的配置文件。
进一步地,配置文件存储有第一配置文件。第一固件结合第一配置文件,初始化扩展背板的资源,以配置扩展背板各项功能的参数。当操作系统向存储器120写入第二固件时,操作系统还可以写入第二配置文件。第二固件基于第二配置文件,初始化扩展背板的资源。
进一步地,新增存储器重新写入第二固件时,还重新写入了第二配置文件。重新写入第二配置文件,可以解决由于第一配置文件的相关错误而引起的固件启动失败问题。解决了配置文件参数与固件初始化逻辑冲突的问题。解决了配置文件的参数与扩展背板的芯片规格不匹配的问题。
本申请实施例中,可以通过操作系统写入第二固件或者第二配置文件,比如通过用户手动操作执行。也可以先读取内存已经存储的第二固件或者第二配置文件,再向扩展背板写入第二固件或者第二配置文件。
在一个实现方式中,存储器120、新增存储器分别为两个独立的存储器。
进一步地,新增存储器与业务频繁操作的存储器120互不交涉。在一个示例中,新增存储器出厂后,便不会再修改新增存储器的数据。从而保证新增存储器的数据完整性。也就是说,可以确保新增存储器的数据不被损坏,从而保证新增存储器始终能成功运行,以解决固件启动失败的问题。
在一个应用场景中,新增存储器为NVM芯片,存储器120为FLASH芯片。第二种解决方案新增加的新增存储器,可以是新增的NVM芯片,可以避免背板业务误操作损坏新增存储器。可以避免业务功能对FLASH芯片的误操作时,对本申请实施例的新增存储器造成数据损坏。
在一个实现方式中,新增存储器中的存储文件存储于存储器120中。进一步地,如图6所示,不设置新增存储器,而是将新增存储器中的存储文件存储于存储器120中。也就是说,存储器120也可以实现新增存储器的相关功能。
在一个应用场景中,存储器120为现有的FLASH芯片,用于启动扩展背板。本申请实施例不更改当前的硬件设计,在现有的FLASH芯片空闲区域划分一块固定区域,用于存储和运行新增存储器存储的程序或者文件。在一个示例中,存储器120中的系统启动程序所在的区域首地址设为上电启动地址。在扩展背板上电后,本申请实施例的存储器120便可以管理扩展背板的启动工作。可以进一步理解的是,本申请实施例的存储器120增加重写固件等功能的同时,没有增加新的硬件资源,不用更改硬件设计即可使用,节省了硬件改版成本。在存储器120重新写入第二固件时,减少了多个硬件之间的交互过程。
在一个实现方式中,重新写入第二固件后,新增存储器还需要指示重写的固件进行启动。也就是说,再利用第二固件进行固件启动。触发第二固件启动的方式主要包括:对扩展背板重新上电,或者进入固件异常重启的异常处理流程。
进一步说明对扩展背板重新上电的过程。重新写入第二固件后,对扩展背板重新上电。固件异常重启的次数清零,即断电触发的清零。在一个示例中,可以通过对固件异常启动的次数进行计数的存储器进行清零实现。扩展背板重新上电后,进入系统启动程序,之后的工作流程,不再赘述。
进一步说明进入固件异常重启的异常处理流程的过程。重新写入第二固件后,进入固件异常重启的异常处理流程。在此场景下,可以通过指令对固件异常重启的次数清零。在一个示例中,可以通过对固件异常启动的次数进行计数的存储器进行清零实现。进入固件异常重启的异常处理流程后,进入系统启动程序,之后的工作流程,不再赘述。
图7为本申请实施例中提供的一种针对扩展背板的固件启动方法的流程示意图。如图7所示,本申请实施例提供了一种针对扩展背板的固件启动方法,主要包括以下步骤:
步骤S101,在背板的启动过程中,获取背板的固件异常启动的次数。
步骤S102,当固件异常启动的次数大于或等于阈值,对背板的固件进行重写。
步骤S103,基于重写的固件进行固件启动。
在一种可能的实施方式中,如图3或图5所示,新增存储器用于获取背板的固件异常启动的次数,并比较固件异常启动的次数和预设的阈值;以及当固件异常启动的次数大于或等于阈值,对背板的固件进行重写。也就是说,。固件重写完成后,存储器120就可以基于重写的固件进行固件启动。
进一步地,新增存储器是指在背板上新增的存储器。新增存储器获取固件异常启动的次数,以及比较固件异常启动的次数和预设的阈值,以及对背板的固件进行重写。避免了对背板现有硬件的占用,不影响背板的现有功能的实现。
进一步地,新增存储器只用于实现本申请实施例的固件启动方法。由于新增存储器独立于其他硬件的特点,避免了新增存储器的内容被修改的风险,比如误删除、误写入等操作。也就是说,新增存储器的内容是稳定的,可以保证本申请实施例的方法的实现。
进一步地,存储器120基于重写的固件进行固件启动的方法流程,与存储器120基于现有固件进行固件启动的方法流程相同,只是固件本身发生了改变。因此,存储器120基于重写的固件进行固件启动的方法流程,不再赘述。
在一种可能的实施方式中,如图6所示,存储器120用于获取背板的固件异常启动的次数,并比较固件异常启动的次数和预设的阈值;以及当固件异常启动的次数大于或等于阈值,对背板的固件进行重写;以及基于重写的固件进行固件启动。同时,存储器120还用于实现固件的正常启动流程。
如图6所示,本申请实施例的固件启动方法对应的指令和现有的固件正常启动流程的指令,同时存储于背板已有的存储器120。因此,该实施方式可以不用改变背板现有的硬件结构,节约了本申请实施例在实施过程中的成本。
进一步地,固件重写完成后,需要重新进行固件启动,以验证重写后的固件是否可以启动成功。指示重写的固件启动,主要有两种方式:扩展背板重新上电和进入固件异常启动程序。上述两种方式的具体原理,不再赘述。
在一个可能的实施方式中,其中,对背板的固件进行重写,具体包括:初始化目标逻辑资源;目标逻辑资源提供了操作系统识别到背板所需的资源;基于初始化目标逻辑资源,通过操作系统对背板的固件进行重写。
进一步地,由于背板未启动成功,因此,需要初始化一部分逻辑资源,以使操作系统识别到背板,从而通过操作系统与背板进行通信和读写操作。其中的写操作,就是指固件重写工作。因此,目标逻辑资源是固件重写工作所必需的逻辑资源。由于目标逻辑资源只需要满足固件重写功能,因此目标逻辑资源的数量较小。也就是说,在初始化目标逻辑资源的过程中,节省了不必要的初始化工作,提供了工作效率高。
在一个示例中,用户可以通过操作系统,对重写的固件进行操作。
示例性的,当第一次重写的固件还是启动失败时,用户可以进行第二次重写。或者,用户也可以在多次重写均失败后,放弃固件重写,再通过其他方法进行固件维护,比如返厂维修。或者,当第一次重写的固件还是启动失败时,用户可以对固件本身的指令进行检查和修改,将修改的固件进行再次重写。
因此,该实施方式增加了固件重写操作的灵活性,提高了用户体验。
在一个可能的实施方式中,对所述背板的固件进行重写,包括:基于预先存储的固件,对所述背板的固件进行重写。
进一步地,固件重写的过程,也可以不通过操作系统。也就是说,将至少一个固件预先存储于一个存储器中。该存储器可以是存储器120或者新增存储器,也可以是其他的存储器。
进一步地,当进行固件重写时,直接从存储器中获取预先存储的一个固件,再将该固件重写到正常启动时存储固件的位置。也就是说,使用预先存储的固件替换了正常启动时的固件。因此,再次进行固件的启动程序,就可以基于重写后的固件进行固件启动。
该实施方式中,由于没有用户和操作系统的参与,整个过程由硬件完成,因此,实现了重写固件的自动化过程,提高了重写固件的工作效率。
在一个可能的实施方式中,固件启动方法还包括:当固件异常启动的次数大于或等于阈值,对背板的配置文件进行重写。其中,基于重写的固件进行固件启动,包括:基于重写的固件和重写的配置文件,进行固件启动。
进一步地,第一方面,当固件启动失败时,可能是固件的问题,比如固件升级不完整、升级代码错误、固件损坏等。第二方面,当固件启动失败时,也可能是配置文件的问题,比如配置文件参数与扩展背板芯片的规格不匹配等。第三方面,当固件启动失败时,也可能是固件与配置文件均出现了问题,比如配置文件的参数与固件初始化的逻辑存在冲突等。因此,设置与固件相匹配的合适的配置文件,至关重要。
因此,在一些应用场景中,在重新写入固件的同时,还需要重新写入配置文件。
进一步地,重新写入配置文件可以由用户通过操作系统进行重写,也可以通过预先存储方式进行重写。该处的处理过程与重新固件的过程相同,在该实施方式中,不再赘述。
进一步地,重新写入配置文件的指令可以存储于存储器120中,也可以存储于新增存储器中。该处的处理过程与重新固件的过程相同,在该实施方式中,不再赘述。
在该实施方式中,通过重写配置文件,解决了由于配置文件的相关错误而引起的固件启动失败的问题。
在一个可能的实施方式中,固件启动方法还包括:当固件异常重启的次数小于阈值时,固件进入正常启动程序。
进一步地,阈值可以预先设置在一个寄存器中,也可以由用户进行设置。具体地,可以通过程序指令的方式,将阈值预先设置在一个寄存器中。或者用户也可以通过操作系统,进行阈值的设置。
进一步地,当阈值较大时,固件进入正常启动程序的次数较多。也就是说,固件正确的可能性较低,因此,将正确的固件重写覆盖掉的风险较低。
进一步地,当阈值较小时,固件进入正常启动程序的次数较少。也就是说,由于固件进入正常启动的次数较少,将正确的固件重写覆盖掉的风险较高。同时,由于固件进入正常启动的次数较少,因此,进入固件重写阶段前的处理时间较短,提高了本申请实施例的固件启动方法的工作效率。
进一步地,当固件异常重启的次数小于阈值时,由于可以直接借用现有的固件正常启动的程序,因此可以减少了研发成本。
在一个可能的实施方式中,其中,获取背板的固件异常启动的次数,包括:对固件的异常重启进行计数;获取计数结果,计数结果作为固件异常启动的次数。
进一步地,获取背板的固件异常启动的次数的一种实现方式,就是对固件的每次异常启动进行记录。记录得到的结果,便可以作为固件异常启动的次数。进一步地,记录得到的结果,也可以生成文件,以便用户查看。
在该实施方式中,可以新增一个具有计数功能的逻辑器件,来完成对固件异常启动的次数进行计数。进一步地,也可以通过查找固件启动的异常记录等文件,去获取固件异常启动的次数,但过程繁琐。因此,该实施方式中,直接对固件的异常重启进行计数,简化了获取异常重启次数的方式。
结合本申请实施例的新增存储器,进一步地解释和说明本申请实施例的固件启动方法。也就是说,在图7的基础上,结合本申请实施例的新增存储器,通过图8和图9进行进一步的解释和说明。
图8为本申请实施例中提供的一种固件启动方法对应的详细流程示意图。如图8所示,本申请实施例的固件启动方法,主要包括以下步骤:
步骤S201,扩展背板上电。
示例性的,在扩展背板的使用过程中,扩展背板上电,也就意味着该扩展背板被启用,因此,扩展背板上电后,便进入固件启动的工作流程。
步骤S202,系统启动,开始运行。步骤S202的作用与引导加载程序的功能相同,用于建立新增存储器运行的基础环境。其中,系统启动,是指本申请实施例的固件启动方法对应的指令开始启动和运行。
在一个可能的实施方式中,将背板的上电启动地址连接于系统启动的指令。
示例性的,扩展背板上电后,处理器110进行固件启动工作时,可以将处理器110的上电启动地址设置为存储系统启动的指令的存储地址。因此,扩展背板上电后,处理器110的上电启动地址对应的系统启动程序首先启动,而不是现有的固件启动流程开始工作。因此,步骤S202,实现了对现有的固件启动流程的控制和管理。
系统启动的程序指令,可以存储于新增存储器,也可以存储于处理器120,与步骤S101至S103的方法的解释内容相同,不再赘述。
步骤S203,判断固件异常启动的次数是否大于或等于预设阈值。
进一步地,当固件异常启动的次数小于预设阈值,进入步骤S206,对现有的第一固件进行固件启动。也就是说,当固件异常重启的次数小于阈值时,固件进入正常启动程序,与步骤S101至S103的方法的解释内容相同,不再赘述。
进一步地,当固件异常启动的次数大于或等于预设阈值时,进入步骤S204,进行初始化目标逻辑资源。也就是说,基于初始化目标逻辑资源,通过操作系统对背板的固件进行重写。
进一步地,判断固件异常启动的次数是否大于或等于预设阈值的程序指令,可以存储于新增存储器,也可以存储于处理器120,与步骤S101至S103的方法的解释内容相同,不再赘述。
步骤S204,初始化目标逻辑资源。目的就是使能操作系统与本申请实施例的新增存储器进行通信,以及使能本申请实施例的新增存储器对存储固件的存储器进行固件重写。
在一个可能的实施方式中,当固件异常重启的次数大于或等于预设阈值时,新增存储器初始化目标逻辑资源。目标逻辑资源,提供了操作系统识别背板所需的资源。新增存储器基于目标逻辑资源,通过操作系统对背板的固件进行重写。
示例性的,在预设阈值为整数时,当固件异常重启的次数等于预设阈值时,新增存储器初始化目标逻辑资源。也就是说,不会出现固件异常重启的次数大于预设阈值的情况。因为每次新增存储器重写固件后,基于重写的固件进行固件的流程,与现有固件启动的流程相同。也就是说,也会判断重写的固件的异常启动的次数。因此,每次重写固件后,固件异常重启的次数都会发生清零。因此,不会出现固件异常重启的次数大于预设阈值的情况。
示例性的,在预设阈值为非整数时,当固件异常重启的次数大于预设阈值时,新增存储器初始化目标逻辑资源。
本申请实施例中,目标逻辑资源,是指新增存储器实现自身功能所必需的逻辑资源。进一步地,新增存储器的功能主要是指实现操作系统与背板之间的通信功能和读写功能。因此,用户可以通过操作系统实现与背板进行通信和读写操作,以及将新的固件重写到背板中。
在另一个可能的实施方式中,新增存储器也可以基于预先存储的固件,对所述背板的固件进行重写。也就是说,用户将一个固件预先存储于一个存储器中。当新增存储器进行固件重写时,新增存储器可以直接从该存储器中获取预先存储的固件,再将该固件重写至存储器120中。因此,固件重写工作是在硬件之间完成的,实现了固件重写过程的自动化,提高了固件启动过程的效率。
进一步地,当本申请实施例的方法对应的指令存储于存储器120中时,步骤S204的执行主体也可以是存储器120。
步骤S205,对固件进行重写,以及基于重写的固件进行固件启动。
在一个可能的实施方式中,当固件异常重启的次数大于或等于预设阈值时,新增存储器初始化目标逻辑资源。新增存储器基于目标逻辑资源,通过操作系统对背板的固件进行重写。该实施方式,与步骤S204的相关描述相同,不再赘述。
在另一个可能的实施方式中,新增存储器也可以基于预先存储的固件,对所述背板的固件进行重写。该实施方式,与步骤S204的相关描述相同,不再赘述。
在一个可能的实施方式中,如图8所示,可以通过扩展背板重新上电的方式,新增存储器基于重写的固件进行固件启动。当通过扩展背板重新上电的方式进行固件重启时,即进入步骤S201时,可以通过断电的方式,对异常启动次数进行清零。清零异常启动次数的目的,是防止基于重写的固件进行固件启动时,出现固件异常启动次数大于阈值,而无法进入固件正常的启动流程。通过扩展背板重新上电的方式,新增存储器基于重写的固件进行固件启动,相当于重新开始本申请实施例的方法,易于实现。
在另一个可能的实施方式中,如图8所示,可以通过固件异常启动的方式,新增存储器基于重写的固件进行固件启动。当通过固件异常启动的方式进行固件重启时,即进入步骤S207时,可以通过指令的方式,对异常启动次数进行清零。清零后,便可以进入步骤S202、步骤S203。由于对异常启动次数进行清零,因此,固件异常启动的次数必然小于预设阈值,会进入步骤S206,存储器120对重写的固件进行正常的固件启动流程。该实施方式中,不需要对扩展背板断电,节省了扩展背板上电的相关工作,提高了工作效率。示例性的,由于不需要对扩展背板断电,因此,不需要再次初始化目标逻辑资源,用户便可以通过操作系统识别到扩展背板,并进行多次固件重写操作,提高了工作效率。
也就是说,新增存储器基于重写的固件进行固件启动,可以选择步骤S201或者步骤S207中的一种方式进行重新的固件启动,本申请实施例,对此不进行限定。
步骤S206,进入现有的固件启动流程,以及对固件是否启动成功进行判断。
进一步地,进入现有的固件启动流程后,存储器120会对固件是否启动成功进行判断。当存储器120获取到固件启动成功的信号时,则进入步骤S208,通知扩展背板开始处理业务。当存储器120获取到固件启动出现异常的信号时,进入步骤S207,使得新增存储器进入异常重启的异常处理程序。
在一个可能的实施方式中,进入现有的固件启动流程,可以直接借用现有的固件正常启动的程序,因此,可以减少扩展背板的硬件改动,减少了研发成本。
步骤S207,固件启动出现异常时,进入异常重启的异常处理程序,并对异常重启的次数进行计数。完成后,进入步骤S202,系统启动运行。
进一步地,当固件启动出现异常而失败时,新增存储器会进入固件异常重启的异常处理程序。固件异常重启的过程主要包括:对异常重启的次数进行计数,以及进入步骤S202,系统启动运行。
在一个可能的实施方式中,可以是新增存储器对固件异常启动的次数进行计数,也可以是其他的存储器对固件异常启动的次数进行计数。相比于通过查找固件启动的异常记录等文件,该实施方式简化了获取异常重启次数的方式,提高了工作效率。
步骤S208,固件启动成功。
进一步地,固件启动成功,扩展背板可以实现背板的功能,扩展背板开始处理业务。
图9为本申请实施例中提供的一种现有的固件启动流程的示意图。如图9所示,对步骤S206对应的现有的固件启动流程进行进一步的解释和说明。现有的固件启动流程,主要包括以下步骤:
步骤S206-1,引导加载程序启动。引导加载程序,用于建立固件启动运行所需的基础环境。
在一个可能的实施方式中,处理器110中的上电启动地址设置为引导加载程序的首地址。因此,当扩展背板上电时,处理器110便开始执行该引导加载程序。
步骤S206-2,对主备份区的固件进行完整性检验。通过对固件进行完整性校验,来判断固件是否符合预期。
在一个可能的实施方式中,可以将固件按照优先级进行多次存储。比如,优先级高的存储区域称为主备份区,优先级低的存储区域称为从备份区。引导加载程序可以按照优先级从高到低依次对多个区域的固件进行完整性校验。因此,通过多次存储固件,降低了固件检测失败的风险。
也就是说,如果对主备份区的固件进行完整性检验通过,则进入步骤S206-4,进行初始化扩展背板的资源和硬件。如果对主备份区的固件进行完整性检验失败,则进入步骤S206-3,引导加载程序启动从备份区的固件。在从备份区的固件校验通过时,则启动该从备份区的固件。
步骤S206-3,从备份区的固件进行固件启动。
在一个可能的实施方式中,引导加载程序将跳转到从备份区的固件所存储区域的地址,对从备份区的固件进行启动。该实施方式,增加了固件数量的冗余性,降低了固件启动失败的风险。
可选地,对从备份区的固件进行完整性校验,在从备份区的固件校验通过时,则启动该从备份区的固件。
可选地,从备份区固件在出厂前已经通过完整性校验,且从备份区固件在出厂后便不可更改。因此,可以不对从备份区的固件进行完整性校验,直接启动该从备份区的固件。
步骤S206-4,判断固件初始化扩展背板的逻辑资源是否成功。
进一步地,固件成功初始化扩展背板的逻辑资源,是扩展背板处理业务的前提。进一步地,扩展背板的逻辑资源,为扩展背板处理业务提供了所需的资源。
在一个可能的实施方式中,基于配置文件,存储器120的固件初始化与配置文件相对应的逻辑资源。也就是说,在满足配置文件的要求下,存储器120的固件初始化扩展背板的逻辑资源。因此,用户可以通过设置配置文件,在固件初始化扩展背板的逻辑资源后,使用不同的扩展背板进行处理业务。
进一步地,如果固件初始化失败,意味着固件无法按照配置文件为扩展背板提供逻辑资源,也就是说扩展背板无法正常处理业务。因此,如果初始化失败,则进入步骤S207,进入异常处理程序。
进一步地,如果固件初始化成功,意味着固件可以按照配置文件为扩展背板提供逻辑资源,也就是说扩展背板可以正常处理业务。因此,如果初始化成功,则进入步骤S208,固件启动成功,扩展背板开始处理业务。
如图10所示,本申请实施例提供了一种固件启动装置,应用于背板,该装置包括:获取模块,用于在背板的启动过程中,获取背板的固件异常启动的次数;固件重写模块,用于当固件异常启动的次数大于或等于阈值,对背板的固件进行重写;固件启动模块,用于基于重写的固件进行固件启动。
在一个示例中,固件重写模块,还用于:初始化目标逻辑资源;目标逻辑资源,用于操作系统识别背板;基于目标逻辑资源,操作系统对背板的固件进行重写。
在一个示例中,固件重写模块,还用于:基于预先存储的固件,对所述背板的固件进行重写。
在一个示例中,固件重写模块,还用于:当固件异常启动的次数大于或等于阈值,对背板的配置文件进行重写;以及基于重写的固件和重写的配置文件,进行固件启动。
在一个示例中,固件启动模块,还用于:当固件异常重启的次数小于阈值时,固件进入正常启动程序。
在一个示例中,获取模块,还用于:对固件的异常重启进行计数;以及获取计数结果,计数结果作为固件异常启动的次数。
本申请的实施例提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机指令在被处理器执行时,使得上文提及的方法被实现。
本申请的实施例提供了一种芯片,该芯片包括至少一个处理器和接口,所述至少一个处理器通过所述接口确定程序指令或者数据;该至少一个处理器用于执行所述程序指令,以实现上文提及的方法。
本申请的实施例提供了一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括指令,当该指令执行时,令计算机执行上文提及的方法。
本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执轨道,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执轨道的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种固件启动方法,其特征在于,应用于背板,所述方法包括:
在所述背板的启动过程中,获取所述背板的固件异常启动的次数;
当所述固件异常启动的次数大于或等于阈值,对所述背板的固件进行重写;
基于重写的所述固件进行固件启动。
2.根据权利要求1所述的方法,其特征在于,所述对所述背板的固件进行重写,包括:
初始化目标逻辑资源;所述目标逻辑资源提供了操作系统识别到所述背板所需的资源;
基于所述目标逻辑资源,通过所述操作系统对所述背板的固件进行重写。
3.根据权利要求1所述的方法,其特征在于,所述对所述背板的固件进行重写,包括:
基于预先存储的固件,对所述背板的固件进行重写。
4.根据权利要求1-3任意一项所述的方法,其特征在于,还包括:
当所述固件异常启动的次数大于或等于阈值,对所述背板的配置文件进行重写;
所述基于重写的所述固件进行固件启动,包括:
基于重写的所述固件和重写的所述配置文件,进行固件启动。
5.根据权利要求1-4任一项所述的方法,其特征在于,还包括:当所述固件异常重启的次数小于阈值时,所述固件进入正常启动程序。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述获取所述背板的固件异常启动的次数,包括:
对所述固件的异常重启进行计数;
获取计数结果,所述计数结果作为所述固件异常启动的次数。
7.一种背板,其特征在于,包括:
第一存储器,用于存储固件正常启动的指令、以及如权利要求1-6任意一项所述的方法对应的指令;
至少一个处理器,所述处理器用于执行所述第一存储器中存储的指令,以使得所述背板执行所述方法。
8.根据权利要求7所述的背板,其特征在于,所述第一存储器中的第一首地址设置为所述背板的上电启动地址,以使当所述背板上电时,所述处理器执行所述第一首地址的指令;所述第一首地址为所述第一存储器中的存储所述方法对应的指令的首地址。
9.一种背板,其特征在于,包括:
第一存储器,用于存储固件正常启动的指令;
第二存储器,用于存储如权利要求1-6任意一项所述的方法对应的指令;
至少一个处理器,所述处理器用于执行所述第一存储器和所述第二存储器中存储的指令,以使得所述背板执行所述方法。
10.根据权利要求9所述的背板,其特征在于,所述第二存储器中的第二首地址设置为所述背板的上电启动地址,以使当所述背板上电时,所述处理器执行所述第二首地址的指令;所述第二首地址为所述第二存储器中的存储所述方法对应的指令的首地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310605987.9A CN116795592A (zh) | 2023-05-23 | 2023-05-23 | 一种固件启动方法、装置、背板及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310605987.9A CN116795592A (zh) | 2023-05-23 | 2023-05-23 | 一种固件启动方法、装置、背板及服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116795592A true CN116795592A (zh) | 2023-09-22 |
Family
ID=88046164
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310605987.9A Pending CN116795592A (zh) | 2023-05-23 | 2023-05-23 | 一种固件启动方法、装置、背板及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116795592A (zh) |
-
2023
- 2023-05-23 CN CN202310605987.9A patent/CN116795592A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8423991B2 (en) | Embedded network device and firmware upgrading method | |
US8341386B2 (en) | Method for updating basic input/output system and method for repairing thereof | |
US8954805B2 (en) | Computer booting method and computer system | |
US7430662B2 (en) | Techniques for initializing a device on an expansion card | |
US8751783B2 (en) | Booting computing devices with EFI aware operating systems | |
US6836859B2 (en) | Method and system for version control in a fault tolerant system | |
US8468389B2 (en) | Firmware recovery system and method of baseboard management controller of computing device | |
CN107066362B (zh) | 一种自动处理故障内存条的方法 | |
US8041791B2 (en) | Computer system, management server, and mismatched connection configuration detection method | |
US11314866B2 (en) | System and method for runtime firmware verification, recovery, and repair in an information handling system | |
US20060036832A1 (en) | Virtual computer system and firmware updating method in virtual computer system | |
CN104834575A (zh) | 一种固件恢复方法及装置 | |
US20060224874A1 (en) | Method for updating system management basic input output system (SMBIOS) data | |
CN104915226A (zh) | 一种网络设备软件启动方法、装置及网络设备 | |
US20050039081A1 (en) | Method of backing up BIOS settings | |
CN110780942A (zh) | 系统启动方法、装置、节点设备及计算机可读存储介质 | |
CN113934471A (zh) | 计算机系统的基板管理控制器和启动方法 | |
CN108733517A (zh) | Ssd固件升级保护方法及装置 | |
US10540232B2 (en) | Recovery using programmable logic device | |
CN109582332B (zh) | 互联网摄像机的系统升级方法及装置 | |
CN114047958A (zh) | 一种服务器的基板管理控制器的启动方法、设备及介质 | |
CN111124294B (zh) | 一种扇区映射信息的管理方法及装置、存储介质和设备 | |
CN116795592A (zh) | 一种固件启动方法、装置、背板及服务器 | |
US11354109B1 (en) | Firmware updates using updated firmware files in a dedicated firmware volume | |
CN114510375A (zh) | 一种Flash芯片数据区域动态共享系统及方法 |
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 |