一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

固件升级方法和装置与流程

2022-02-22 07:49:48 来源:中国专利 TAG:


1.本发明涉及一种固件升级方法和装置,属于计算机技术领域。


背景技术:

2.固件(firmware)一般存储于设备中的电可擦除只读存储器eeprom(electrically erasable programmable rom)或flash芯片(统称为闪存)中,通常这些硬件内所保存的程序是无法被用户直接读出或修改的,一般可由用户通过特定的刷新程序进行升级的程序,以使得性能提升、功能增加、或者缺陷改进等,进而适应不断更新的硬件环境。
3.一般情况下,现有设备的闪存中只有一个存储分区,设备中固件的升级方法为:首先,设备通过网络下载固件的升级压缩包,存储在闪存中并对升级压缩包进行解压,得到升级文件;其次,利用解压后的升级文件替换原始文件(替换本质为替换拷贝),对固件进行升级;最后重新启动设备,使固件升级后的设备可以为用户使用。然而这种升级方法中,由于替换过程的存在,如果在替换过程中遇到市电突然停电、用户拔掉电源适配器等异常断电情况,容易造成升级文件意外丢失、升级失败,进而导致设备中的固件不完整,当该设备再次启动时,不能正常引导设备中的应用程序启动,使得应用程序不能正常使用;并且在升级过程中,需要将原始文件停止使用时间较长,以实现替换过程,降低设备使用体验度。
4.为此有人提出将固件的原始文件进行备份,在升级失败时,利用原始文件对固件进行恢复,例如:申请公布号为cn 111045709 a的中国发明专利申请文件,该申请文件公开了一种固件升级方法和固件升级装置,其升级方法首先在闪存中分配两个用于存放ec固件的区块:第一特定存储空间,用于存放被拷贝、待更新固件的升级文件;第二特定存储空间,用于备份已有文件;以及基本输入输出系统的存储空间;进行升级时,将自身存储空间已有文件拷贝至第二特定存储空间,第一特定存储空间的升级文件拷贝在自身存储空间中,替换已有文件,完成升级,若在替换过程中异常断电导致升级失败,则将第二特定存储空间中备份的已有文件拷贝到基本输入输出系统的存储空间,完成自动修复,从而不影响用户正常使用。
5.上述专利文件虽然可以解决固件升级失败无法正常启动的现象,但是其在升级过程中,采用升级文件替换已有文件的操作、以及升级失败将拷贝已有文件进行恢复的操作,均无法避免因替换过程中断电而导致升级失败,并且在升级过程或失败后恢复过程中,均因需拷贝文件而是较长时间内无法使用已有文件,整体用户的体验效果较差。


技术实现要素:

6.本技术的目的在于提供固件升级方法和装置的技术方案,用以解决现有固件升级过程用户体验效果差的问题。
7.为实现上述目的,本技术提出了第一种固件升级方法的技术方案,包括以下步骤:
8.1)获取升级文件,将升级文件存储至第一分区中;
9.2)将第一分区的升级文件拷贝至第二分区中,所述第二分区中存储有原始文件;
所述原始文件的名称为第一名称;升级文件的名称为第二名称,并将第二名称作为升级标识;
10.3)若检测到升级标识,则将原始文件的名称重命名为第三名称,升级文件的名称重命名为第一名称,以完成应用程序的启动。
11.另外,本技术还提出第一种固件升级装置的技术方案,包括处理器、存储器以及存储在所述存储器中并可在处理器上运行的计算机程序,所述处理器在执行所述计算机程序时实现第一种固件升级方法的技术方案。
12.本发明的第一种固件升级方法和装置的技术方案的有益效果是:本发明在第一分区中存储升级文件,第二分区中存储原始文件,将升级文件拷贝至第二分区后,将升级文件的第二名称作为升级标识,检测到升级标识后,直接将第二分区中原始文件和升级文件重命名即可在应用程序启动后使用升级文件,完成升级。本发明在升级文件进行拷贝时无需停止原始文件的运行,并且虽然在重命名过程中需要停止原始文件的运行,但是重命名过程需要的时间很短(只需1ms),减少了用户等待升级的时间,整体提高了用户的体验效果。同时,由于重命名时间短,那么即使在重命名的过程中断电,系统中的电容电量足以提供所需电量,完成重命名过程,进而在上电后可以正常启动应用程序,完成升级,避免了升级过程中断电而应用程序无法正常启动的现象。
13.进一步的,上述固件升级方法和装置中,为了节约空间的同时还保证应用程序正常运行,还包括应用程序启动完成,运行设定时间后将原始文件进行删除的步骤,若应用程序在运行的设定时间内故障,则将原始文件的名称还原命名为第一名称,恢复原始文件的应用。同理,恢复原始文件只需对原始文件的名称还原命名,时间很短,,相对于现有技术中拷贝文件进行恢复的方式,降低了用户等待恢复的时间,也提高了用户体验。
14.进一步的,上述固件升级方法和装置中,所述第二分区存储系统程序,或者由其他分区存储系统程序。
15.另外,本技术提出了第二种固件升级方法的技术方案,包括以下步骤:
16.1)获取升级文件,将升级文件存储至第一分区中;
17.2)将第一分区的升级文件拷贝至第二分区中,所述第二分区中存储有原始文件;所述原始文件的名称为第一名称;升级文件的名称为第二名称;
18.3)将升级文件的名称重命名为第四名称,并将第四名称作为升级标识;
19.4)若检测到升级标识,则将原始文件的名称重命名为第三名称,升级文件的名称重命名为第一名称,以完成应用程序的启动。
20.另外,本技术还提出第二种固件升级装置的技术方案,包括处理器、存储器以及存储在所述存储器中并可在处理器上运行的计算机程序,所述处理器在执行所述计算机程序时实现第二种固件升级方法的技术方案。
21.本发明的第二种固件升级方法和装置的技术方案的有益效果是:本发明在第一分区中存储升级文件,第二分区中存储原始文件,将升级文件拷贝至第二分区,拷贝完成后将升级文件重命名为专用的升级标识,检测到升级标识后,直接将第二分区中原始文件和升级文件重命名即可在应用程序启动后使用升级文件,完成升级。本发明在升级文件进行拷贝时无需停止原始文件的运行,并且虽然在重命名过程中需要停止原始文件的运行,但是重命名过程需要的时间很短(只需1ms),减少了用户等待升级的时间,整体提高了用户的体
验效果。同时,由于重命名时间短,那么即使在重命名的过程中断电,系统中的电容电量足以提供所需电量,完成重命名过程,进而在上电后可以正常启动应用程序,完成升级,避免了升级过程中断电而应用程序无法正常启动的现象。
22.进一步的,上述固件升级方法和装置中,为了节约空间的同时还保证应用程序正常运行,还包括应用程序启动完成,运行设定时间后将原始文件进行删除的步骤,若应用程序在运行的设定时间内故障,则将原始文件的名称还原命名为第一名称,恢复原始文件的应用。
23.进一步的,上述固件升级方法和装置中,所述第二分区存储系统程序,或者由其他分区存储系统程序。
24.另外,本技术提出了第三种固件升级方法的技术方案,包括以下步骤:
25.1)获取升级文件,将升级文件存储至第一分区中;
26.2)将第一分区的升级文件拷贝至第二分区中,所述第二分区中存储有原始文件;所述原始文件的名称为第一名称;升级文件的名称为第二名称;
27.3)写入升级标识至第三分区中;
28.4)若检测到升级标识,则将原始文件的名称重命名为第三名称,升级文件的名称重命名为第一名称,以完成应用程序的启动。
29.另外,本技术还提出第三种固件升级装置的技术方案,包括处理器、存储器以及存储在所述存储器中并可在处理器上运行的计算机程序,所述处理器在执行所述计算机程序时实现第三种固件升级方法的技术方案。
30.本发明的第三种固件升级方法和装置的技术方案的有益效果是:本发明在第一分区中存储升级文件,第二分区中存储原始文件,第三分区中存储升级标识,将升级文件拷贝至第二分区,拷贝完成后将升级标识写入第三分区,检测到升级标识后,直接将第二分区中原始文件和升级文件重命名即可在应用程序启动后使用升级文件,完成升级。本发明在升级文件进行拷贝时无需停止原始文件的运行,并且虽然在重命名过程中需要停止原始文件的运行,但是重命名过程需要的时间很短(只需1ms),减少了用户等待升级的时间,整体提高了用户的体验效果。同时,由于重命名时间短,那么即使在重命名的过程中断电,系统中的电容电量足以提供所需电量,完成重命名过程,进而在上电后可以正常启动应用程序,完成升级,避免了升级过程中断电而应用程序无法正常启动的现象。
31.进一步的,上述固件升级方法和装置中,为了节约空间的同时还保证应用程序正常运行,还包括应用程序启动完成,运行设定时间后将原始文件进行删除的步骤,若应用程序在运行的设定时间内故障,则将原始文件的名称还原命名为第一名称,恢复原始文件的应用。
32.进一步的,上述固件升级方法和装置中,所述第二分区存储系统程序,或者由其他分区存储系统程序。
附图说明
33.图1是本发明固件升级方法实施例1的流程图;
34.图2是本发明闪存的分区示意图;
35.图3是本发明固件升级方法实施例2的流程图;
36.图4是本发明固件升级方法实施例3的流程图;
37.图5是本发明固件升级装置的结构示意图。
具体实施方式
38.固件升级方法实施例1:
39.本发明的主要构思在于,在闪存(即存储器)的存储空间的第一分区中存储升级文件,第二分区中存储原始文件,将升级文件拷贝至第二分区,并以升级文件夹的名称作为升级标识;识别到升级标识后,对原始文件夹和升级文件夹进行重命名,保证原始文件夹和升级文件夹的名称不相同,完成应用程序的启动。
40.升级文件和原始文件均为应用程序的文件,那么闪存中必不可少的系统程序可以在第二分区中进行存储,或者由其他单独的分区进行存储。本实施例中,系统程序由单独的系统分区进行存储,这样可以避免应用程序对系统程序的影响。
41.以下实施例中,work作为第一名称,new作为第二名称,old作为第三名称。具体的,固件升级方法如图1所示,包括以下步骤:
42.1)将闪存划分为三个区,第一分区、第二分区和系统分区。
43.如图2所示,第一分区用于存储所下载的升级包new(升级压缩包),也可以称为备份区。第二分区用于完成升级,存储有原始文件work(原始文件夹的名称为work),也可以称为工作区,系统分区存储系统程序。关于第一分区和第二分区的具体作用在后续的步骤中进行详细介绍,这里不做赘述。
44.2)下载升级包new,将升级包new存储在第一分区,计算并记录升级包new的校验值,判断校验值是否准确,若准确,则进入步骤3);若不准确,则删除升级包new,重新下载升级包new。
45.3)在第一分区中,对升级包new进行解压,得到升级文件new(升级文件夹的名称为new),计算并记录升级文件new中所有文件的校验值,并一一判断是否准确,若准确,则进入步骤4);若不准确,则删除升级文件new,重新解压升级包new。
46.4)将第一分区中的升级文件new拷贝至第二分区,并将new作为升级标识。
47.5)重启设备,若检测到第二分区的升级标识new,则判断为应用程序需要升级,再次对第二分区的升级文件new进行校验,判断升级文件new是否准确,若准确,进入步骤6);若不准确,则删除升级包new,重新从第一分区拷贝升级文件new。
48.这里的设备即智能家居的主机,重启设备的目的在于将所有应用程序关闭,避免某个应用程序的升级影响其他应用程序的使用(这里的其他程序是指与原始文件通信的程序),导致其他应用程序出现运行错误,当然也可以手动一一关闭所有应用程序,无需重启设备。并且,作为其他实施方式,在只保证升级成功的情况下,无需关闭其他应用程序,只需关闭需升级的原始文件即可。
49.6)将原始文件work重命名为原始文件old,升级文件new重命名为升级文件work;若启动成功,则运行升级文件new设定时间;若启动失败,则将原始文件old还原名称为原始文件work,恢复原来的应用,完成应用程序的启动。
50.7)在设备运行升级文件new设定时间内,若应用程序出现故障,则将原始文件old还原名称为原始文件work,恢复原来的应用,使得应用程序可以正常运行;若应用程序持续
运行,则运行设定时间后将原始文件old删除。
51.上述步骤6)中,应用程序启动成功后,为了避免升级文件work中存在bug而导致运行过程中出现问题,将升级文件work运行设定时间再将原始文件work删除,一般情况下,设定时间一般设置为一周。当然,在保证升级文件work可以正常使用的情况下,也可以在应用程序启动成功后直接删除原始文件old,或者设定时间根据需要进行设置,可以增长也可以缩短。
52.上述实施例中,为了确定升级文件的准确,步骤2)、步骤3)以及步骤5)中均包括校验的步骤,作为其他实施方式,在可以保证升级文件在各步骤中的准确性的情况下,也可以不进行校验,本发明对此不做限制。
53.现有技术中原始文件和升级文件的替换耗时远远大于重命名的耗时,并且在替换过程中原始文件无法使用,使得在长时间升级过程中,设备将无法使用,在智能家居领域,设备无法使用将会导致其他智能家居设备无法正常工作,给用户带来较差的体检效果。
54.本发明提出的固件升级方法在步骤1)-步骤4)中不影响原始文件work和设备的运行,用户还可以正常使用应用设备,该过程为拷贝过程,需要的时间较长。并且在设备启动完成后,步骤6)中重命名的过程大概只需要耗时1ms,减少了用户等待升级的时间,并且即使在重命名过程中断电,系统中电容电量也可以保证该步骤的正常完成,保证上电后应用程序正常启动,完成升级。本发明不仅整体上缩短了升级时间,提高了用户的体验效果,而且提高了升级的可靠性。
55.固件升级方法实施例2:
56.本实施例提出的固件升级方法与实施例1提出的固件升级方法的不同之处在于,将升级文件new拷贝至第二分区后,将升级文件new重命名为升级文件update,将update作为升级标识进行识别,若检测到update,则进行原始文件work和升级文件update的重命名。
57.将update作为升级标识的原因在于,1.update是系统中常用的升级标识,适用于各种不同的系统,因此,update作为升级标识适用范围广;2.升级文件new重命名为升级文件update的必要条件是升级文件new拷贝完成,如果在拷贝升级文件new过程中断电,那么第二分区中的升级文件new是不完整的,此时重新启动设备后如果识别到new标识,将会增大应用程序无法启动的风险,因此将升级文件new重命名为升级文件update可以保证升级文件new的完整性,减小应用程序无法启动的风险。
58.以下实施例中,work作为第一名称,new作为第二名称,old作为第三名称,update作为第四名称。具体的,本实施例提出的固件升级方法,包括以下步骤:
59.1)将闪存划分为三个区,第一分区、第二分区和系统分区。
60.2)下载升级包new,将升级包new存储在第一分区,计算并记录升级包new的校验值,判断校验值是否准确,若准确,则进入步骤3);若不准确,则删除升级包new,重新下载升级包new。
61.3)在第一分区中,对升级包new进行解压,得到升级文件new(升级文件夹的名称为new),计算并记录升级文件new中所有文件的校验值,并一一判断是否准确,若准确,则进入步骤4);若不准确,则删除升级文件new,重新解压升级包new。
62.3)将第一分区中的升级文件new拷贝至第二分区,并如图3所示,拷贝完成后将升级文件new重命名为升级文件update,并将update作为升级标识。
63.4)重启设备,若检测到第二分区的升级标识update,则判断为应用程序需要升级,再次对第二分区的升级文件update进行校验,判断升级文件update是否准确,若准确,进入步骤6);若不准确,则删除升级包update,重新从第一分区拷贝升级文件new。
64.6)将原始文件work重命名为原始文件old,升级文件update重命名为升级文件work;若启动成功,则运行升级文件update设定时间;若启动失败,则将原始文件old还原名称为原始文件work,恢复原来的应用,完成应用程序的启动。
65.7)在设备运行升级文件update设定时间内,若应用程序出现故障,则将原始文件old还原名称为原始文件work,恢复原来的应用,使得应用程序可以正常运行;若应用程序持续运行,则运行设定时间后将原始文件old删除。
66.关于固件升级方法的效果及其他实施方式与实施例1中的固件升级方法相同,本实施例不做过多介绍。
67.固件升级方法实施例3:
68.本实施例提出的固件升级方法与实施例1提出的固件升级方法的不同之处在于,将闪存分为四个分区,分别为第一分区、第二分区、第三分区和系统分区,当升级文件new拷贝完成至第二分区后,在第三分区中写入升级标识eeprom,当重启设备后,若检测到eeprom,则进行原始文件work和升级文件new的重命名。
69.在第三分区中写入升级标识eeprom也是不同系统中常用的升级标识,特意划分一个分区进行升级标识的写入,不仅可以减少升级文件的重命名的步骤,还适用各种系统。同时,写入升级标识eeprom的必要条件为升级文件new拷贝完成,与实施例2中update的作用相同,可以减少拷贝不完整的风险。
70.以下实施例中,work作为第一名称,new作为第二名称,old作为第三名称。具体的,本实施例的固件升级方法如图4所示,包括以下步骤:
71.1)将闪存划分为四个区,第一分区、第二分区、第三分区和系统分区,第三分区用于写入升级标识eeprom。
72.2)下载升级包new,将升级包new存储在第一分区,计算并记录升级包new的校验值,判断校验值是否准确,若准确,则进入步骤3);若不准确,则删除升级包new,重新下载升级包new。
73.3)在第一分区中,对升级包new进行解压,得到升级文件new(升级文件夹的名称为new),计算并记录升级文件new中所有文件的校验值,并一一判断是否准确,若准确,则进入步骤4);若不准确,则删除升级文件new,重新解压升级包new。
74.4)将第一分区中的升级文件new拷贝至第二分区;拷贝完成后在第三分区中写入eeprom作为升级标识。
75.5)重启设备,若检测到第二分区的升级标识eeprom,则判断为应用程序需要升级,再次对第二分区的升级文件new进行校验,判断升级文件new是否准确,若准确,进入步骤6);若不准确,则删除升级包new,重新从第一分区拷贝升级文件new。
76.6)将原始文件work重命名为原始文件old,升级文件new重命名为升级文件work;若启动成功,则运行升级文件new设定时间;若启动失败,则将原始文件old还原名称为原始文件work,恢复原来的应用,完成应用程序启动。
77.7)在设备运行升级文件new设定时间内,若应用程序出现故障,则将原始文件old
还原名称为原始文件work,恢复原来的应用,使得应用程序可以正常运行;若应用程序持续运行,则运行设定时间后将原始文件old删除。
78.关于固件升级方法的效果及其他实施方式与实施例1中的固件升级方法相同,本实施例不做过多介绍。
79.固件升级装置实施例:
80.固件升级装置,如图5所示,包括处理器、存储器(及上述方法中的闪存)以及存储在所述存储器中并可在处理器上运行的计算机程序,所述处理器在执行所述计算机程序时实现固件升级方法。
81.固件升级方法的具体实施过程以及效果在上述固件升级方法实施例1、2、3中介绍,这里不做赘述。
82.也就是说,以上固件升级方法实施例中的方法应理解可由计算机程序指令实现固件升级方法的流程。可提供这些计算机程序指令到处理器(如通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备等),使得通过处理器执行这些指令产生用于实现上述方法流程所指定的功能。
83.本实施例所指的处理器是指微处理器mcu或可编程逻辑器件fpga等的处理装置;
84.本实施例所指的存储器用于存储实现固件升级方法而形成的计算机程序指令,包括用于存储信息的物理装置,通常是将信息数字化后再以利用电、磁或者光学等方式的媒体加以存储。例如:利用电能方式存储信息的各式存储器,ram、rom等;利用磁能方式存储信息的的各式存储器,硬盘、软盘、磁带、磁芯存储器、磁泡存储器、u盘;利用光学方式存储信息的各式存储器,cd或dvd。当然,还有其他方式的存储器,例如量子存储器、石墨烯存储器等等。
85.通过上述存储有实现固件升级方法而形成的计算机程序指令的存储器、处理器构成的固件升级装置,在计算机中由处理器执行相应的程序指令来实现,计算机可使用windows操作系统、linux系统、或其他,例如使用android、ios系统程序设计语言在智能终端实现,以及基于量子计算机的处理逻辑实现等。
86.作为其他实施方式,固件升级装置还可以包括其他的处理硬件,如数据库或多级缓存、gpu等,本发明并不对固件升级装置的结构做具体的限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献