CN112199238B - 存储器固件更新方法、装置、存储介质及电子设备 - Google Patents
存储器固件更新方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN112199238B CN112199238B CN202011107790.5A CN202011107790A CN112199238B CN 112199238 B CN112199238 B CN 112199238B CN 202011107790 A CN202011107790 A CN 202011107790A CN 112199238 B CN112199238 B CN 112199238B
- Authority
- CN
- China
- Prior art keywords
- firmware
- block
- system firmware
- new
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 238000004590 computer program Methods 0.000 claims description 15
- 230000008569 process Effects 0.000 claims description 9
- 230000000875 corresponding effect Effects 0.000 description 12
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000013519 translation Methods 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/1433—Saving, restoring, recovering or retrying at system level during software upgrading
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种存储器固件更新方法、装置、存储介质及电子设备,该存储器固件更新方法包括:获取新固件,将新固件写入到存储器的系统备用块;将存储在系统备用块中的新固件依次拷贝到系统固件块中,并在写入新固件的系统固件块的空闲区域修改系统固件块编号;直至所有系统固件块中的旧固件均更新为新固件。本发明通过将新固件写入到存储器的系统备用块,然后依次拷贝到系统固件块中,并对应修改系统固件块编号,以使得无论在FFU更新的哪一个时刻掉电,都能保证系统固件块至少存在一个完整的固件以支持存储器的正常运行,避免在FFU更新时出现的固件丢失问题。
Description
技术领域
本发明涉及存储器数据更新技术领域,特别涉及一种存储器固件更新方法、装置、存储介质及电子设备。
背景技术
当eMMC(Embedded Multi Media Card,嵌入式多媒体控制器)存在安全隐患时,需要通过FFU(在线更新固件)更新eMMC fw(Firmware,固件)来解决问题。但是在FFU过程中,如果突然掉电的话,可能会出现新固件还没来得及写下去,而旧固件已经被擦除的情况,而这种情况会直接导致固件丢失,从而使得eMMC完全失效,导致对应的电子产品也彻底报废。
发明内容
本发明所要解决的技术问题是:提供一种存储器固件更新方法、装置、存储介质及电子设备,以避免在FFU更新时出现的固件丢失问题。
为了解决上述技术问题,本发明采用的技术方案为:
一种存储器固件更新方法,包括步骤:
获取新固件,将所述新固件写入到存储器的系统备用块;
将存储在所述系统备用块中的所述新固件依次拷贝到系统固件块中,并在写入所述新固件的所述系统固件块的空闲区域修改系统固件块编号;
直至所有所述系统固件块中的旧固件均更新为所述新固件。
为了解决上述技术问题,本发明采用的另一种技术方案为:
一种存储器固件更新装置,包括:
写入模块,用于获取新固件,将所述新固件写入到存储器的系统备用块;
更新模块,用于将存储在所述系统备用块中的所述新固件依次拷贝到系统固件块中,并在写入所述新固件的所述系统固件块的空闲区域修改系统固件块编号;
完成模块,用于直至所有所述系统固件块中的旧固件均更新为所述新固件。
为了解决上述技术问题,本发明采用的另一种技术方案为:
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序存储有上述所示的存储器固件更新方法。
为了解决上述技术问题,本发明采用的另一种技术方案为:
一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述所示的存储器固件更新方法。
本发明的有益效果在于:一种存储器固件更新方法、装置、存储介质及电子设备,先将新固件写入到存储器的系统备用块,然后再将存储在系统备用块中的新固件依次拷贝到系统固件块中,并在写入新固件的系统固件块的空闲区域修改系统固件块编号,以在更新部分系统固件块时出现掉电也能根据系统固件块编号同步更新其他系统固件块,直至每一个系统固件块都完成固件更新,从而使得无论在FFU更新的哪一个时刻掉电,都能保证系统固件块至少存在一个完整的固件以支持存储器的正常运行,避免在FFU更新时出现的固件丢失问题。
附图说明
图1为本发明实施例的存储器固件更新方法的主要流程示意图;
图2为本发明实施例的存储器固件更新装置的流程示意图;
图3为本发明实施例的电子设备的结构示意图。
标号说明:
1、存储器固件更新装置;2、电子设备;11、写入模块;12、更新模块;13、完成模块;21、处理器;22、存储器。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
请参照图1,本发明实施例提供了一种存储器固件更新方法,包括步骤:
获取新固件,将所述新固件写入到存储器的系统备用块;
将存储在所述系统备用块中的所述新固件依次拷贝到系统固件块中,并在写入所述新固件的所述系统固件块的空闲区域修改系统固件块编号;
直至所有所述系统固件块中的旧固件均更新为所述新固件。
从上述描述可知,本发明的有益效果为:先将新固件写入到存储器的系统备用块,然后再将存储在系统备用块中的新固件依次拷贝到系统固件块中,并在写入新固件的系统固件块的空闲区域修改系统固件块编号,以在更新部分系统固件块时出现掉电也能根据系统固件块编号同步更新其他系统固件块,直至每一个系统固件块都完成固件更新,从而使得无论在FFU更新的哪一个时刻掉电,都能保证系统固件块至少存在一个完整的固件以支持存储器的正常运行,避免在FFU更新时出现的固件丢失问题。
进一步地,所述将存储在所述系统备用块中的所述新固件依次拷贝到系统固件块中,并在写入所述新固件的所述系统固件块的空闲区域修改系统固件块编号具体包括以下步骤:
先擦除旧系统固件块编号最大的第一系统固件块中的旧固件;
将存储在所述系统备用块中的所述新固件优先拷贝到所述第一系统固件块的数据区域中,并在所述第一系统固件块的空闲区域写入新系统固件块编号,所述第一系统固件块的新系统固件块编号等于所述第一系统固件块的旧系统固件块编号加三;
依次更新第二系统固件块和第三系统固件块并依次修改所述第二系统固件块和所述第三系统固件块中的系统固件块编号。
从上述描述可知,基于数据块先擦后写的特性以及优先选择系统固件块编号最大的系统固件块进行读写的特性,由于存储器中有三个数据块是用来分别存储有一份完整的固件,即为第一系统固件块、第二系统固件块和第三系统固件块。由此,在第一代固件的时候,第一系统固件块、第二系统固件块和第三系统固件块的系统固件块编号分别为3、2和1,在第一系统固件块更新为新固件之后,则第一系统固件块的系统固件块编号变成6,这样,基于系统固件块的系统固件块编号就能判断是否已经更新了,以保证每一个系统固件块内都更新为新固件。
进一步地,所述存储器固件更新方法还包括以下步骤:
若在擦除所述第一系统固件块中的所述旧固件时或是将所述新固件拷贝到所述第一系统固件块的数据区域时出现掉电,则在所述存储器重新上电时,下载所述第二系统固件块中的所述旧固件来进行所述存储器的正常工作;
根据所述第一系统固件块的所述空闲区域的系统固件块编号来判断所述第一系统固件块是否写完所述新固件,若未写完,则擦除所述第一系统固件块的数据区域之后将存储在所述系统备用块中的所述新固件重新拷贝到所述第一系统固件块的数据区域中,直至在所述第一系统固件块的数据区域中存储有完整的所述新固件。
从上述描述可知,即在第一系统固件块未写完新固件时,则第一系统固件块的数据区域上的数据不是一个完整的固件,此时会下载第二系统固件块中的旧固件来保证存储器的正常工作;之后再重新按照先擦后写的特性来将系统备用块中的新固件拷贝到第一系统固件块的数据区域中,使得在不影响存储器的正常工作下完成FFU更新。
进一步地,所述依次更新第二系统固件块和第三系统固件块并依次修改第二系统固件块和第三系统固件块中的系统固件块编号具体包括以下步骤:
若在第二系统固件块和第三系统固件块的更新过程中均未发生掉电,则将存储在所述系统备用块中的所述新固件依次拷贝到第二系统固件块和第三系统固件块的数据区域中,并依次修改第二系统固件块和第三系统固件块的空闲区域中的系统固件块编号;
若在所述第一系统固件块中写完所述新固件且在所述第一系统固件块的空闲区域写入新系统固件块编号之后出现掉电,则在所述存储器重新上电时,判断所述第一系统固件块、所述第二系统固件块和所述第三系统固件块三者之间在系统固件块编号上是否有依次排序,若不是,则将所述第一系统固件块中的新固件依次拷贝到第二系统固件块和第三系统固件块的数据区域中,并依次修改第二系统固件块和第三系统固件块的空闲区域中的系统固件块编号。
从上述描述可知,若整个过程都没有发生掉电,则将存储在系统备用块中的新固件依次拷贝到第一系统固件块、第二系统固件块和第三系统固件块,若在第一系统固件块中已存储有完整的新固件时,则将第一系统固件块中的新固件拷贝到第二系统固件块和第三系统固件块中。其中,在在第一系统固件块中已存储有完整的新固件时出现停电,假设新固件为第二代,则此时第一系统固件块的系统固件块编号变成6,这样第一系统固件块、第二系统固件块和第三系统固件块的系统固件块编号依次为6、2和1,即第二系统固件块和第三系统固件块的系统固件块编号不与第一系统固件块依次排序,因此需要对第二系统固件块和第三系统固件块里的数据进行进一步同步更新,以保证三个系统固件块都存储有完整的新固件。
进一步地,所述将所述新固件写入到存储器的系统备用块中具体包括以下步骤:
按照所述存储器中所有系统备用块所对应的堆栈的逻辑顺序选择处于首端的系统备用块来写入所述新固件;
若在系统备用块写入所述新固件的过程中出现掉电现象,则在所述存储器重新上电时,将掉电前正在写入所述新固件的系统备用块重新排列到所述堆栈的尾端,而掉电前处于堆栈第二位置的系统备用块变成处于首端的系统备用块,将所述新固件写入到此时处于首端的系统备用块中,直至在所述系统备用块中存储有所述新固件。
从上述描述可知,系统备用块采用堆栈的结构模型,堆栈的逻辑顺序为先进后出,这样会形成一个排序,先写的这个系统备用块下一次变成了排序的尾端,而处于堆栈第二位置的系统备用块变成处于首端的系统备用块。而在数据的写入时,都是对处于首端的系统备用块进行先擦后写,从而保证新固件始终能写入到系统备用块中进行存储。
进一步地,所述将存储在所述系统备用块中的所述新固件依次拷贝到系统固件块中之前还包括以下步骤:
将空闲区域存储有系统固件块标记值的系统块认定为系统固件块,并根据认定为所述系统固件块的所述空闲区域内的系统固件块编号来确认多个所述系统固件块的读写优先顺序。
从上述描述可知,系统根据空闲区域是否存储系统固件块标记值来辨别是否为系统固件块,然后根据系统固件块编号来确认多个系统固件块的读写优先顺序,以保证固件的正常读写。
进一步地,所述直至所有所述系统固件块中的旧固件均更新为新固件具体包括以下步骤:
直至所有所述第一系统固件块、所述第二系统固件块和所述第三系统固件块中的旧固件均更新为新固件。
从上述描述可知,直到存储器的三个系统固件块都更新为新固件,则此次的FFU更新才算完成。
请参照图2,本发明另一实施例提供了一种存储器固件更新装置1,包括:
写入模块11,用于获取新固件,将所述新固件写入到存储器的系统备用块;
更新模块12,用于将存储在所述系统备用块中的所述新固件依次拷贝到系统固件块中,并在写入所述新固件的所述系统固件块的空闲区域修改系统固件块编号;
完成模块13,用于直至所有所述系统固件块中的旧固件均更新为所述新固件。
其中,关于写入模块11、更新模块12和完成模块13所实现的具体过程和对应的效果,可以参照上述实施例的存储器固件更新方法中的相关描述。
本发明另一实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序存储有上述实施例的存储器固件更新方法。
其中,关于本实施例中的计算机程序中包含的存储器固件更新方法的具体实现过程和对应效果,可以参照上述实施例的存储器固件更新方法中的相关描述。
请参照图3,本发明另一实施例提供了一种电子设备2,包括存储器22、处理器21及存储在存储器22上并可在处理器21上运行的计算机程序,所述处理器21执行所述计算机程序时实现上述实施例的存储器固件更新方法。
其中,关于本实施例中处理器21所实现的存储器固件更新方法的具体实现过程和对应效果,可以参照上述的实施例的存储器固件更新方法中的相关描述。
本申请的存储器固件更新方法和对应的装置、存储介质及电子设备2主要应用于对任何存储器需要FFU更新时的应用场景,以下结合具体的应用场景进行说明:
根据以上,并结合图1,本发明的实施例一为:
其中,在本实施例中,存储器为eMMC,eMMC中前15个块作为系统数据块使用,按照其存储的信息可以分为info block、wpro block、indeo block和存储其他信息的tempblock。其中,temp block用来存储固件,即为本实施例中的系统固件块,系统固件块一共有三块,在本实施例中以第一系统固件块、第二系统固件块和第三系统固件块来进行区分。wpro block用来存储存储器信息,一共有两块,即为存储器信息块。indeo block用来存储FTL(Flash Translation Layer,闪存转换层)信息,也是两块,即为系统参数块。tempblock一共有八块,即为本实施例中的系统备用块,系统备用块采用堆栈的结构模型,堆栈的逻辑顺序为先进后出,这样会形成一个排序,先写的这个系统备用块下一次变成了排序的尾端,而处于堆栈第二位置的系统备用块变成处于首端的系统备用块。由此,本实施例提供的一种存储器固件更新方法,其包括步骤:
S1、获取新固件,将新固件写入到存储器的系统备用块。
在本实施例中,步骤S1具体包括以下步骤:
按照存储器中所有系统备用块所对应的堆栈的逻辑顺序选择处于首端的系统备用块来写入新固件;
若在系统备用块写入新固件的过程中出现掉电现象,则在存储器重新上电时,将掉电前正在写入新固件的系统备用块重新排列到堆栈的尾端,而掉电前处于堆栈第二位置的系统备用块变成处于首端的系统备用块,将新固件写入到此时处于首端的系统备用块中,直至在系统备用块中存储有新固件。
其中,堆栈的逻辑顺序就是先进后出,这样,写入新固件的系统备用块就是处于首端的系统备用块,而在处于首端的系统备用块写入新固件时,无论是否写完,在掉电之后的重新上电,都会重新排列到堆栈的尾端,这样,就算没写完掉电,在上电后再写入新固件到另一个系统备用块中,保证八块系统备用块中有一块存储有完整的新固件即可。
而此时,在步骤S1的进行中掉电,则当存储器上电时,照常可以在第一系统固件块中加载原来的旧固件,存储器可以正常工作,下次继续做FFU升级就可以。
S2、将空闲区域存储有系统固件块标记值的系统块认定为系统固件块,并根据认定为系统固件块的空闲区域内的系统固件块编号来确认多个系统固件块的读写优先顺序。
其中,每一个系统固件块都包括有数据区域和空闲区域,而存储器在量产开卡时,会将固件写入到存储器的三个系统固件块的数据区域,并在三个系统固件块的空闲区域标记有系统固件块标记值和系统固件块编号等等信息。其中,系统固件块标记值标记这个数据块是存储固件的数据块,用来区分其他类型的数据块。而系统固件块编号用来标记这个系统固件块的编号,用来做系统固件块之间的区分,比如之前的第一系统固件块、第二系统固件块和第三系统固件块的系统固件块编号可能分别为3、2和1这样。
由此,在存储器上电时,根据空闲区域里面是否有系统固件块标记值就知道是不是系统固件块,从而确定是否进行固件的读写;然后根据系统固件块编号就知道哪个系统固件块的优先级高,从而确定先从哪个系统固件块开始进行读写。对应到本实施例的第一系统固件块、第二系统固件块和第三系统固件块,则读写优先顺序为第一系统固件块、第二系统固件块和第三系统固件块。
而储存有三份固件的存储器,只要有一份完整的固件,就可以保证存储器的正常工作,而在实际应用中会有因为eMMC的固件存在隐患,需要更新固件的情况,即对应本实施例中,其中,更新firmware的原理是根据存储器FFU协议及私有命令。
S3、将存储在系统备用块中的新固件依次拷贝到系统固件块中,并在写入新固件的系统固件块的空闲区域修改系统固件块编号。
在本实施例中,步骤S3具体包括以下步骤:
S31、先擦除旧系统固件块编号最大的第一系统固件块中的旧固件;
S32、将存储在系统备用块中的新固件优先拷贝到第一系统固件块的数据区域中,并在第一系统固件块的空闲区域写入新系统固件块编号,第一系统固件块的新系统固件块编号等于第一系统固件块的旧系统固件块编号加三;
其中,若在擦除第一系统固件块中的旧固件时或是将新固件拷贝到第一系统固件块的数据区域时出现掉电,则在存储器重新上电时,下载第二系统固件块中的旧固件来进行存储器的正常工作;
然后,根据第一系统固件块的空闲区域的系统固件块编号来判断第一系统固件块是否写完新固件,若未写完,则擦除第一系统固件块的数据区域之后将存储在系统备用块中的新固件重新拷贝到第一系统固件块的数据区域中,直至在第一系统固件块的数据区域中存储有完整的新固件。
比如第一代固件对应的第一系统固件块的空闲区域的系统固件块编号为3,则根据系统固件块编号就知道有没有更新完成,若没有,则重新更新。
S33、依次更新第二系统固件块和第三系统固件块并依次修改第二系统固件块和第三系统固件块中的系统固件块编号。
其中,按照步骤S31和步骤32可以依次更新第二系统固件块和第三系统固件块,并依次修改系统固件块编号。
S4、直至所有系统固件块中的旧固件均更新为新固件。
即直至所有第一系统固件块、第二系统固件块和第三系统固件块中的旧固件均更新为新固件,才完成此次FFU更新,这样存储器至少存储有三份完整的新固件供其加载运行,具体地,在本步骤中,在判断所有的系统固件块中旧固件均更新为新固件时,确定完成存储器固件更新方法的全部步骤,若旧固件未全部更新为新固件,则继续执行上述步骤S1。
根据以上,并结合图1,本发明的实施例二为:
一种存储器固件更新方法,在上述实施例一的基础上,步骤S33具体包括以下步骤:
S331、若在第二系统固件块和第三系统固件块的更新过程中均未发生掉电,则将存储在系统备用块中的新固件依次拷贝到第二系统固件块和第三系统固件块的数据区域中,并依次修改第二系统固件块和第三系统固件块的空闲区域中的系统固件块编号。
即第二系统固件块和第三系统固件块的更新过程中均未发生掉电,则通过系统备用块的拷贝即可实现三个系统固件块的固件更新。比如第一代固件对应的第一系统固件块、第二系统固件块和第三系统固件块的系统固件块编号依次为3、2和1,则在修改后都在基础上加三即为6、5和4。
S332、若在第一系统固件块中写完新固件且在第一系统固件块的空闲区域写入新系统固件块编号之后出现掉电,则在存储器重新上电时,判断第一系统固件块、第二系统固件块和第三系统固件块三者之间在系统固件块编号上是否有依次排序,若不是,则将第一系统固件块中的新固件依次拷贝到第二系统固件块和第三系统固件块的数据区域中,并依次修改第二系统固件块和第三系统固件块的空闲区域中的系统固件块编号。
其中,若在第一系统固件块中写完新固件且在第一系统固件块的空闲区域写入新系统固件块编号之后出现掉电,则第一系统固件块、第二系统固件块和第三系统固件块的系统固件块编号依次为6、2和1,很明显,第二系统固件块和第三系统固件块比第一系统固件块在固件上落后一代,则需要将第一系统固件块的新固件拷贝到第二系统固件块和第三系统固件块,并将第二系统固件块和第三系统固件块的系统固件块编号修改为5和4,至此完成系统固件块的固件更新。
其中,实施例一和实施例二中的第一系统固件块、第二系统固件块和第三系统固件块的3、2、1这三个系统固件块编号主要用于区分排序。对应到后面第二代固件更新后,则三个系统固件块编号为6、5和4,之后的9、8和7等等都是可以明显区分出三个系统固件块,因此,对于修改系统块编号不会影响对三个系统固件块的区分。
请参照图2,本发明的实施例三为与上述实施例一或二中的存储器固件更新方法相对应的一种存储器固件更新装置1,包括:
写入模块11,用于获取新固件,将所述新固件写入到存储器的系统备用块;
更新模块12,用于将存储在所述系统备用块中的所述新固件依次拷贝到系统固件块中,并在写入所述新固件的所述系统固件块的空闲区域修改系统固件块编号;
完成模块13,用于直至所有所述系统固件块中的旧固件均更新为所述新固件。
本发明的实施例四为与上述实施例一或二中的存储器固件更新方法对应的一种计算机可读存储介质,其上存储有计算机程序,计算机程序存储有如上实施例一或二中的存储器固件更新方法。
请参照图3,本发明的实施例五为与上述实施例一或二中的存储器固件更新方法相对应的一种电子设备2,包括存储器22、处理器21及存储在存储器22上并可在处理器21上运行的计算机程序,其中,处理器21执行计算机程序时实现上述实施例一或二中的存储器固件更新方法。
在本申请所提供的五个实施例中,应该理解到,所揭露的方法、装置、存储介质以及电子设备2,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
综上所述,本发明提供的一种存储器固件更新方法、装置、存储介质及电子设备,先将新固件写入到存储器的系统备用块,然后再将存储在系统备用块中的新固件依次拷贝到系统固件块中,并在写入新固件的系统固件块的空闲区域修改系统固件块编号,以在更新部分系统固件块时出现掉电也能根据系统固件块编号同步更新其他系统固件块,直至每一个系统固件块都完成固件更新,从而使得无论在FFU更新的哪一个时刻掉电,都能保证系统固件块至少存在一个完整的固件以支持存储器的正常运行,避免在FFU更新时出现的固件丢失问题。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (9)
1.一种存储器固件更新方法,其特征在于,包括步骤:
获取新固件,将所述新固件写入到存储器的系统备用块;
将存储在所述系统备用块中的所述新固件依次拷贝到系统固件块中,并在写入所述新固件的所述系统固件块的空闲区域修改系统固件块编号;
直至所有所述系统固件块中的旧固件均更新为所述新固件;
所述将存储在所述系统备用块中的所述新固件依次拷贝到系统固件块中,并在写入所述新固件的所述系统固件块的空闲区域修改系统固件块编号具体包括以下步骤:
先擦除旧系统固件块编号最大的第一系统固件块中的旧固件;
将存储在所述系统备用块中的所述新固件优先拷贝到所述第一系统固件块的数据区域中,并在所述第一系统固件块的空闲区域写入新系统固件块编号,所述第一系统固件块的新系统固件块编号等于所述第一系统固件块的旧系统固件块编号加三;
依次更新第二系统固件块和第三系统固件块并依次修改所述第二系统固件块和所述第三系统固件块中的系统固件块编号。
2.根据权利要求1所述的存储器固件更新方法,其特征在于,所述存储器固件更新方法还包括以下步骤:
若在擦除所述第一系统固件块中的所述旧固件时或是将所述新固件拷贝到所述第一系统固件块的数据区域时出现掉电,则在所述存储器重新上电时,下载所述第二系统固件块中的所述旧固件来进行所述存储器的正常工作;
根据所述第一系统固件块的所述空闲区域的系统固件块编号来判断所述第一系统固件块是否写完所述新固件,若未写完,则擦除所述第一系统固件块的数据区域之后将存储在所述系统备用块中的所述新固件重新拷贝到所述第一系统固件块的数据区域中,直至在所述第一系统固件块的数据区域中存储有完整的所述新固件。
3.根据权利要求1所述的存储器固件更新方法,其特征在于,所述依次更新第二系统固件块和第三系统固件块并依次修改第二系统固件块和第三系统固件块中的系统固件块编号具体包括以下步骤:
若在第二系统固件块和第三系统固件块的更新过程中均未发生掉电,则将存储在所述系统备用块中的所述新固件依次拷贝到第二系统固件块和第三系统固件块的数据区域中,并依次修改第二系统固件块和第三系统固件块的空闲区域中的系统固件块编号;
若在所述第一系统固件块中写完所述新固件且在所述第一系统固件块的空闲区域写入新系统固件块编号之后出现掉电,则在所述存储器重新上电时,判断所述第一系统固件块、所述第二系统固件块和所述第三系统固件块三者之间在系统固件块编号上是否有依次排序,若不是,则将所述第一系统固件块中的新固件依次拷贝到第二系统固件块和第三系统固件块的数据区域中,并依次修改第二系统固件块和第三系统固件块的空闲区域中的系统固件块编号。
4.根据权利要求1至3任一所述的存储器固件更新方法,其特征在于,所述将所述新固件写入到存储器的系统备用块中具体包括以下步骤:
按照所述存储器中所有系统备用块所对应的堆栈的逻辑顺序选择处于首端的系统备用块来写入所述新固件;
若在系统备用块写入所述新固件的过程中出现掉电现象,则在所述存储器重新上电时,将掉电前正在写入所述新固件的系统备用块重新排列到所述堆栈的尾端,而掉电前处于堆栈第二位置的系统备用块变成处于首端的系统备用块,将所述新固件写入到此时处于首端的系统备用块中,直至在所述系统备用块中存储有所述新固件。
5.根据权利要求1至3任一所述的存储器固件更新方法,其特征在于,所述将存储在所述系统备用块中的所述新固件依次拷贝到系统固件块中之前还包括以下步骤:
将空闲区域存储有系统固件块标记值的系统块认定为系统固件块,并根据认定为所述系统固件块的所述空闲区域内的系统固件块编号来确认多个所述系统固件块的读写优先顺序。
6.根据权利要求1至3任一所述的存储器固件更新方法,其特征在于,所述直至所有所述系统固件块中的旧固件均更新为新固件具体包括以下步骤:
直至所有所述第一系统固件块、所述第二系统固件块和所述第三系统固件块中的旧固件均更新为新固件。
7.一种存储器固件更新装置,其特征在于,包括:
写入模块,用于获取新固件,将所述新固件写入到存储器的系统备用块;
更新模块,用于将存储在所述系统备用块中的所述新固件依次拷贝到系统固件块中,并在写入所述新固件的所述系统固件块的空闲区域修改系统固件块编号;
所述将存储在所述系统备用块中的所述新固件依次拷贝到系统固件块中,并在写入所述新固件的所述系统固件块的空闲区域修改系统固件块编号具体包括以下步骤:
先擦除旧系统固件块编号最大的第一系统固件块中的旧固件;
将存储在所述系统备用块中的所述新固件优先拷贝到所述第一系统固件块的数据区域中,并在所述第一系统固件块的空闲区域写入新系统固件块编号,所述第一系统固件块的新系统固件块编号等于所述第一系统固件块的旧系统固件块编号加三;
依次更新第二系统固件块和第三系统固件块并依次修改所述第二系统固件块和所述第三系统固件块中的系统固件块编号;
完成模块,用于直至所有所述系统固件块中的旧固件均更新为所述新固件。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序存储有如权利要求1-6任意一项所述的存储器固件更新方法。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-6任意一项所述的存储器固件更新方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011107790.5A CN112199238B (zh) | 2020-10-16 | 2020-10-16 | 存储器固件更新方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011107790.5A CN112199238B (zh) | 2020-10-16 | 2020-10-16 | 存储器固件更新方法、装置、存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112199238A CN112199238A (zh) | 2021-01-08 |
CN112199238B true CN112199238B (zh) | 2024-05-28 |
Family
ID=74009587
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011107790.5A Active CN112199238B (zh) | 2020-10-16 | 2020-10-16 | 存储器固件更新方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112199238B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114201320B (zh) * | 2022-02-18 | 2022-05-27 | 深圳佰维存储科技股份有限公司 | 系统块升级方法、装置、可读存储介质及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102270144A (zh) * | 2010-06-04 | 2011-12-07 | 鸿富锦精密工业(深圳)有限公司 | 嵌入式网络设备及其更新固件的方法 |
CN104765628A (zh) * | 2015-03-10 | 2015-07-08 | 惠州Tcl移动通信有限公司 | 一种移动终端更新触摸屏固件的方法及系统 |
CN108170368A (zh) * | 2016-12-07 | 2018-06-15 | 北京忆恒创源科技有限公司 | 在线升级固件的方法及系统 |
CN108459867A (zh) * | 2018-02-28 | 2018-08-28 | 国云科技股份有限公司 | 一种云终端升级方法 |
CN108733517A (zh) * | 2018-06-05 | 2018-11-02 | 深圳忆联信息系统有限公司 | Ssd固件升级保护方法及装置 |
CN109725921A (zh) * | 2019-01-07 | 2019-05-07 | 深圳市道通科技股份有限公司 | 一种vci设备固件更新的方法、装置及汽车故障诊断仪 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9063816B2 (en) * | 2010-02-05 | 2015-06-23 | Lenovo (Singapore) Pte. Ltd. | Method and apparatus for updating firmware on a storage device |
JP2015102889A (ja) * | 2013-11-21 | 2015-06-04 | レノボ・シンガポール・プライベート・リミテッド | ファームウェアの更新方法、電子機器、コンピュータおよびコンピュータ・プログラム |
-
2020
- 2020-10-16 CN CN202011107790.5A patent/CN112199238B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102270144A (zh) * | 2010-06-04 | 2011-12-07 | 鸿富锦精密工业(深圳)有限公司 | 嵌入式网络设备及其更新固件的方法 |
CN104765628A (zh) * | 2015-03-10 | 2015-07-08 | 惠州Tcl移动通信有限公司 | 一种移动终端更新触摸屏固件的方法及系统 |
CN108170368A (zh) * | 2016-12-07 | 2018-06-15 | 北京忆恒创源科技有限公司 | 在线升级固件的方法及系统 |
CN108459867A (zh) * | 2018-02-28 | 2018-08-28 | 国云科技股份有限公司 | 一种云终端升级方法 |
CN108733517A (zh) * | 2018-06-05 | 2018-11-02 | 深圳忆联信息系统有限公司 | Ssd固件升级保护方法及装置 |
CN109725921A (zh) * | 2019-01-07 | 2019-05-07 | 深圳市道通科技股份有限公司 | 一种vci设备固件更新的方法、装置及汽车故障诊断仪 |
Non-Patent Citations (1)
Title |
---|
一种基于SPI FLASH的FPGA固件更新方法;赵冬青 等;;电子设计工程(第16期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112199238A (zh) | 2021-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6871259B2 (en) | File system including non-volatile semiconductor memory device having a plurality of banks | |
JP3892851B2 (ja) | メモリカード及び半導体装置 | |
CN103136108B (zh) | 快闪存储装置及其数据读取方法 | |
JP2002123421A (ja) | フラッシュメモリのための再写像制御方法及びこれによるフラッシュメモリの構造 | |
CN106371763A (zh) | 一种存储快照的方法、装置、磁盘及计算机 | |
US20060020849A1 (en) | Method of restoring source data of hard disk drive and method of reading system information thereof | |
JP2000020391A (ja) | 記憶装置、データ処理装置並びにデータ処理方法 | |
CN107992431A (zh) | 一种nand闪存无效数据回收的掉电保护方法 | |
TW201526007A (zh) | Nand快閃記憶體燒錄資料的處理、使用方法及裝置、運行系統 | |
CN112199238B (zh) | 存储器固件更新方法、装置、存储介质及电子设备 | |
US10248526B2 (en) | Data storage device and data maintenance method thereof | |
CN110688141B (zh) | 固件更新方法 | |
US20070005929A1 (en) | Method, system, and article of manufacture for sector mapping in a flash device | |
CN116185563B (zh) | 一种基于车规级微控制器数据闪存的软件模拟算法 | |
CN112035417A (zh) | 存储块的管理方法、装置、存储介质以及电子装置 | |
KR20090119481A (ko) | 파일 시스템의 로그 파일 및 상기 파일 시스템의 오류 복구방법 | |
US6314024B1 (en) | Data processing apparatus | |
US11436105B2 (en) | Data processing method and memory controller utilizing the same | |
JP4127307B2 (ja) | データ記憶装置、データ処理システム、データ処理方法及びデータ処理装置 | |
CN114661243A (zh) | 一种适ssd的可见容量调整的方法、装置、设备及介质 | |
CN112466371A (zh) | 一种循环利用闪存模拟字节擦除功能的方法 | |
CN111949212A (zh) | 基于自定义开放通道ssd的文件系统及文件管理方法 | |
CN112181316A (zh) | 数据块信息继承方法、装置、存储介质及电子设备 | |
EP1118936A2 (en) | Duplex disk controller | |
JP2014112419A (ja) | 携帯端末装置、ソフトウェア更新方法、動作制御方法及びプログラム |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 518000 floors 1-3 and 4 of buildings 4 and 8, zone 2, Zhongguan honghualing Industrial South Zone, No. 1213 Liuxian Avenue, Pingshan community, Taoyuan Street, Nanshan District, Shenzhen, Guangdong Applicant after: BIWIN STORAGE TECHNOLOGY Co.,Ltd. Address before: 518000 1st, 2nd, 4th and 5th floors of No.4 factory building, tongfuyu industrial town, Taoyuan Street, Nanshan District, Shenzhen City, Guangdong Province Applicant before: BIWIN STORAGE TECHNOLOGY Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |