一种固件升级方法、装置及计算机存储介质与流程

文档序号:28804009发布日期:2022-02-09 01:12阅读:77来源:国知局
一种固件升级方法、装置及计算机存储介质与流程

1.本技术涉及电子技术领域,尤其涉及一种固件升级方法、装置及计算机存储介质。


背景技术:

2.嵌入式系统是由硬件和软件协同,能独立进行运行的专用计算机系统。随着电子技术和计算机软件技术的发展,嵌入式系统在日常生活、工业控制、工业生产等多个领域都有着广泛的应用,因此,嵌入式系统的维护与升级也变得日益重要。其中,嵌入式系统中的各种系统功能由嵌入式固件控制,嵌入式固件包含引导加载程序、内核文件和文件系统,通常存储在快闪存储器(flash)中。通过对嵌入式固件的定期升级,可以不断完善嵌入式系统的功能。
3.在进行嵌入式固件升级的过程中,如果存在突然断电或者固件异常的情况,会导致嵌入式系统死机或者系统崩溃。针对这些故障,需要进行返厂维修,增加了嵌入式系统的维护成本。


技术实现要素:

4.本技术实施例提供一种固件升级方法及装置,可提供固件升级过程的恢复能力。
5.第一方面,本技术实施例提供了一种固件升级方法,该方法应用于嵌入式系统,该嵌入式系统配置有待升级固件,且该嵌入式系统包括第一存储空间和第二存储空间,该第一存储空间包括升级区和备份区,该方法包括:获取固件升级文件,将该固件升级文件存储至该升级区;获取该待升级固件的第一版本信息;如果该备份区不为空,则获取该备份区存储的备份区固件的第二版本信息;若该第一版本信息与该第二版本信息不相同,则将该待升级固件对应的该第一版本信息指示的固件覆盖存储至该备份区;根据该升级区的固件升级文件,对该第二存储空间进行存储操作,以便于将该升级区的固件升级文件复制到该第二存储空间对该待升级固件进行升级。
6.在一种实现方式中,获取固件升级文件的具体实施方式可以为:该嵌入式系统向服务器发送下载请求;接收该服务器发送的第一分段数据和该第一分段数据的第一校验值;其中,该第一分段数据由该固件升级文件拆分而成;根据该第一校验值对该第一分段数据进行校验,确定校验成功后请求第二分段数据以及第二分段数据的第二校验值,该第二分段数据也是由该固件升级文件拆分而成。
7.在一种实现方式中,该方法还可以包括:在成功接收该固件升级文件的数据后,接收该固件升级文件的整体校验值;根据该整体校验值对该固件升级文件进行校验,并在校验成功后进行校验成功处理。
8.在一种实现方式中,该方法还可以包括:嵌入式系统获取待升级固件的第一版本信息之后,若该备份区为空,则将该待升级固件对应的第一版本信息指示的固件存储至该备份区。
9.在一种实现方式中,该嵌入式系统满足第一预设条件的情况下,检测该备份区是
否为空;若该备份区不为空,则根据该备份区固件,对该第二存储空间进行存储操作,以便于将该备份区固件存储至该第二存储空间并运行该备份区固件。
10.在一种实现方式中,该嵌入式系统满足第一预设条件可以包括以下任一项:该嵌入式系统断电导致该待升级固件升级失败;该待升级固件异常导致该待升级固件升级失败。
11.在一种实现方式中,对该第二存储空间进行存储操作之前,该方法还可以包括:确定该第二存储空间是否为空;若不为空,则清空该第二存储空间的数据,以便于执行对该第二存储空间进行存储操作。
12.第二方面,本技术实施例提供了一种固件升级装置,该装置包括用于执行上述第一方面的方法的单元。
13.第三方面,本技术实施例提供了一种智能设备,该智能设备包括存储器和处理器,该存储器用于存储计算机程序,该处理器被配置用于运行该计算机程序,执行上述第一方面的方法。
14.第四方面,本技术实施例公开了一种计算机存储介质,该计算机存储介质存储有计算机程序,该计算机程序当被处理器运行时,上述第一方面的方法将被实现。
15.通过实施本技术实施例,可以在待升级固件对应的第一版本信息与备份区固件对应的第二版本信息不相同的情况下,将待升级固件对应的第一版本信息指示的固件覆盖存储至备份区,当存在突然断电或者固件异常的情况时,调用备份区固件保证嵌入式系统的正常运行,提供恢复能力,避免了嵌入式系统死机或者系统崩溃的风险,有利于降低嵌入式系统的维护成本。
附图说明
16.为了更清楚地说明本技术实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
17.图1是本技术实施例提供的一种嵌入式系统结构示意图;
18.图2是本技术实施例提供的一种固件升级方法的流程示意图;
19.图3a是本技术实施例提供的另一种固件升级方法的流程示意图;
20.图3b是本技术实施例提供的另一种固件升级方法的流程示意图;
21.图4是本技术实施例提供的一种固件升级方法中的获取固件升级文件流程示意图;
22.图5是本技术实施例提供的又一种固件升级方法的流程示意图;
23.图6是本技术实施例提供的一种固件升级装置的结构示意图;
24.图7是本技术实施例提供的一种智能设备的结构示意图。
具体实施方式
25.为了便于理解本技术实施例公开的一种固件升级方法,下面首先对本技术实施例提供的嵌入式系统进行介绍。
26.请参见图1,图1为本技术实施例提供的一种嵌入式系统结构示意图。本技术实施例中的嵌入式系统可以包括第一存储空间和第二存储空间,其中,第一存储空间可以包括
升级区和备份区。
27.在本技术实施例中,第一存储空间可以是不会因断电丢失数据同时可以快速读取数据的快闪存储器(flash),例如nor flash、nand flash。其中,升级区可以用于存储固件升级文件,备份区可以用于存储备份的待升级固件。第二存储空间可以是读写方便的随机存取存储器(random access memory,ram),例如动态随机存取存储器(dynamic random access memory,dram)、静态随机存取存储器(static random-access memory,sram)。
28.需要说明的是,本技术实施例的嵌入式系统可以包括但不限于智能手机、穿戴式设备、平板电脑、个人计算机(personal computer,pc)、智慧交通系统、智能家居控制系统、智慧医疗系统、智能汽车系统、工业自动化管理系统等等。
29.在本技术实施例中,嵌入式系统可以从服务器获取固件升级文件,并将该固件升级文件存储至升级区,该升级区可以是在第一存储空间中预先设定的;嵌入式系统可以获取待升级固件的第一版本信息,以确定待升级固件对应的版本号;如果备份区不为空,即表明该备份区存储有备份区固件,该备份区可以是在第一存储空间中预先设定的,则获取该备份区存储的备份区固件的第二版本信息,以确定备份区固件对应的版本号;若第一版本信息与第二版本信息不相同,即表明该待升级固件对应的版本号与该备份区固件对应的版本号不相同,则将所述待升级固件对应的所述第一版本信息指示的固件覆盖存储至所述备份区,使备份区固件保持与待升级固件版本一致;根据升级区的固件升级文件,对第二存储空间进行存储操作,以便于将升级区的固件升级文件复制到第二存储空间对待升级固件进行升级。
30.下面结合附图对本技术提供的固件升级方法、装置及计算机存储介质进行详细地介绍。
31.请参见图2,图2是本技术实施例提供的一种固件升级方法的流程示意图。该嵌入式系统配置有待升级固件,且该嵌入式系统包括第一存储空间和第二存储空间,该第一存储空间包括升级区和备份区,如图2所示,该方法可以包括但不限于如下步骤:
32.步骤s201:获取固件升级文件,将该固件升级文件存储至该升级区。
33.具体的,嵌入式系统若收到固件升级指令,可以从服务器获取固件升级文件,并将该固件升级文件暂存于第一存储空间的升级区。
34.其中,嵌入式系统可以主动触发固件升级指令,也可以定时自动生成固件升级指令。在一种实现方式中,嵌入式系统接收到固件升级指令后,可以基于文件传输协议(file transfer protocol,ftp)与服务器建立连接。可选的,嵌入式系统与服务器的数据传输模式可以是主动模式也可以是被动模式,本技术实施例对此不做限定。在一种实现方式中,可以预先导入证书到服务器,在服务器与嵌入式系统建立ftp连接后,嵌入式系统若通过该证书验证,则可以与服务器建立加密ftp连接。采用这种方式进行数据传输,有利于提高数据安全性,使固件升级更加安全可靠。
35.在一种实现方式中,嵌入式系统可以接收服务器下发的配置文件,其中,配置文件包含固件名称信息、固件版本信息以及固件下载地址。该配置文件可以预先设置在服务器中,通过服务器可以远程更新配置文件信息,提高固件升级灵活性。可选的,该配置文件信息可以手动进行更新,也可以定期自动更新。嵌入式系统可以通过解析配置文件,得到固件名称信息、固件版本信息以及固件下载地址。嵌入式系统将解析得到的固件名称信息对应
的固件版本信息与本地存储的固件名称信息对应的固件版本信息进行对比,可以确定待升级固件的名称。根据待升级固件的名称对应的固件下载地址,嵌入式系统可以向服务器发送固件升级文件下载请求。
36.在一种实现方式中,该固件升级文件可以拆分成多个分段数据,对每个分段数据可以分别计算循环冗余校验(cyclic redundancy check,crc)值,服务器可以把每个分段数据以及每个分段数据对应的crc校验值依次发送到嵌入式系统,嵌入式系统可以根据接收到的第一分段数据和第一分段数据的校验值进行校验。若校验成功,则表明第一分段数据未被损坏,嵌入式系统可以向服务器发送分段数据校验成功消息,并请求第二分段数据以及第二分段数据的校验值;若校验失败,则表明第一分段数据被损坏,嵌入式系统可以向服务器上报分段数据校验失败消息,并立即结束下载。相较于下载完成所有固件升级文件数据后再校验的方式,通过这种方式,可以在固件升级文件下载过程中及时发现异常,并终止下载,有利于减少流量消耗。
37.在一种实现方式中,当服务器成功发送固件升级文件数据后,可以采用消息摘要算法第五版(message-digest algorithm 5,md5)计算整体固件升级文件的校验值,并把该校验值发送到嵌入式系统。嵌入式系统可以根据接收到的固件升级文件的整体校验值对接收到的固件升级文件数据进行整体校验,若校验成功,则表明固件升级文件未被损坏,嵌入式系统可以向服务器发送固件升级文件校验成功消息,也可以向用户发送固件升级文件下载成功消息;若校验失败,则表明固件升级文件被损坏,嵌入式系统可以向服务器上报固件升级文件校验失败消息,也可以向用户发送固件升级文件下载失败消息。通过这种方式,有利于提高固件升级文件下载的可靠性。
38.在本技术实施例中,嵌入式系统获取固件升级文件后,可以存储至第一存储空间的升级区中,该升级区可以是在第一存储空间中预先设定的,以便于后续调用固件升级文件对待升级固件进行升级。
39.步骤s202:获取该待升级固件的第一版本信息。
40.具体的,嵌入式系统在调用固件升级文件对待升级固件进行升级之前,可以获取该待升级固件的第一版本信息,并记录该第一版本信息。
41.在本技术实施例中,不同版本的固件对应不同的版本号,通过获取待升级固件的第一版本信息,以确定待升级固件对应的版本号。
42.步骤s203:如果该备份区不为空,则获取该备份区存储的备份区固件的第二版本信息。
43.具体的,嵌入式系统可以检测备份区是否为空,该备份区可以是在第一存储空间中预先设定的,如果该备份区不为空,嵌入式系统可以获取该备份区存储的备份区固件的第二版本信息,并记录该第二版本信息。
44.在一种实现方式中,该备份区可以为第一存储空间中预先设定的多个备份分区中的一个,其中,一个固件名称可以对应一个备份分区。若该备份区为第一存储空间中预先设定的多个备份分区中的一个,则该备份区为待升级固件的固件名称对应的备份分区。
45.在一种实现方式中,嵌入式系统可以在待升级固件进行升级之前对备份区进行检测,也可以定期对备份区进行检测。在一种实现方式中,嵌入式系统对备份区进行检测的指令可以是由用户触发的,也可以通过预设时间间隔为周期,嵌入式系统自动生成对备份区
进行检测的指令,本技术实施例对此不作限定。
46.在一种实现方式中,若该备份区的检测结果不为空,即表明该备份区中存储有该待升级固件的备份区固件,则可以获取该备份区固件的第二版本信息,以确定该备份区固件的版本号。
47.步骤s204:若该第一版本信息与该第二版本信息不相同,则将该待升级固件对应的该第一版本信息指示的固件覆盖存储至该备份区。
48.具体的,嵌入式系统可以将待升级固件对应的第一版本信息与备份区固件对应的第二版本信息进行对比。若待升级固件对应的第一版本信息与备份区固件对应的第二版本信息相同,即表明该待升级固件对应的版本号与该待升级固件的备份区固件对应的版本号相同,表示备份区存储的备份区固件为待升级固件的当前版本,则备份区保留第二版本信息对应的备份区固件的存储。若待升级固件对应的第一版本信息与备份区固件对应的第二版本信息不相同,即表明该待升级固件对应的版本号与该待升级固件的备份区固件对应的版本号不相同,表示备份区存储的备份区固件不是待升级固件的当前版本,则将该待升级固件对应的第一版本信息指示的固件覆盖存储至该备份区,即将第二版本信息对应的备份区固件删除,存储待升级固件对应的第一版本信息指示的固件至备份区。通过这种方式,可以使备份区固件保持与待升级固件版本一致,当待升级固件升级失败时,可以及时调用备份区固件以恢复嵌入式系统正常运行。
49.步骤s205:根据该升级区的固件升级文件,对该第二存储空间进行存储操作,以便于将该升级区的固件升级文件复制到该第二存储空间对该待升级固件进行升级。
50.具体的,在确定备份区存储与待升级固件版本号相同的备份区固件后,根据升级区的固件升级文件,对第二存储空间进行存储操作,以便于将升级区的固件升级文件复制到第二存储空间对待升级固件进行升级。
51.在一种实现方式中,嵌入式系统对该第二存储空间进行存储操作之前,还可以检测该第二存储空间是否为空,若不为空,则清空该第二存储空间数据,通过这种方式,可以确保将升级区的固件升级文件复制到第二存储空间对待升级固件进行升级时没有其他数据的干扰,提高固件升级的稳定性。
52.通过实施本技术实施例,可以在待升级固件对应的第一版本信息与备份区固件对应的第二版本信息不相同的情况下,将待升级固件对应的第一版本信息指示的固件覆盖存储至备份区,然后再将升级区的固件升级文件复制到第二存储空间对待升级固件进行升级,若在升级过程中发生突然断电或者固件异常的情况,可以调用备份区固件以保证嵌入式系统的正常运行。通过这种方式,可以避免嵌入式系统死机或者系统崩溃的风险。
53.请参见图3a,图3a是本技术实施例提供的另一种固件升级方法的流程示意图。该嵌入式系统配置有待升级固件,且该嵌入式系统包括第一存储空间和第二存储空间,该第一存储空间包括升级区和备份区,具体的,如图3a所示,本技术实施例的另一种固件升级方法可以包括但不限于以下步骤:
54.s301:获取固件升级文件,将该固件升级文件存储至该升级区。
55.s302:获取该待升级固件的第一版本信息。
56.在本技术实施例中,步骤s301和步骤s302的执行过程可分别参见图2中步骤s201和步骤s202的具体描述,此处不再赘述。
57.s303:检测备份区是否为空。
58.具体的,嵌入式系统检测备份区是否为空目的是确定是否需要执行备份操作,该备份区可以是在第一存储空间中预先设定的。若备份区为空,则说明需要执行备份操作;若备份区不为空,则可以获取该备份区存储的备份区固件的第二版本信息,若待升级固件的第一版本信息与备份区固件的第二版本信息不相同,则也需要执行备份操作;若待升级固件的第一版本信息与备份区固件的第二版本信息相同,则说明不需要执行备份操作。
59.s304:若该备份区为空,则将该待升级固件对应的第一版本信息指示的固件存储至该备份区。
60.具体的,若该备份区为空,即说明需要执行备份操作,嵌入式系统可以将待升级固件对应的第一版本信息指示的固件存储至该备份区。即将待升级固件对应的第一版本信息指示的固件确定为备份区固件。通过这种方式,可以为固件升级的过程提供恢复能力。
61.s305:若该备份区不为空,则获取该备份区存储的备份区固件的第二版本信息。
62.具体的,若该备份区不为空,则可以获取该备份区存储的备份区固件的第二版本信息,并记录该第二版本信息。通过获取该备份区存储的备份区固件的第二版本信息,可以确定该备份区固件的版本号。
63.s306:若该第一版本信息与该第二版本信息不相同,则将该待升级固件对应的该第一版本信息指示的固件覆盖存储至该备份区。
64.具体的,嵌入式系统可以将待升级固件对应的第一版本信息与备份区固件对应的第二版本信息进行对比。若该第一版本信息与该第二版本信息不相同,即表明该待升级固件对应的版本号与该待升级固件的备份区固件对应的版本号不相同,表示备份区存储的备份区固件不是待升级固件的当前版本,则需要执行备份操作,嵌入式系统可以将该待升级固件对应的第一版本信息指示的固件覆盖存储至该备份区,即将第二版本信息对应的备份区固件删除,存储待升级固件对应的第一版本信息指示的固件至备份区。若待升级固件对应的第一版本信息与备份区固件对应的第二版本信息相同,即表明该待升级固件对应的版本号与该待升级固件的备份区固件对应的版本号相同,表示备份区存储的备份区固件为待升级固件的当前版本,则不需要执行备份操作,嵌入式系统的备份区将保留第二版本信息对应的备份区固件的存储。通过这种方式,可以使备份区固件保持与待升级固件版本一致,当待升级固件升级失败时,可以及时调用备份区固件以恢复嵌入式系统正常运行。
65.s307:确定第二存储空间是否为空。
66.在本技术实施例中,嵌入式系统对第二存储空间进行存储操作之前,可以确定第二存储空间是否为空。若第二存储空间为空,则表明第二存储空间中没有存储数据。若第二存储空间不为空,则表明第二存储空间中存储有其他数据。
67.s308:若第二存储空间不为空,则清空该第二存储空间的数据,以便于执行对该第二存储空间进行存储操作。
68.具体的,嵌入式系统对第二存储空间进行存储操作之前,若第二存储空间不为空,则清空该第二存储空间的数据,即将第二存储空间的数据删除。通过这种方式,可以避免嵌入式系统对第二存储空间进行存储操作时受到其他数据的干扰。
69.s309:若第二存储空间为空,则根据该升级区的固件升级文件,对该第二存储空间进行存储操作,以便于将该升级区的固件升级文件复制到该第二存储空间对该待升级固件
进行升级。
70.具体的,若第二存储空间为空,则表明第二存储空间中没有存储数据。嵌入式系统可以根据升级区的固件升级文件,对第二存储空间进行存储操作,即将该升级区的固件升级文件复制到该第二存储空间运行,实现对该待升级固件进行升级。
71.可见,通过实施图3a所描述的固件升级方法,可以在备份区为空和备份区固件与待升级固件版本不一致的情况下,及时进行备份操作,确保备份区存储有与待升级固件版本一致的备份区固件,提供固件升级过程的恢复能力。
72.需要说明的是,在本技术实施例中,在固件升级过程中还可以判定该嵌入式系统是否满足第一预设条件,若该嵌入式系统满足第一预设条件,则执行如图3b所示的步骤s310~s311部分;若该嵌入式系统不满足第一预设条件,则可以忽略如图3b所示的步骤s310~s311部分。
73.请参见图3b,图3b是本技术实施例提供的另一种固件升级方法的流程示意图。该嵌入式系统配置有待升级固件,且该嵌入式系统包括第一存储空间和第二存储空间,该第一存储空间包括升级区和备份区,具体的,如图3b所示,本技术实施例的另一种固件升级方法可以包括但不限于以下步骤:
74.s310:嵌入式系统满足第一预设条件的情况下,检测该备份区是否为空。
75.具体的,嵌入式系统满足第一预设条件可以表示:该嵌入式系统的待升级固件升级失败。若该嵌入式系统的待升级固件升级失败,则检测备份区是否为空。
76.在一种实现方式中,嵌入式系统满足第一预设条件可以包括以下任一项:嵌入式系统断电导致待升级固件升级失败;或者,待升级固件异常导致待升级固件升级失败。嵌入式系统是否满足第一预设条件可以根据嵌入式系统的更新信息来判断,其中,更新信息可以是嵌入式系统升级过程中存在掉电的指示信息,也可以是固件升级异常的指示信息。
77.在一种实现方式中,嵌入式系统在固件升级过程中如果突然断电,可以生成第一指示信息,该第一指示信息可以用于指示该嵌入式系统满足第一预设条件。根据该第一指示信息,嵌入式系统可以执行检测备份区是否为空的操作。
78.在一种实现方式中,嵌入式系统上电启动后,可以对待升级固件进行检测,嵌入式系统可以通过检测待升级固件的标识位确定是否满足第一预设条件。若待升级固件标识位状态正常,即表明待升级固件正常,则嵌入式系统不满足第一预设条件;若待升级固件标识位状态异常,即表明待升级固件异常,则可以生成第二指示信息,该第二指示信息可以用于指示该嵌入式系统满足第一预设条件。根据该第二指示信息,嵌入式系统可以执行检测备份区是否为空的操作。
79.s311:若该备份区不为空,则根据该备份区固件,对该第二存储空间进行存储操作,以便于将该备份区固件存储至该第二存储空间并运行该备份区固件。
80.在本技术实施例中,当嵌入式系统满足第一预设条件时,若该备份区不为空,即表明该备份区存储有待升级固件的备份区固件,则可以调用该备份区固件,对该第二存储空间进行存储操作,以便于将该备份区固件存储至该第二存储空间并运行该备份区固件。
81.通过实施本技术实施例,可以确保备份区存储有与待升级固件版本一致的备份区固件,若在升级过程中发生突然断电或者固件异常的情况,可以调用备份区固件以保证嵌入式系统的正常运行。通过这种方式,可以避免嵌入式系统死机或者系统崩溃的风险。
82.请参见图4,图4是本技术实施例提供的一种固件升级方法中的获取固件升级文件流程示意图。如图4所示,该方法可以包括但不限于如下步骤:
83.s401:向服务器发送下载请求。
84.具体的,嵌入式系统若收到固件升级指令,则可以向服务器发送固件升级文件下载请求。
85.在一种实现方式中,嵌入式系统可以主动触发固件升级指令,也可以定时自动生成固件升级指令。在一种实现方式中,嵌入式系统接收到固件升级指令后,可以基于文件传输协议与服务器建立ftp连接。可选的,嵌入式系统与服务器的数据传输模式可以是主动模式也可以是被动模式,本技术实施例对此不做限定。在一种实现方式中,可以预先导入证书到服务器,在服务器与嵌入式系统建立ftp连接后,嵌入式系统若通过该证书验证,则可以与服务器建立加密ftp连接。采用这种方式进行数据传输,有利于提高数据安全性,使固件升级更加安全可靠。
86.在一种实现方式中,服务器可以向嵌入式系统下发配置文件,其中,配置文件包含固件名称信息、固件版本信息以及固件下载地址。该配置文件可以预先设置在服务器中,通过服务器可以远程更新配置文件信息,提高固件升级灵活性。可选的,该配置文件信息可以手动进行更新,也可以由服务器定期自动更新。嵌入式系统可以通过解析配置文件,得到固件名称信息、固件版本信息以及固件下载地址。嵌入式系统将解析得到的固件名称信息对应的固件版本信息与本地存储的固件名称信息对应的固件版本信息进行对比,可以确定待升级固件的名称。根据待升级固件的名称对应的固件下载地址,嵌入式系统可以向服务器发送固件升级文件下载请求。
87.s402:接收服务器发送的第一分段数据和第一分段数据的校验值。
88.具体的,该固件升级文件可以拆分成多个分段数据,对每个分段数据可以分别计算crc校验值,服务器可以把每个分段数据以及每个分段数据对应的crc校验值依次发送到嵌入式系统,嵌入式系统可以接收服务器发送的第一分段数据和第一分段数据的校验值。
89.s403:检测是否校验成功。
90.具体的,嵌入式系统可以根据接收到的第一分段数据和第一分段数据的校验值检测是否校验成功。若校验成功,则表明第一分段数据未被损坏,嵌入式系统可以向服务器发送分段数据校验成功消息,并请求第二分段数据以及第二分段数据的校验值;若校验失败,则表明第一分段数据被损坏,嵌入式系统可以向服务器上报分段数据校验失败消息,并立即结束下载。
91.s404:接收第二分段数据和第二分段数据的校验值。
92.具体的,当第一分段数据校验成功后,嵌入式系统可以接收第二分段数据和第二分段数据的校验值,若第二分段数据校验成功,则嵌入式系统可以依次接收下一分段数据和下一分段数据的校验值,如此循环,直至成功接收固件升级文件的全部数据。
93.s405:在成功接收该固件升级文件的数据后,接收该固件升级文件的整体校验值。
94.具体的,当服务器成功发送固件升级文件数据后,可以计算整体固件升级文件的md5校验值,并把该校验值发送到嵌入式系统,嵌入式系统可以接收该固件升级文件的整体校验值,并根据该固件升级文件的整体校验值对固件升级文件数据进行整体校验。
95.s406:检测是否校验成功。
96.具体的,嵌入式系统可以根据接收到的固件升级文件的整体校验值对接收到的固件升级文件数据进行整体校验,若校验成功,则表明固件升级文件未被损坏,嵌入式系统可以将获取的固件升级文件存储至第一存储空间的升级区中,以便于后续调用固件升级文件对待升级固件进行升级;若校验失败,则表明固件升级文件被损坏,嵌入式系统结束固件升级文件获取流程。
97.通过实施本技术实施例,可以在获取固件升级文件的过程中及时发现异常,并立即结束下载,有利于节约时间成本,避免浪费不必要的流量。
98.请参见图5,图5是本技术实施例提供的又一种固件升级方法的流程示意图。该嵌入式系统配置有待升级固件,且该嵌入式系统包括第一存储空间和第二存储空间,该第一存储空间包括升级区和备份区,具体的,如图5所示,该方法可以包括但不限于如下步骤:
99.s501:判断是否满足第一预设条件。
100.具体的,嵌入式系统满足第一预设条件可以包括以下任一项:嵌入式系统断电导致待升级固件升级失败;或者,待升级固件异常导致待升级固件升级失败。嵌入式系统是否满足第一预设条件可以根据嵌入式系统的更新信息来判断,其中,更新信息可以是嵌入式系统升级过程中存在掉电的指示信息,也可以是固件升级异常的指示信息。
101.在一种实现方式中,若嵌入式系统存在断电的情况,则可以生成第一指示信息,该第一指示信息可以用于指示该嵌入式系统满足第一预设条件。在一种实现方式中,嵌入式系统上电启动后,可以对待升级固件进行检测,嵌入式系统可以通过检测待升级固件的标识位确定是否满足第一预设条件。若待升级固件标识位状态正常,即表明待升级固件正常,则嵌入式系统不满足第一预设条件;若待升级固件标识位状态异常,即表明待升级固件异常,则可以生成第二指示信息,该第二指示信息可以用于指示该嵌入式系统满足第一预设条件。
102.s502:检测备份区是否为空。
103.具体的,在嵌入式系统不满足第一预设条件的情况下,可以检测备份区是否为空,该备份区可以是在第一存储空间中预先设定的。需要说明的是,当嵌入式系统不满足第一预设条件时,执行检测备份区是否为空的操作的目的是确定是否需要执行备份操作
104.s503:将该待升级固件对应的第一版本信息指示的固件存储至该备份区。
105.具体的,若该备份区为空,即说明需要执行备份操作,嵌入式系统可以将待升级固件对应的第一版本信息指示的固件存储至该备份区。即将待升级固件对应的第一版本信息指示的固件确定为备份区固件。
106.s504:获取该备份区存储的备份区固件的第二版本信息。
107.具体的,若该备份区不为空,则可以获取该备份区存储的备份区固件的第二版本信息,并记录该第二版本信息。通过获取该备份区存储的备份区固件的第二版本信息,可以确定该备份区固件的版本号。
108.s505:若该第一版本信息与该第二版本信息不相同,则将该待升级固件对应的该第一版本信息指示的固件覆盖存储至该备份区。
109.需要说明的是,步骤s505的执行过程可参见图2中步骤s204或者图3中步骤s306的具体描述,此处不再赘述。
110.s506:根据该升级区的固件升级文件,对该第二存储空间进行存储操作,以便于将
该升级区的固件升级文件复制到该第二存储空间对该待升级固件进行升级。
111.需要说明的是,步骤s506的执行过程可参见图2中步骤s205的具体描述,此处不再赘述。
112.s507:检测备份区是否为空。
113.具体的,在嵌入式系统满足第一预设条件的情况下,可以检测备份区是否为空,该备份区可以是在第一存储空间中预先设定的。需要说明的是,当嵌入式系统满足第一预设条件时,执行检测备份区是否为空的操作的目的是确定备份区是否存储有可调用的备份区固件。
114.s508:根据备份区固件,对第二存储空间进行存储操作,以便于将备份区固件存储至第二存储空间并运行备份区固件。
115.具体的,若该备份区不为空,即表明备份区存储有可调用的备份区固件,则可以根据备份区固件,对第二存储空间进行存储操作,以便于将备份区固件存储至第二存储空间并运行备份区固件。
116.在一种实现方式中,嵌入式系统对该第二存储空间进行存储操作之前,还可以检测该第二存储空间是否为空,若不为空,则清空该第二存储空间数据,通过这种方式,可以确保将备份区固件存储至第二存储空间并运行备份区固件时没有其他数据的干扰。
117.需要说明的是,步骤s506之后启动设备目的是运行完成升级的待升级固件;步骤s508之后启动设备的目的是运行备份区固件,以恢复嵌入式系统的正常运行。
118.通过实施本技术实施例,可以在嵌入式系统不满足第一预设条件时,及时对待升级固件进行备份,并在嵌入式系统满足第一预设条件时,调用备份区固件以保证嵌入式系统的正常运行。通过这种方式,可以避免嵌入式系统死机或者系统崩溃的风险。
119.请参见图6,图6是本技术实施例提供的一种固件升级装置的结构示意图,具体的,如图6所示,该固件升级装置60,可以包括:
120.接收单元601,用于获取固件升级文件,将该固件升级文件存储至升级区。
121.处理单元602,用于获取待升级固件的第一版本信息;如果备份区不为空,则获取该备份区存储的备份区固件的第二版本信息;若该第一版本信息与该第二版本信息不相同,则将该待升级固件对应的该第一版本信息指示的固件覆盖存储至该备份区;根据该升级区的固件升级文件,对第二存储空间进行存储操作,以便于将该升级区的固件升级文件复制到该第二存储空间对该待升级固件进行升级。
122.在一种实现方式中,该固件升级装置60还可以包括发送单元603,用于向服务器发送下载请求;接收单元601,还可以用于接收该服务器发送的第一分段数据和该第一分段数据的第一校验值;其中,该第一分段数据由该固件升级文件拆分而成;处理单元602,还可以用于根据该第一校验值对该第一分段数据进行校验,确定校验成功后请求第二分段数据以及第二分段数据的第二校验值,该第二分段数据也是由该固件升级文件拆分而成。
123.在一种实现方式中,接收单元601,还可以用于在成功接收该固件升级文件的数据后,接收该固件升级文件的整体校验值;处理单元602,还可以用于根据该整体校验值对该固件升级文件进行校验,并在校验成功后进行校验成功处理。
124.在一种实现方式中,处理单元602,还可以用于在获取待升级固件的第一版本信息之后,若该备份区为空,则将该待升级固件对应的第一版本信息指示的固件存储至该备份
区。
125.在一种实现方式中,处理单元602,还可以用于在该固件升级装置60满足第一预设条件的情况下,检测备份区是否为空;若该备份区不为空,则根据该备份区固件,对第二存储空间进行存储操作,以便于将该备份区固件存储至该第二存储空间并运行该备份区固件。
126.在一种实现方式中,该固件升级装置60满足第一预设条件可以包括以下任一项:该固件升级装置60断电导致该待升级固件升级失败;该待升级固件异常导致该待升级固件升级失败。
127.在一种实现方式中,对第二存储空间进行存储操作之前,处理单元602,还可以用于确定该第二存储空间是否为空;若不为空,则清空该第二存储空间的数据,以便于执行对该第二存储空间进行存储操作。
128.本技术实施例和图2-图5所示方法实施例基于同一构思,其带来的技术效果也相同,具体原理请参照图2-图5所示实施例的描述,在此不赘述。
129.请参见图7,图7是本技术实施例提供的一种智能设备的结构示意图,具体的,如图7所示,该智能设备70可以包括接收器701、发送器702、存储器703和处理器704,接收器701、发送器702、存储器703和处理器704通过一条或多条通信总线连接。
130.接收器701可以用于接收数据,例如,接收器701可以用于接收固件升级文件。发送器702可以用于发送数据,例如,发送器702可以用于发送下载请求。
131.存储器703可以包括只读存储器和随机存取存储器,并向处理器704提供指令和数据。存储器703的一部分还可以包括非易失性随机存取存储器。存储器703还可以分为第一存储空间和第二存储空间,其中,第一存储空间可以是快闪存储器(flash),例如nor flash、nand flash,第二存储空间可以是随机存取存储器(random access memory,ram),例如动态随机存取存储器(dynamic random access memory,dram)、静态随机存取存储器(static random-access memory,sram)。
132.处理器704可以是中央处理单元(central processing unit,cpu),该处理器704还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器,可选的,该处理器704也可以是任何常规的处理器等。其中:
133.存储器703,用于存储程序指令。
134.处理器704,用于调用存储器703中存储的程序指令,以用于:
135.获取固件升级文件,将该固件升级文件存储至升级区;
136.获取待升级固件的第一版本信息;
137.如果备份区不为空,则获取该备份区存储的备份区固件的第二版本信息;
138.若该第一版本信息与该第二版本信息不相同,则将该待升级固件对应的该第一版本信息指示的固件覆盖存储至该备份区;
139.根据该升级区的固件升级文件,对第二存储空间进行存储操作,以便于将该升级区的固件升级文件复制到该第二存储空间对该待升级固件进行升级。
140.在一种实现方式中,处理器704,还可以用于向服务器发送下载请求;接收该服务器发送的第一分段数据和该第一分段数据的第一校验值;其中,该第一分段数据由该固件升级文件拆分而成;根据该第一校验值对该第一分段数据进行校验,确定校验成功后请求第二分段数据以及第二分段数据的第二校验值,该第二分段数据也是由该固件升级文件拆分而成。
141.在一种实现方式中,处理器704,还可以用于在成功接收该固件升级文件的数据后,接收该固件升级文件的整体校验值;根据该整体校验值对该固件升级文件进行校验,并在校验成功后进行校验成功处理。
142.在一种实现方式中,处理器704,还可以用于在获取待升级固件的第一版本信息之后,若该备份区为空,则将该待升级固件对应的第一版本信息指示的固件存储至该备份区。
143.在一种实现方式中,处理器704,还可以用于在该智能设备70满足第一预设条件的情况下,检测备份区是否为空;若该备份区不为空,则根据该备份区固件,对第二存储空间进行存储操作,以便于将该备份区固件存储至该第二存储空间并运行该备份区固件。
144.在一种实现方式中,该智能设备70满足第一预设条件可以包括以下任一项:该智能设备70断电导致该待升级固件升级失败;该待升级固件异常导致该待升级固件升级失败。
145.在一种实现方式中,对第二存储空间进行存储操作之前,处理器704,还可以用于确定该第二存储空间是否为空;若不为空,则清空该第二存储空间的数据,以便于执行对该第二存储空间进行存储操作。
146.需要说明的是,图7对应的实施例中未提及的内容以及各个步骤的具体实现方式可参见图2-图5所示实施例以及前述内容,这里不再赘述。
147.本技术实施例还提供一种计算机可读存储介质,计算机存储介质存储有计算机程序,该计算机程序当被处理器运行时,使处理器执行如图2-图5所示方法实施例中所执行的步骤。
148.以上所揭露的仅为本技术的部分实施例而已,当然不能以此来限定本技术之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本技术权利要求所作的等同变化,仍属于本技术所涵盖的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1