CN109814908A - 固件稳定升级的方法、装置、计算机设备及存储介质 - Google Patents
固件稳定升级的方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN109814908A CN109814908A CN201910044889.6A CN201910044889A CN109814908A CN 109814908 A CN109814908 A CN 109814908A CN 201910044889 A CN201910044889 A CN 201910044889A CN 109814908 A CN109814908 A CN 109814908A
- Authority
- CN
- China
- Prior art keywords
- firmware
- loading
- information
- needing
- volatile memory
- 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
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及固件稳定升级的方法、装置、计算机设备及存储介质,该方法包括在非易失性存储芯片内存放两份相同的固件,以得到备份固件以及需加载固件;读取非易失性存储芯片内的需加载固件的版本信息;根据版本信息加载并运行对应的需加载固件;判断需加载固件是否启动成功;若启动不成功,则更新需加载固件的版本信息;若启动成功,判断是否需要进行所有固件的信息更新;若不需要,则判断是否需要进行需加载固件的升级;若是,则对需加载固件进行升级,以得到新固件,并根据新固件更新非易失性存储芯片内的需加载固件的信息。本发明实现提高固件升级稳定性,升级失败也能够回退旧版本固件启动,以保证固态硬盘的正常启动工作。
Description
技术领域
本发明涉及固态硬盘,更具体地说是指固件稳定升级的方法、装置、计算机设备及存储介质。
背景技术
FW(固件,Firmware)是写入可擦写只读存储器或电可擦可编程只读存储器中的程序,它是用于驱动SSD控制器及确保其性能的重要组件,控制固态硬盘一切内部操作,不仅直接影响固态硬盘的性能、稳定性,也会影响到寿命。固件升级是用改进的固件程序替换SSD中的固件。以提高设备的功能和性能。整个升级流程如图1与图2所示,即:芯片上电,嵌入在微控制器内部且用于芯片正常工作的代码运行加载用于加载固态硬盘全系统固件的加载工程,加载工程从非易失性存储芯片中读取固件信息,等待固件运行成功后判断是否需要固件升级。而由于固件是出厂前已下载到非易失性存储芯片中的,只有一份,在非易失性存储芯片中没有多余备份,一旦升级失败将会导致固件信息覆盖,出现固件升级失败的情况,会导致固态硬盘不能够正常启动工作。
因此,有必要设计有一种新的方法,实现提高固件升级稳定性,升级失败也能够回退旧版本固件启动,以保证固态硬盘的正常启动工作。
发明内容
本发明的目的在于克服现有技术的缺陷,提供固件稳定升级的方法、装置、计算机设备及存储介质。
为实现上述目的,本发明采用以下技术方案:固件稳定升级的方法,包括:
在非易失性存储芯片内存放两份相同的固件,以得到备份固件以及需加载固件;
读取非易失性存储芯片内的需加载固件的版本信息;
根据版本信息加载并运行对应的需加载固件;
判断所述需加载固件是否启动成功;
若启动不成功,则更新所述需加载固件的版本信息,并返回所述根据版本信息加载并运行对应的需加载固件;
若启动成功,判断是否需要进行所有固件的信息更新;
若不需要进行所有固件的信息更新,则判断是否需要进行需加载固件的升级;
若是,则对需加载固件进行升级,以得到新固件,并根据新固件更新非易失性存储芯片内的需加载固件的信息。
其进一步技术方案为:所述在非易失性存储芯片内存放两份相同的固件,以得到备份固件以及需加载固件,包括:
在非易失性存储芯片内存放两份信息相同的固件;
对两份信息相同的固件进行版本号标记,以得到备份固件以及需加载固件。
其进一步技术方案为:所述读取非易失性存储芯片内的需加载固件的版本信息,包括:
对非易失性存储芯片进行上电,启动嵌入在微控制器内部且用于芯片正常工作的代码;
利用所述代码读取并运行用于加载固态硬盘全系统固件的加载工程;
利用加载工程读取非易失性存储芯片内的需加载固件的版本信息。
其进一步技术方案为:所述更新所述需加载固件的版本信息,包括:
获取启动不成功的需加载固件信息;
判断是否有可加载的备份固件;
若是,则通过非易失性存储芯片中的备份固件的版本号更新需加载固件的版本号,以得到新固件;
若否,则发送所有固件均不可使用的信息,并重新下载固件,以得到新固件。
其进一步技术方案为:所述若启动成功,判断是否需要进行所有固件的信息更新之后,还包括:
若需要进行所有固件的信息更新,则利用新固件的信息更新非易失性存储芯片中的所有固件的信息。
其进一步技术方案为:所述判断是否需要进行所有固件的信息更新,包括:
判断需加载固件信息与备份固件信息是否一致;
若是,则不需要进行所有固件的信息更新;
若否,则需要进行所有固件的信息更新。
其进一步技术方案为:所述对需加载固件进行升级,以得到新固件,包括:
在固态硬盘工作时,利用加载工程将需加载固件从非易失性存储芯片拷贝至主控代码段;
运行主控代码;
将需加载固件写入非易失性存储芯片当前使用的固件位置;
将寄存器指针跳转至嵌入在微控制器内部且用于芯片正常工作的代码的零地址;
运行嵌入在微控制器内部且用于芯片正常工作的代码。
本发明还提供了固件稳定升级的装置,包括:
固件存放单元,用于在非易失性存储芯片内存放两份相同的固件,以得到备份固件以及需加载固件;
版本信息读取单元,用于读取非易失性存储芯片内的需加载固件的版本信息;
固件运行单元,用于根据版本信息加载并运行对应的需加载固件;
启动判断单元,用于判断所述需加载固件是否启动成功;
更新单元,用于若启动不成功,则更新所述需加载固件的版本信息;
信息更新判断单元,用于若启动成功,判断是否需要进行所有固件的信息更新;
升级判断单元,用于若不需要进行所有固件的信息更新,则判断是否需要进行需加载固件的升级;
升级单元,用于若是,则对需加载固件进行升级,以得到新固件,并根据新固件更新非易失性存储芯片内的需加载固件的信息。
本发明还提供了一种计算机设备,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现上述的方法。
本发明还提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时可实现上述的方法。
本发明与现有技术相比的有益效果是:本发明通过在非易失性存储芯片中存放两份相同的固件,加载工程通过非易失性存储芯片中存放的需加载固件的版本号选择需加载固件,在需加载固件升级时,当前的需加载固件升级后无法正常启动,调用备份固件正常启动固态硬盘,并将升级失败的需加载固件退回原始版本,若需加载固件升级成功,则将备份固件信息更新到与升级成功的需加载固件信息一致,以实现提高固件升级稳定性,升级失败也能够回退旧版本固件启动,以保证固态硬盘的正常启动工作。
下面结合附图和具体实施例对本发明作进一步描述。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术的固件稳定升级的方法的流程示意图;
图2为现有技术的非易失性存储芯片的结构示意图;
图3为本发明实施例提供的固件稳定升级的方法的流程示意图;
图4为本发明实施例提供的固件稳定升级的方法的子流程示意图;
图5为本发明实施例提供的固件稳定升级的方法的子流程示意图;
图6为本发明实施例提供的固件稳定升级的方法的子流程示意图;
图7为本发明实施例提供的固件稳定升级的方法的子流程示意图;
图8为本发明实施例提供的固件稳定升级的方法的子流程示意图;
图9为本发明实施例提供的非易失性存储芯片的结构示意图;
图10为本发明实施例提供的固件稳定升级的装置的示意性框图;
图11为本发明实施例提供的计算机设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
请参阅图3,图3为本发明实施例提供的固件稳定升级的方法的示意性流程图。该固件稳定升级的方法可以运用在带有固态硬盘的设备中,实现对固态硬盘的固件稳定升级,以确保固态硬盘的正常启动和运行。
图3是本发明实施例提供的固件稳定升级的方法的流程示意图。如图3所示,该方法包括以下步骤S110至S150。
S110、在非易失性存储芯片内存放两份相同的固件,以得到备份固件以及需加载固件。
在本实施例中,备份固件是指用于需加载固件升级后无法使用时作为备选的固件;需加载固件是指用于固态硬盘正常运行中,替换固态硬盘中当前固件的固件,如图10所示。
在一实施例中,如图4所示,上述的步骤S110可包括步骤S111~S112。
S111、在非易失性存储芯片内存放两份信息相同的固件;
存放两份信息相同的固件,是为了防止若升级后的固件无法使用时还可以用备份信息刷新和覆盖升级后的固件信息,使得固件升级失败后依然可以使用备份固件启动固态硬盘,备份固件亦可将升级后的需加载固件回退到升级前的版本,此后再根据需要决定是否升级,以保证固件硬盘的正常启动和运行。
S112、对两份信息相同的固件进行版本号标记,以得到备份固件以及需加载固件。
在本实施例中,通过设置固件对应的版本号,标定备份固件和需加载固件,比如备份固件的版本号为0,需加载固件的版本号是1;也可以通过更改版本号信息来更改下次要加载的需加载固件。
S120、读取非易失性存储芯片内的需加载固件的版本信息。
在本实施例中,版本信息是指固件的版本号,每次升级后需要进行版本号的刷新,可以设定未升级前的版本号为V0版本,升级后的版本号为V1版本等,可根据实际情况而定,非易失性存储芯片的内存存放两份相同固件信息以及待加载的固件版本号,以便于区分备份固件以及需加载固件。
在一实施例中,如图5所示,上述的步骤S120可包括步骤S121~S123。
S121、对非易失性存储芯片进行上电,启动嵌入在微控制器内部且用于芯片正常工作的代码;
S122、利用所述代码读取并运行用于加载固态硬盘全系统固件的加载工程;
S123、利用加载工程读取非易失性存储芯片内的需加载固件的版本信息。
在本实施例中,先从固态硬盘获取加载工程,该加载工程主要用于加载固件所用,在利用加载工程从非易失性存储芯片内的需加载固件的版本信息。
S130、根据版本信息加载并运行对应的需加载固件。
加载工程根据版本号在非易失性存储芯片中选择需加载固件。
S140、判断所述需加载固件是否启动成功;
S150、若启动不成功,则更新所述需加载固件的版本信息,并返回所述步骤S130。
在需加载固件无法启动成功,则表明当前的需加载固件出现升级失败的情况,需要进行更新处理,以得到需加载固件信息的更新,实现提高固件升级稳定性,升级失败也能够回退旧版本固件启动,以保证固态硬盘的正常启动工作。
在一实施例中,如图6所示,上述的步骤S150可包括步骤S151~S154。
S151、获取启动不成功的需加载固件信息;
S152、判断是否有可加载的备份固件;
S153、若是,则通过非易失性存储芯片中的备份固件的版本号更新需加载固件的版本号,以得到新固件;
S154、若否,则发送所有固件均不可使用的信息,并重新下载固件,以得到新固件。
当需加载固件无法正常启动时,固态硬盘需要向主机发送当前版本的需加载固件的无效信息,判断非易失性存储芯片内是否还有其他可加载件,若是,通过将非易失性存储芯片中某区域一比特位置0/1来更新需加载固件的版本号,也就是利用备份固件的版本号更新需加载固件的版本号,若否,固态硬盘需要向主机发送信息,即当前所有固件均不可使用,请重新下载新的固件,以形成新固件,检查内存中是否有可用的固件,若没有可及时提醒重新下载固件信息,以此新固件的版本号更新需加载固件的版本号,以实现升级失败也能够回退旧版本固件启动,保证固态硬盘的正常启动工作。
S160、若启动成功,判断是否需要进行所有固件的信息更新。
在一实施例中,如图7所示,上述的步骤S160可包括步骤S161~S163。
S161、判断需加载固件信息与备份固件信息是否一致;
S162、若是,则不需要进行所有固件的信息更新;
S163、若否,则需要进行所有固件的信息更新。
具体是利用需加载固件信息与备份固件信息进行比对,以进行是否需要所有固件的信息,以确保备份固件与需加载固件的信息一致性。
S170、若需要进行所有固件的信息更新,则利用新固件的信息更新非易失性存储芯片中的所有固件的信息。
将当前正常运行的固件信息刷新覆盖另一份固件信息,可以是需加载固件刷新覆盖备份固件,也可以是备份固件刷新覆盖需加载固件。需加载固件升级成功后,将备份固件也刷新成升级后的需加载固件;需加载固件升级失败后,用备份固件刷新升级失败后的需加载信息,使其回退到升级前的信息状态。
具体地,若是需加载固件升级成功,也就是需加载固件升级后可以正常运行,则用升级后需加载固件刷新备份固件;若是需加载固件升级失败,也就是需加载固件升级后无法正常使用,则用备份固件将升级失败的需加载固件回退到原始版本的需加载固件,即将备份固件将升级失败的需加载固件回退至未升级之前的需加载固件;实现提高固件升级稳定性,升级失败也能够回退旧版本固件启动,以保证固态硬盘的正常启动工作。
S180、若不需要进行所有固件的信息更新,则判断是否需要进行需加载固件的升级;
S190、若是,则对需加载固件进行升级,以得到新固件,并根据新固件更新非易失性存储芯片内的需加载固件的信息。
在一实施例中,如图8所示,上述的步骤S190可包括步骤S191~S195。
S191、在固态硬盘工作时,利用加载工程将需加载固件从非易失性存储芯片拷贝至主控代码段;
S192、运行主控代码;
S193、将需加载固件写入非易失性存储芯片当前使用的固件位置;
S194、将寄存器指针跳转至嵌入在微控制器内部且用于芯片正常工作的代码的零地址;
S195、运行嵌入在微控制器内部且用于芯片正常工作的代码。
若否,则进入结束步骤。
固态硬盘工作时,用于加载固态硬盘全系统固件的加载工程已经将需加载固件从非易失性存储芯片中加载拷贝到主控代码段中并运行。主机通过PCIe(高速串行计算机扩展总线标准,peripheral component interconnect express)将待升级的需加载固件写入SSD的非易失性存储芯片存放当前使用的固件位置,也就是覆盖当前运行需加载固件在非易失性存储芯片的内存中存放的信息;并将PC指针跳转到嵌入在微控制器内部且用于芯片正常工作的代码的零地址,重新运行嵌入在微控制器内部且用于芯片正常工作的代码,以进行需加载固件的升级。
上述的固件稳定升级的方法,通过在非易失性存储芯片中存放两份相同的固件,加载工程通过非易失性存储芯片中存放的需加载固件的版本号选择需加载固件,在需加载固件升级时,当前的需加载固件升级后无法正常启动,调用备份固件正常启动固态硬盘,并将升级失败的需加载固件退回原始版本,若需加载固件升级成功,则将备份固件信息更新到与升级成功的需加载固件信息一致,以实现提高固件升级稳定性,升级失败也能够回退旧版本固件启动,以保证固态硬盘的正常启动工作。
图10是本发明实施例提供的一种固件稳定升级的装置300的示意性框图。如图10所示,对应于以上固件稳定升级的方法,本发明还提供一种固件稳定升级的装置300。该固件稳定升级的装置300包括用于执行上述固件稳定升级的方法的单元,该装置可以被配置于带有固态硬盘的设备中。
具体地,请参阅图10,该固件稳定升级的装置300包括:
固件存放单元301,用于在非易失性存储芯片内存放两份相同的固件,以得到备份固件以及需加载固件;
版本信息读取单元302,用于读取非易失性存储芯片内的需加载固件的版本信息;
固件运行单元303,用于根据版本信息加载并运行对应的需加载固件;
启动判断单元304,用于判断所述需加载固件是否启动成功;
更新单元305,用于若启动不成功,则更新所述需加载固件的版本信息;
信息更新判断单元306,用于若启动成功,判断是否需要进行所有固件的信息更新;
升级判断单元307,用于若不需要进行所有固件的信息更新,则判断是否需要进行需加载固件的升级;
升级单元308,用于若是,则对需加载固件进行升级,以得到新固件,并根据新固件更新非易失性存储芯片内的需加载固件的信息。
在一实施例中,所述固件存放单元301包括:
存放子单元,用于在非易失性存储芯片内存放两份信息相同的固件;
标记子单元,用于对两份信息相同的固件进行版本号标记,以得到备份固件以及需加载固件。
在一实施例中,所述版本信息读取单元302包括:
代码启动子单元,用于对非易失性存储芯片进行上电,启动嵌入在微控制器内部且用于芯片正常工作的代码;
加载工程读取子单元,用于利用所述代码读取并运行用于加载固态硬盘全系统固件的加载工程;
加载工程运行子单元,用于利用加载工程读取非易失性存储芯片内的需加载固件的版本信息。
上述的装置还包括:
固件刷新单元309,用于若需要进行所有固件的信息更新,则利用新固件的信息更新非易失性存储芯片中的所有固件的信息。
在一实施例中,所述更新单元305包括:
不成功信息获取子单元,用于获取启动不成功的需加载固件信息;
备份固件判断子单元,用于判断是否有可加载的备份固件;
需加载固件更新子单元,用于若是,则通过非易失性存储芯片中的备份固件的版本号更新需加载固件的版本号,以得到新固件;
固件下载子单元,用于若否,则发送所有固件均不可使用的信息,并重新下载固件,以得到新固件。
在一实施例中,所述升级单元308包括:
固件拷贝子单元,用于在固态硬盘工作时,利用加载工程将需加载固件从非易失性存储芯片拷贝至主控代码段;
主控代码运行子单元,用于运行主控代码;
固件写入子单元,用于将需加载固件写入非易失性存储芯片当前使用的固件位置;
指针跳转子单元,用于将寄存器指针跳转至嵌入在微控制器内部且用于芯片正常工作的代码的零地址;
代码重新子单元,用于运行嵌入在微控制器内部且用于芯片正常工作的代码。
需要说明的是,所属领域的技术人员可以清楚地了解到,上述固件稳定升级的装置300和各单元的具体实现过程,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
上述固件稳定升级的装置300可以实现为一种计算机程序的形式,该计算机程序可以在如图11所示的计算机设备上运行。
请参阅图11,图11是本申请实施例提供的一种计算机设备的示意性框图。该计算机设备500可以是终端,也可以是服务器,其中,终端可以是智能手机、平板电脑、笔记本电脑、台式电脑等具有固态硬盘的电子设备。服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。
参阅图11,该计算机设备500包括通过系统总线501连接的处理器502、存储器和网络接口505,其中,存储器可以包括非易失性存储介质503和内存储器504。
该非易失性存储介质503可存储操作系统5031和计算机程序5032。该计算机程序5032包括程序指令,该程序指令被执行时,可使得处理器502执行一种固件稳定升级的方法。
该处理器502用于提供计算和控制能力,以支撑整个计算机设备500的运行。
该内存储器504为非易失性存储介质503中的计算机程序5032的运行提供环境,该计算机程序5032被处理器502执行时,可使得处理器502执行一种固件稳定升级的方法。
该网络接口505用于与其它设备进行网络通信。本领域技术人员可以理解,图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器502用于运行存储在存储器中的计算机程序5032,以实现如下步骤:
在非易失性存储芯片内存放两份相同的固件,以得到备份固件以及需加载固件;
读取非易失性存储芯片内的需加载固件的版本信息;
根据版本信息加载并运行对应的需加载固件;
判断所述需加载固件是否启动成功;
若启动不成功,则更新所述需加载固件的版本信息,并返回所述根据版本信息加载并运行对应的需加载固件;
若启动成功,判断是否需要进行所有固件的信息更新;
若不需要进行所有固件的信息更新,则判断是否需要进行需加载固件的升级;
若是,则对需加载固件进行升级,以得到新固件,并根据新固件更新非易失性存储芯片内的需加载固件的信息。
在一实施例中,处理器502在实现所述在非易失性存储芯片内存放两份相同的固件,以得到备份固件以及需加载固件步骤时,具体实现如下步骤:
在非易失性存储芯片内存放两份信息相同的固件;
对两份信息相同的固件进行版本号标记,以得到备份固件以及需加载固件。
在一实施例中,处理器502在实现所述读取非易失性存储芯片内的需加载固件的版本信息步骤时,具体实现如下步骤:
对非易失性存储芯片进行上电,启动嵌入在微控制器内部且用于芯片正常工作的代码;
利用所述代码读取并运行用于加载固态硬盘全系统固件的加载工程;
利用加载工程读取非易失性存储芯片内的需加载固件的版本信息。
在一实施例中,处理器502在实现所述更新所述需加载固件的版本信息步骤时,具体实现如下步骤:
获取启动不成功的需加载固件信息;
判断是否有可加载的备份固件;
若是,则通过非易失性存储芯片中的备份固件的版本号更新需加载固件的版本号,以得到新固件;
若否,则发送所有固件均不可使用的信息,并重新下载固件,以得到新固件。
在一实施例中,处理器502在实现所述若启动成功,判断是否需要进行所有固件的信息更新步骤之后,还实现如下步骤:
若需要进行所有固件的信息更新,则利用新固件的信息更新非易失性存储芯片中的所有固件的信息。
在一实施例中,处理器502在实现所述判断是否需要进行所有固件的信息更新步骤时,具体实现如下步骤:
判断需加载固件信息与备份固件信息是否一致;
若是,则不需要进行所有固件的信息更新;
若否,则需要进行所有固件的信息更新。
在一实施例中,处理器502在实现所述对需加载固件进行升级,以得到新固件步骤时,具体实现如下步骤:
在固态硬盘工作时,利用加载工程将需加载固件从非易失性存储芯片拷贝至主控代码段;
运行主控代码;
将需加载固件写入非易失性存储芯片当前使用的固件位置;
将寄存器指针跳转至嵌入在微控制器内部且用于芯片正常工作的代码的零地址;
运行嵌入在微控制器内部且用于芯片正常工作的代码。
应当理解,在本申请实施例中,处理器502可以是中央处理单元(CentralProcessing Unit,CPU),该处理器502还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成。该计算机程序包括程序指令,计算机程序可存储于一存储介质中,该存储介质为计算机可读存储介质。该程序指令被该计算机系统中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。
因此,本发明还提供一种存储介质。该存储介质可以为计算机可读存储介质。该存储介质存储有计算机程序,其中该计算机程序被处理器执行时使处理器执行如下步骤:
在非易失性存储芯片内存放两份相同的固件,以得到备份固件以及需加载固件;
读取非易失性存储芯片内的需加载固件的版本信息;
根据版本信息加载并运行对应的需加载固件;
判断所述需加载固件是否启动成功;
若启动不成功,则更新所述需加载固件的版本信息,并返回所述根据版本信息加载并运行对应的需加载固件;
若启动成功,判断是否需要进行所有固件的信息更新;
若不需要进行所有固件的信息更新,则判断是否需要进行需加载固件的升级;
若是,则对需加载固件进行升级,以得到新固件,并根据新固件更新非易失性存储芯片内的需加载固件的信息。
在一实施例中,所述处理器在执行所述计算机程序而实现所述在非易失性存储芯片内存放两份相同的固件,以得到备份固件以及需加载固件步骤时,具体实现如下步骤:
在非易失性存储芯片内存放两份信息相同的固件;
对两份信息相同的固件进行版本号标记,以得到备份固件以及需加载固件。
在一实施例中,所述处理器在执行所述计算机程序而实现所述读取非易失性存储芯片内的需加载固件的版本信息步骤时,具体实现如下步骤:
对非易失性存储芯片进行上电,启动嵌入在微控制器内部且用于芯片正常工作的代码;
利用所述代码读取并运行用于加载固态硬盘全系统固件的加载工程;
利用加载工程读取非易失性存储芯片内的需加载固件的版本信息。
在一实施例中,所述处理器在执行所述计算机程序而实现所述更新所述需加载固件的版本信息步骤时,具体实现如下步骤:
获取启动不成功的需加载固件信息;
判断是否有可加载的备份固件;
若是,则通过非易失性存储芯片中的备份固件的版本号更新需加载固件的版本号,以得到新固件;
若否,则发送所有固件均不可使用的信息,并重新下载固件,以得到新固件。
在一实施例中,所述处理器在执行所述计算机程序而实现所述若启动成功,判断是否需要进行所有固件的信息更新步骤之后,还实现如下步骤:
若需要进行所有固件的信息更新,则利用新固件的信息更新非易失性存储芯片中的所有固件的信息。
在一实施例中,所述处理器在执行所述计算机程序而实现所述判断是否需要进行所有固件的信息更新步骤时,具体实现如下步骤:
判断需加载固件信息与备份固件信息是否一致;
若是,则不需要进行所有固件的信息更新;
若否,则需要进行所有固件的信息更新。
在一实施例中,所述处理器在执行所述计算机程序而实现所述对需加载固件进行升级,以得到新固件步骤时,具体实现如下步骤:
在固态硬盘工作时,利用加载工程将需加载固件从非易失性存储芯片拷贝至主控代码段;
运行主控代码;
将需加载固件写入非易失性存储芯片当前使用的固件位置;
将寄存器指针跳转至嵌入在微控制器内部且用于芯片正常工作的代码的零地址;
运行嵌入在微控制器内部且用于芯片正常工作的代码。
所述存储介质可以是U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的计算机可读存储介质。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。例如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本发明实施例装置中的单元可以根据实际需要进行合并、划分和删减。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.固件稳定升级的方法,其特征在于,包括:
在非易失性存储芯片内存放两份相同的固件,以得到备份固件以及需加载固件;
读取非易失性存储芯片内的需加载固件的版本信息;
根据版本信息加载并运行对应的需加载固件;
判断所述需加载固件是否启动成功;
若启动不成功,则更新所述需加载固件的版本信息,并返回所述根据版本信息加载并运行对应的需加载固件;
若启动成功,判断是否需要进行所有固件的信息更新;
若不需要进行所有固件的信息更新,则判断是否需要进行需加载固件的升级;
若是,则对需加载固件进行升级,以得到新固件,并根据新固件更新非易失性存储芯片内的需加载固件的信息。
2.根据权利要求1所述的固件稳定升级的方法,其特征在于,所述在非易失性存储芯片内存放两份相同的固件,以得到备份固件以及需加载固件,包括:
在非易失性存储芯片内存放两份信息相同的固件;
对两份信息相同的固件进行版本号标记,以得到备份固件以及需加载固件。
3.根据权利要求2所述的固件稳定升级的方法,其特征在于,所述读取非易失性存储芯片内的需加载固件的版本信息,包括:
对非易失性存储芯片进行上电,启动嵌入在微控制器内部且用于芯片正常工作的代码;
利用所述代码读取并运行用于加载固态硬盘全系统固件的加载工程;
利用加载工程读取非易失性存储芯片内的需加载固件的版本信息。
4.根据权利要求1所述的固件稳定升级的方法,其特征在于,所述更新所述需加载固件的版本信息,包括:
获取启动不成功的需加载固件信息;
判断是否有可加载的备份固件;
若是,则通过非易失性存储芯片中的备份固件的版本号更新需加载固件的版本号,以得到新固件;
若否,则发送所有固件均不可使用的信息,并重新下载固件,以得到新固件。
5.根据权利要求1至4任一项所述的固件稳定升级的方法,其特征在于,所述若启动成功,判断是否需要进行所有固件的信息更新之后,还包括:
若需要进行所有固件的信息更新,则利用新固件的信息更新非易失性存储芯片中的所有固件的信息。
6.根据权利要求5所述的固件稳定升级的方法,其特征在于,所述判断是否需要进行所有固件的信息更新,包括:
判断需加载固件信息与备份固件信息是否一致;
若是,则不需要进行所有固件的信息更新;
若否,则需要进行所有固件的信息更新。
7.根据权利要求6所述的固件稳定升级的方法,其特征在于,所述对需加载固件进行升级,以得到新固件,包括:
在固态硬盘工作时,利用加载工程将需加载固件从非易失性存储芯片拷贝至主控代码段;
运行主控代码;
将需加载固件写入非易失性存储芯片当前使用的固件位置;
将寄存器指针跳转至嵌入在微控制器内部且用于芯片正常工作的代码的零地址;
运行嵌入在微控制器内部且用于芯片正常工作的代码。
8.固件稳定升级的装置,其特征在于,包括:
固件存放单元,用于在非易失性存储芯片内存放两份相同的固件,以得到备份固件以及需加载固件;
版本信息读取单元,用于读取非易失性存储芯片内的需加载固件的版本信息;
固件运行单元,用于根据版本信息加载并运行对应的需加载固件;
启动判断单元,用于判断所述需加载固件是否启动成功;
更新单元,用于若启动不成功,则更新所述需加载固件的版本信息;
信息更新判断单元,用于若启动成功,判断是否需要进行所有固件的信息更新;
升级判断单元,用于若不需要进行所有固件的信息更新,则判断是否需要进行需加载固件的升级;
升级单元,用于若是,则对需加载固件进行升级,以得到新固件,并根据新固件更新非易失性存储芯片内的需加载固件的信息。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述的方法。
10.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时可实现如权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910044889.6A CN109814908A (zh) | 2019-01-17 | 2019-01-17 | 固件稳定升级的方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910044889.6A CN109814908A (zh) | 2019-01-17 | 2019-01-17 | 固件稳定升级的方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109814908A true CN109814908A (zh) | 2019-05-28 |
Family
ID=66604484
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910044889.6A Pending CN109814908A (zh) | 2019-01-17 | 2019-01-17 | 固件稳定升级的方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109814908A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110347414A (zh) * | 2019-07-15 | 2019-10-18 | 西安易朴通讯技术有限公司 | 固件更新方法、装置、设备及计算机可读存储介质 |
CN111352643A (zh) * | 2020-02-29 | 2020-06-30 | 重庆宇涵电子科技有限公司 | 称重监测防控仪升级插件系统 |
CN111857753A (zh) * | 2020-07-22 | 2020-10-30 | 浪潮电子信息产业股份有限公司 | 一种bmc启动方法及相关装置 |
CN112214353A (zh) * | 2020-10-16 | 2021-01-12 | 深圳市广和通无线股份有限公司 | 固件恢复方法、装置、计算机设备和存储介质 |
CN117312055A (zh) * | 2023-11-16 | 2023-12-29 | 荣耀终端有限公司 | 数据备份的方法及相关装置 |
WO2024109388A1 (zh) * | 2022-11-22 | 2024-05-30 | 腾讯科技(深圳)有限公司 | 特征同步方法、装置、计算机设备、存储介质和程序产品 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5878256A (en) * | 1991-10-16 | 1999-03-02 | International Business Machine Corp. | Method and apparatus for providing updated firmware in a data processing system |
US6009500A (en) * | 1995-06-07 | 1999-12-28 | Compaq Computer Corporation | Replacement of erroneous firmware in a redundant non-volatile memory system |
US6357021B1 (en) * | 1999-04-14 | 2002-03-12 | Mitsumi Electric Co., Ltd. | Method and apparatus for updating firmware |
CN1567199A (zh) * | 2003-06-16 | 2005-01-19 | 纬创资通股份有限公司 | 交叉式固件升级方法 |
CN1684427A (zh) * | 2004-04-14 | 2005-10-19 | 华为技术有限公司 | 一种软件升级及回退方法 |
CN1719413A (zh) * | 2004-07-07 | 2006-01-11 | 华为技术有限公司 | 通信设备的升级方法 |
CN102073517A (zh) * | 2009-11-23 | 2011-05-25 | 中兴通讯股份有限公司 | 一种嵌入式系统的升级、备份方法和装置 |
CN103902299A (zh) * | 2012-12-24 | 2014-07-02 | 航天信息股份有限公司 | 一种软件版本的更新方法和系统 |
WO2014161339A1 (zh) * | 2013-08-12 | 2014-10-09 | 中兴通讯股份有限公司 | 固件升级方法及装置 |
US20140304697A1 (en) * | 2011-12-01 | 2014-10-09 | Tencent Technology (Shenzhen) Company Limited | Method and system for upgrading software |
CN104978209A (zh) * | 2014-04-14 | 2015-10-14 | 腾讯科技(深圳)有限公司 | 应用的更新方法及装置 |
CN106325901A (zh) * | 2015-06-24 | 2017-01-11 | 南宁富桂精密工业有限公司 | 软件版本管理方法及系统 |
CN107315616A (zh) * | 2017-06-30 | 2017-11-03 | 郑州云海信息技术有限公司 | 一种固件的加载方法、装置及电子设备 |
-
2019
- 2019-01-17 CN CN201910044889.6A patent/CN109814908A/zh active Pending
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5878256A (en) * | 1991-10-16 | 1999-03-02 | International Business Machine Corp. | Method and apparatus for providing updated firmware in a data processing system |
US6009500A (en) * | 1995-06-07 | 1999-12-28 | Compaq Computer Corporation | Replacement of erroneous firmware in a redundant non-volatile memory system |
US6357021B1 (en) * | 1999-04-14 | 2002-03-12 | Mitsumi Electric Co., Ltd. | Method and apparatus for updating firmware |
CN1567199A (zh) * | 2003-06-16 | 2005-01-19 | 纬创资通股份有限公司 | 交叉式固件升级方法 |
CN1684427A (zh) * | 2004-04-14 | 2005-10-19 | 华为技术有限公司 | 一种软件升级及回退方法 |
CN1719413A (zh) * | 2004-07-07 | 2006-01-11 | 华为技术有限公司 | 通信设备的升级方法 |
CN102073517A (zh) * | 2009-11-23 | 2011-05-25 | 中兴通讯股份有限公司 | 一种嵌入式系统的升级、备份方法和装置 |
US20140304697A1 (en) * | 2011-12-01 | 2014-10-09 | Tencent Technology (Shenzhen) Company Limited | Method and system for upgrading software |
CN103902299A (zh) * | 2012-12-24 | 2014-07-02 | 航天信息股份有限公司 | 一种软件版本的更新方法和系统 |
WO2014161339A1 (zh) * | 2013-08-12 | 2014-10-09 | 中兴通讯股份有限公司 | 固件升级方法及装置 |
CN104978209A (zh) * | 2014-04-14 | 2015-10-14 | 腾讯科技(深圳)有限公司 | 应用的更新方法及装置 |
CN106325901A (zh) * | 2015-06-24 | 2017-01-11 | 南宁富桂精密工业有限公司 | 软件版本管理方法及系统 |
CN107315616A (zh) * | 2017-06-30 | 2017-11-03 | 郑州云海信息技术有限公司 | 一种固件的加载方法、装置及电子设备 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110347414A (zh) * | 2019-07-15 | 2019-10-18 | 西安易朴通讯技术有限公司 | 固件更新方法、装置、设备及计算机可读存储介质 |
CN111352643A (zh) * | 2020-02-29 | 2020-06-30 | 重庆宇涵电子科技有限公司 | 称重监测防控仪升级插件系统 |
CN111857753A (zh) * | 2020-07-22 | 2020-10-30 | 浪潮电子信息产业股份有限公司 | 一种bmc启动方法及相关装置 |
CN112214353A (zh) * | 2020-10-16 | 2021-01-12 | 深圳市广和通无线股份有限公司 | 固件恢复方法、装置、计算机设备和存储介质 |
WO2024109388A1 (zh) * | 2022-11-22 | 2024-05-30 | 腾讯科技(深圳)有限公司 | 特征同步方法、装置、计算机设备、存储介质和程序产品 |
CN117312055A (zh) * | 2023-11-16 | 2023-12-29 | 荣耀终端有限公司 | 数据备份的方法及相关装置 |
CN117312055B (zh) * | 2023-11-16 | 2024-04-19 | 荣耀终端有限公司 | 数据备份的方法及相关装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109814908A (zh) | 固件稳定升级的方法、装置、计算机设备及存储介质 | |
CN110231952B (zh) | 一种ecu程序备份及循环升级控制方法及装置 | |
CN102385535B (zh) | 处理从非易失性存储器进行设备引导期间的错误 | |
KR101143112B1 (ko) | 페일세이프 방식으로 맞춤 소프트웨어 영상 갱신을불휘발성 저장 장치에 적용하는 시스템 및 방법 | |
CN103970557B (zh) | 存储设备启动系统的方法及存储设备 | |
CN109863474B (zh) | 更新迁移系统和方法 | |
US20190087348A1 (en) | Data backup method, data recovery method and storage controller | |
CN103930878A (zh) | 用于存储器验证的方法、装置及系统 | |
CN106155915B (zh) | 数据存储的处理方法及装置 | |
CN101287187A (zh) | 智能手机及其操作系统运行方法 | |
CN103942061A (zh) | 电池固件更新方法、便携式电子装置及充电电池模块 | |
US8775758B2 (en) | Memory device and method for performing a write-abort-safe firmware update | |
CN102165418A (zh) | 涡轮引导系统和方法 | |
CN110633091A (zh) | 一种电子模块及其软件无线升级方法 | |
CN106708416B (zh) | 数据重建方法与系统及其存储器控制电路单元 | |
CN103365696A (zh) | Bios镜像文件获取方法及装置 | |
CN109150642B (zh) | 应用内存错误检测方法、检测装置及存储介质 | |
CN102360304A (zh) | 嵌入式微处理器系统及其固件更新方法 | |
CN110109716A (zh) | 保证ssd固件稳定加载的方法、装置、计算机设备及存储介质 | |
WO2013013396A1 (zh) | 基本输入/输出系统bios配置数据管理方法及系统 | |
US11449329B2 (en) | Vehicle control device and program update system | |
TW202131170A (zh) | 韌體損壞恢復技術 | |
US20040181777A1 (en) | Method and device for programming electronic devices using a uniform parameter format | |
CN111857882A (zh) | 可扩展的ssd开卡固件加载方法、装置、计算机设备及存储介质 | |
CN110737455A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190528 |
|
RJ01 | Rejection of invention patent application after publication |