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

一种升级方法、装置及电子设备与流程

2022-06-01 13:29:38 来源:中国专利 TAG:


1.本发明涉及通信技术领域,尤其涉及一种升级方法、装置及电子设备。


背景技术:

2.目前物联网((the internet of things,iot))行业发展迅猛,越来越多的设备都接入到了云端,传统的本地化控制更多的变成了云端与本地进行联动处理。
3.对于目前物联网等相关的网络设备而言,主要为嵌入式设备,通过内置gd32芯片或者stm32芯片控制设备的运行。在对网络设备进行远程升级时,通常是在设备基于芯片中存储bootloader程序代码的区域运行的情况下,下载服务端新配置的固件,而后将新配置的固件更新于存储app程序代码的区域,固件下载这一阶段所需时间根据固件大小、网络状态等的不同,造成升级所需时间不可控,这一时期app程序代码无法运行,无法满足实时性要求,可见,现有技术在下载升级固件的过程中网络设备的业务无法正常运行。


技术实现要素:

4.本发明实施例提供一种升级方法、装置及电子设备,以解决在升级过程中网络设备的业务无法正常运行的问题。
5.第一方面,本发明实施例提供一种升级方法,包括:
6.在运行第一分区的业务程序代码的过程中,下载服务器发送的第一固件信息;
7.将所述第一固件信息存储至预设区域;
8.在所述第一分区的业务程序代码运行结束的情况下,运行第二分区的启动装载代码;
9.在运行所述第二分区的启动装载代码的过程中,基于所述预设区域存储的所述第一固件信息,对所述第一分区进行固件升级。
10.第二方面,本发明实施例提供了一种升级装置,包括:
11.下载模块,用于在运行第一分区的业务程序代码的过程中,下载服务器发送的第一固件信息;
12.存储模块,用于将所述第一固件信息存储至预设区域;
13.第一运行模块,用于在所述第一分区的业务程序代码运行结束的情况下,运行第二分区的启动装载代码;
14.升级模块,用于在运行所述第二分区的启动装载代码的过程中,基于所述预设区域存储的所述第一固件信息,对所述第一分区进行固件升级。
15.第三方面,本发明实施例提供了一种电子设备,该电子设备包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤。
16.本发明实施例通过在运行第一分区的业务程序代码的过程中,将服务器发送的第一固件信息存储至预设区域,在第一分区的业务程序代码运行结束的情况下,运行第二分
区的启动装载代码,在运行第二分区的启动装载代码的过程中,对第一分区进行本地升级操作,升级速度快,对业务影响小,可以实现在网络设备下载升级固件的过程中正常运行业务。
附图说明
17.为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
18.图1是本发明实施例提供的升级方法的流程图之一;
19.图2是本发明实施例提供的场景实例图;
20.图3是本发明实施例提供的升级方法的流程图之二;
21.图4是本发明实施例提供的升级方法的流程图之三;
22.图5是本发明实施例提供的升级方法的流程图之四;
23.图6是本发明实施例提供的升级装置的结构示意图;
24.图7是本发明实施例提供的电子设备的结构示意图。
具体实施方式
25.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
26.本发明的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
27.下面结合附图,通过具体的实施例及其应用场景对本发明实施例提供的升级方法进行详细地说明。
28.参见图1,图1是本发明实施例提供的一种升级方法的流程图,如图1所示,包括以下步骤:
29.步骤101、在运行第一分区的业务程序代码的过程中,下载服务器发送的第一固件信息。
30.步骤102、将所述第一固件信息存储至预设区域。
31.步骤103、在所述第一分区的业务程序代码运行结束的情况下,运行第二分区的启动装载代码。
32.步骤104、在运行所述第二分区的启动装载代码的过程中,基于所述预设区域存储的所述第一固件信息,对所述第一分区进行固件升级。
33.在本发明实施例中,上述升级方法可以应用于网络设备,具体为嵌入式的网络设
备中,从而实现微控制单元(microcontroller unit,mcu)芯片的固件升级,上述mcu芯片可以为例如gd32芯片或者stm32芯片等,在此不作限定。
34.上述第一分区和第二分区,可以为mcu芯片中的闪存(flash)存储区中的不同存储区域,二者的存储地址范围互不重合,用于存放相应的程序代码。
35.在上述步骤101中,上述第一分区通常为闪存存储区中的应用程序(application,app)区域,上述第一分区可以存储应用程序的运行代码和应用程序的相关数据,用于实现网络设备的业务功能。
36.上述运行上述第一分区的业务程序代码的步骤,可以相当于网络设备运行应用程序的过程。可以理解的是,由于在运行上述第一分区的业务程序代码时,会存在接收服务器发送的数据的过程。例如,在运行地图相关的应用程序的过程中,服务器可以向网络设备发送加密后的地图数据。因此,在此过程中,上述第一分区还可以包括用于控制网络设备的通信模块,与服务器进行数据交互的代码。
37.当然,上述第一分区中还可以存储有用于解码校验,如循环冗余校验码(cyclic redundancy check,crc)校验、数据长度校验、解压、解差分等代码,在接收到服务器发送的数据信息时,对数据信息进行解码校验下载。
38.上述下载服务器发送的第一固件信息的步骤,可以在服务器中存储的上述网络设备的版本信息与网络设备自身的版本信息不一致的情况下执行。换句话说,在上述下载服务器发送的第一固件信息的步骤之前,网络设备可以由通信设备向服务器发送网络设备的版本信息,若网络设备的版本信息与服务器中存储的网络设备的版本信息不一致,则说明网络设备需要进行固件升级。
39.在此种情况下,服务器可以向网络设备发送用于升级的第一固件信息,由于上述第一分区中已经存储了控制通信模块与服务器进行通信的代码信息和解码校验的代码信息,因此上述网络设备在运行第一分区的业务程序代码的过程中,可以同时下载上述第一固件信息,而不会影响业务程序代码的正常运行。
40.需要说明的是,上述第一固件信息在全量升级的场景下,可以为用于升级上述第一分区中存储的全部业务程序代码的代码信息,在升级时替换上述第一分区中存储的全部业务程序代码;与之对应地,上述预设区域的大小可以与上述第一分区的大小相同。
41.上述第一固件信息在差分升级的场景下,也可以为与上述第一分区中存储的业务程序代码存在差异的代码信息,在升级时替换上述第一分区中存储的部分业务程序代码;与之对应地,上述预设区域的大小可以小于上述第一分区的大小。
42.在上述步骤102中,由于在运行第一分区的业务程序代码的过程中,不能对第一分区中存储的业务程序代码进行修改,因此,可以先将下载后的第一固件信息存放于预设区域,以便后续的升级操作。上述预设区域可以为闪存存储区中的新固件(new firmware)区,与上述第一分区和第二分区的存储地址范围均不重合。
43.在上述步骤103和104中,上述第一分区的业务程序代码运行结束的情况,可以为上述第一分区中的业务运行完成的情况,该情况可以由用户触发。例如,用户指示网络设备关机或者应用程序停止运行;也可以在预设的时间段内未接收到用户的输入的情况下,确认上述第一分区中的业务程序代码运行结束。
44.当然,在其他可选的实施例中,在第一分区业务任务空闲的情况下,也可以执行下
述操作。
45.在此类情况下,若上述预设区域不存在上述第一固件信息,则可以说明网络设备无需进行固件升级,此时网络设备可以进入深度休眠状态,等待下次被唤醒;若上述预设区域存在上述第一固件信息,则说明网络设备需要进行固件升级,此时网络设备可以运行上述第二分区的启动装载代码。
46.上述第二分区可以为上述闪存存储区中的启动装载(bootloader)区,用于基于上述第一固件信息,对上述第一分区进行固件升级。由于预先已在预设区域存储了用于升级的第一固件信息,因此在运行上述第二分区的启动装载代码时,可以直接利用第一固件信息替换上述第一分区中存储的至少部分业务程序代码,减少了第二分区的启动装载代码的运行时间,从而提升了固件升级的效率。
47.同时,由于在运行第二分区的启动装载代码时,无需进行固件的下载,从而加快了升级过程,同时上述第二分区中无需存储用于控制网络设备的通信模块,与服务器进行数据交互的代码信息,和用于解码校验的代码信息,可以减小上述第二分区的大小,从而增大了闪存(flash)存储区中其他分区的大小。
48.需要说明的是,当上述网络设备重新上电启动时,可以先运行第二分区的启动装载代码,检测第三分区中的标识信息是否为第一标识,若是则对第一分区执行固件升级操作,若否则可以正常运行第一分区的业务程序代码。
49.本发明实施例通过在运行第一分区的业务程序代码的过程中,将服务器发送的第一固件信息存储至预设区域,在第一分区的业务程序代码运行结束的情况下,运行第二分区的启动装载代码,在运行第二分区的启动装载代码的过程中,基于预设区域存储的第一固件信息,对第一分区进行固件升级,从而可以实现在网络设备下载升级固件的过程中正常运行业务。
50.可选地,在上述步骤102之后,上述方法还可以包括:
51.将第三分区中的标识信息更新为第一标识,所述标识信息用于指示网络设备的运行状态,所述第一标识用于指示所述网络设备处于待更新状态;
52.上述步骤104具体可以包括:
53.在检测到所述标识信息为所述第一标识的情况下,基于所述预设区域存储的所述第一固件信息,对所述第一分区进行固件升级。
54.在本发明实施例中,上述第三分区可以为上述闪存(flash)存储区中,与上述第一分区、第二分区和预设区域相异的存储区域。具体地,上述第三分区可以为标识(config)区,通常用于存放指示网络设备运行状态的标识信息。
55.在将上述第一固件信息存储于预设区域后,可以将上述第三分区的标识信息更新为第一标识,指示网络设备处于待更新状态。这样,在上述第一分区的业务程序代码结束运行后,可以检测上述第三分区中的标识信息,在上述标识信息为第一标识的情况下,运行上述第二分区的启动装载代码,对上述第一分区进行固件升级。
56.本发明实施例通过设置第三分区,在进行固件升级前检测第三分区的标识信息,从而可以实现在需要进行升级时运行第二分区中的启动装载代码,提升了升级的效率。
57.当然,上述第三分区还可以存放上述第一分区中,各个应用程序的代码类型的标记,以及网络设备的版本信息等,以便于在网络设备运行其他分区的代码时,获取相应的标
记或信息。
58.可选地,在上述步骤104之前,所述方法还包括:
59.将所述第一分区的业务程序代码存储至第四分区,以对所述第一分区的业务程序代码进行备份。
60.在本发明实施例中,上述第四分区可以为闪存存储区的备份(backup)区,上述第四分区的大小可以与上述第一分区的大小一致,用于存放上述第一分区中的业务程序代码,从而可以在对上述第一分区进行固件升级之前,先对第一分区的业务程序代码进行备份,在固件升级后出现报错的情况下基于备份对上述第一分区进行还原,从而提升了网络设备运行的稳定性。
61.进一步地,在上述步骤104之后,上述方法还包括:
62.将所述第三分区中的标识信息更新为第二标识,所述第二标识用于指示试运行所述第一分区的业务程序代码;
63.在检测到所述标识信息为所述第二标识的情况下,试运行所述第一分区的业务程序代码;
64.在所述第一分区的业务程序代码试运行异常的情况下,基于所述第四分区存储的业务程序代码,还原所述第一分区;
65.将所述第三分区中的标识信息更新为第三标识,所述第三标识用于指示所述网络设备处于放弃更新状态;
66.在所述第一分区的业务程序代码试运行正常的情况下,将所述第三分区中的标识信息更新为第四标识,所述第四标识用于指示所述网络设备处于完成更新状态。
67.在本发明实施例中,在上述第一区域固件升级完成后,为了确定升级后的第一区域的业务程序代码是否可以正常运行,可以将上述第三分区的标识信息更新为第二标识,用于指示网络设备基于第一区域更新后的业务程序代码进行试运行。
68.上述第一分区的业务程序代码试运行异常的情况,可以为更新过程中,中断向量表的设置错误导致的代码卡死;或者网络设备与服务器的通信异常,导致网络设备致不能连接上服务器;或者服务器检测到网络设备中部分功能模块异常等情况,在此不作进一步地限定。
69.在此类情况下,网络设备基于当前第一分区的业务程序代码无法正常运行,因此可以对上述第一分区执行还原操作。
70.具体地,本发明实施例可以将此前备份存储在上述第四分区中的业务程序代码替换上述第一分区中存储的业务程序代码,而在替换后,可以将上述第三分区的标识信息修改为第三标识,指示网络设备处于放弃更新的状态。这样,可以避免网络设备出现无法正常运行的情况,提升了网络设备的稳定性。
71.而在上述第一分区的业务程序代码试运行正常的情况下,则可以将上述第三分区中的标识信息更新为第四标识,用于指示所述网络设备处于完成更新状态。
72.需要说明的是,上述试运行的次数可以为一次,在一次试运行上述第一区域更新后的业务程序代码异常后,基于第四分区存储的业务程序代码,还原第一分区。当然,为了避免偶然因素,例如网络波动导致的试运行异常,也可以多次试运行上述第一区域更新后的业务程序代码,在多次试运行上述第一区域更新后的业务程序代码均异常的情况下,基
于第四分区存储的业务程序代码,还原第一分区。
73.与之对应地,上述试运行所述第一分区的业务程序代码的步骤之后,上述方法还可以包括:
74.获取试运行所述第一分区的业务程序代码的次数;
75.在试运行所述第一分区的业务程序代码的次数大于或等于预设值的情况下,基于每次试运行所述第一分区的业务程序代码的结果,判断所述第一分区的业务程序代码的试运行是否正常;
76.其中,每次试运行所述第一分区的业务程序代码后,所述试运行所述第一分区的业务程序代码的次数加1。
77.具体地,上述试运行上述第一分区的业务程序代码的次数可以存储于上述第三区域中,并与上述第二标识关联,从而在每次试运行上述第一分区的业务程序代码时,可以获取到当前的试运行次数。上述预设阈值可以为1次,也可以为3次或者5次等,在此不作进一步的限定。
78.在其他可选的实施例中,电子设备也可以预设试运行次数,在每次试运行后,将剩余试运行次数减1,在当前次试运行正常的情况下,判断试运行正常,在当前次试运行异常的情况下,若剩余试运行次数为0,则判断试运行异常,若剩余试运行次数大于0,则进行下一次试运行,直至剩余试运行次数为0。
79.本发明实施例通过多次运行上述第一区域更新后的业务程序代码,在多次运行上述第一区域更新后的业务程序代码均异常的情况下,基于第四分区存储的业务程序代码,还原第一分区,从而避免了偶然因素导致运行异常的情况下的还原操作,进一步提升了网络设备运行的稳定性。
80.应理解,上述运行所述第二分区的启动装载代码的过程中,可以预先检测上述第三分区中的标识信息,在检测到上述标识信息为第一标识情况下,对上述第一分区进行固件升级;在检测到上述标识信息不为第一标识,例如为第二标识、第三标识或者第四标识的情况下,不进行固件升级。
81.进一步地,在检测到上述标识信息为第二标识的情况下,则表明上述第一分区的业务程序代码已经基于上述第一固件信息进行升级,此时可以对当前第一分区的业务程序代码进行一次或者多次的试运行。在每次试运行均异常的情况下,对上述第一分区进行还原,并将上述标识信息修改为第三标识。
82.每次对当前第一分区的业务程序代码进行试运行后,都可以检测上述标识信息,在上述标识信息为第二标识的情况下,继续执行试运行的步骤。同时,每次对当前第一分区的业务程序代码进行试运行后,还可以获取当前试运行的次数,在试运行次数大于或等于预设阈值的情况下,网络设备退出试运行状态,并对试运行是否正常进行判断。具体地,在一实施例中,若多次试运行均异常,可以判断上述网络设备试运行异常,而若存在一次试运行正常的情况,则可以判断上述网络设备试运行正常。
83.在检测到上述标识信息为第三标识的情况下,网络设备可以退出试运行状态,回到正常运行备份的业务程序代码的步骤。在检测到上述标识信息为第四标识的情况下,网络设备可以退出试运行状态,正常运行更新后的业务程序代码。
84.本发明实施例通过获取第三分区中的标识信息,确定网络设备的运行状态,提升
了网络设备运行时的灵活性。
85.进一步地,在上述步骤104之后,上述方法还可以包括:
86.在运行所述第二分区的启动装载代码的过程中,启用看门狗程序,所述看门狗程序用于在预设时间段内未执行第一操作的情况下,执行复位操作;
87.在运行所述第一分区的业务程序代码或试运行所述第一分区的业务程序代码的过程中,执行所述第一操作。
88.在本发明实施例中,为了避免出现代码运行时卡死,无法复位的情况。在对上述第一分区进行固件升级后,可以开启看门狗程序,用于在预设时间段内未执行第一操作的情况下,执行复位操作。上述第一操作,可以为喂狗操作,具体可以为将看门狗程序中的定时器的计时清零,或者关闭看门狗程序等操作。
89.在运行上述第一分区的业务程序代码的过程中,若出现代码卡死的情况,网络设备无法在预设时间段内执行上述第一操作,此时网络设备可以执行复位操作,跳转至运行上述第二区域的启动装载代码的步骤中。
90.而在试运行上述第一分区的业务程序代码的过程中,同样可以执行第一操作。结合上例进行说明,若出现代码卡死的情况,此时可以看作网络设备当前次的试运行异常,网络设备可以执行复位操作,跳转至运行上述第二区域的启动状态代码的步骤中,从而避免了网络设备卡死在试运行的状态下无法跳出的问题,提升了网络设备运行的稳定性。
91.当然,在其他可选的实施例中,网络设备也可以在运行上述第一分区的业务程序代码或试运行上述第一分区的业务程序代码的过程中,出现无法连接至服务器或设备功能异常的情况下执行上述复位操作,在此不作进一步地限定。
92.参照图2,图2为网络设备由gd32芯片作为控制单元的场景实例图,下面将以采用gd32芯片的网络设备首次上电的场景为例,详细阐述上述升级方法的具体流程:
93.1)设备首次上电,在第二分区(bootloader区)中会读取第三分区(config区)的标识信息,此时第三分区为空,对该区域写入默认配置数据(写入芯片id加密信息,标识正常代码,无需升级等信息)并将运行区指向第一分区。接着会开启芯片的看门狗,并引导代码跳转到第一分区执行。
94.2)第一分区(app区)的执行逻辑如图3和图4所示,图4为图3虚线框中的详细流程。在进入运行第一分区的业务程序代码的循环前初始化硬件设备并将设备版本信息发送给服务器,在循环中“喂狗”,避免看门狗复位系统,然后执行相应的业务代码,并将数据发送到服务器保存,若无升级版本,则系统在完成工作后会进行休眠状态。
95.3)第一分区的业务程序代码在退出休眠后会再次发送版本信息给服务器(服务器在设备在线时也可主动获取设备版本信息),然后继续业务代码的执行,若在某次工作中服务器对比版本发现需要升级,则会通知网络设备可进行升级,gd32芯片根据通信模块通过网络获取服务器加密的新固件,完成解码校验(如循环冗余校验码(cyclic redundancy check,crc)校验、数据长度校验、解压、解差分等)后,将新固件放到预设区域(new firmware区),并修改第三分区的标识信息(以便后续第二分区对固件进行搬移处理),即完成了空中的固件下载升级(firmware over-the-air,fota)工作。在第一分区完成业务工作后,在进入休眠前会判断是否有待升级的代码存在于预设区域,若存在则第一分区会重启gd32芯片跳转到第二分区中,此时系统完成了当前的业务工作,重启系统对业务影响可降
到最低。
96.4)重启后代码回到图3所示的第二分区中,根据读取到第三分区的第一标识,此时有升级代码在预设区域,第二分区则会执行对第一分区的代码更新操作,首先将第一分区的固件拷贝到第四分区(backup区),作为备份存储,然后将预设区域的固件放入第一分区,更新第三分区的标识信息依次为:升级中、试运行代码、试运行次数3次、完成升级。在判断第一分区代码类型后,若为试运行代码,则试运行计数减1,然后开启看门狗,跳转到第一分区执行试运行代码。
97.5)此时试运行代码会执行图5所示的流程,并在确认各项功能正常后更改第三分区标识信息为完成升级。继而保持在第一分区执行业务代码并再次等待新的升级指令。
98.上述为正常的fota升级整个逻辑实现,但如果试运行的固件有问题导致运行异常,则会引发下述操作:
99.6)试运行代码若无异常情况,则在第一分区中会主动将第三分区的标识信息改为完成升级,回到步骤5)。但针对试运行的代码运行可能出现的异常情况设计了多种解决方案,主要有:一、如图4所示,代码运行异常如中断向量表错误,代码卡死等,此时出现的无“喂狗”动作,会导致gd32芯片看门狗复位;二、设备与服务器的通信异常,不能连接上服务器,在尝试一段时间后,设备会自行复位到第二分区中;三、设备连接上服务器,服务器发现设备部分功能异常,则会发送复位指令给设备。复位信号会使gd32的运行回到图3的框图逻辑中。
100.7)当出现上述三种情况的复位时,此时由于第三分区标识信息为第二标识,即试运行代码,第二分区仍会继续给与升级的试运行固件两次试运行机会(避免因网络原因造成的意外回退),若在后两次的试运行中代码运行正常则回到步骤5)中,若代码异常问题仍未排除,则会再次回到图3的第二分区中。
101.8)第二分区中判断试运行固件异常,且试运行计数为0,则会进行回退操作,此时则会将步骤4)中备份到第四分区中的代码重新迁移到第一分区中,由于原代码功能正常,此时会将第三分区的标识信息修改为第三标识,即放弃升级,继而跳转到第一分区,即回到步骤3)中的操作中。回退操作完成。
102.在本发明实施例中,一并参照图3-5,在网络设备上电后,可以首先运行第二分区的启动装载代码,检测第三分区中的标识信息,在检测到未存在标识信息,即表示网络设备首次上电,此时可以将标识信息更新为指示网络设备完成更新的第四标识,并在开启看门狗后,正常运行第一分区的业务程序代码。
103.在检测到第一标识的情况下,先对第一分区进行备份处理,将第一分区中的业务程序代码拷贝至第四区域,再根据预设区域内已存储的新固件信息,对第一分区进行固件升级,在升级完成后将标识信息修改为指示网络设备试运行的第二标识,跳转回第一分区进行试运行。
104.在任一次的试运行正常的情况下,则说明第一分区的业务程序代码可以正常运行,可以将第三分区的标识信息更新为指示网络设备完成更新的第四标识,继而保持在第一分区执行业务程序代码,同时等待下次升级指令。
105.而在当前次的试运行异常的情况下,且剩余试运行次数为0时,可以判断试运行出现异常,此时可以跳转回第二分区,根据第四分区的备份还原第一分区,而后将标识信息更
新为指示网络设备放弃更新的第三标识,由于还原后第一分区可以正常运行,此时可以开启看门狗,正常运行第一分区的业务程序代码。
106.在正常运行第一分区的业务程序代码的过程中,可以先将网络设备的版本信息发送给服务器,由服务器进行版本比对,判断是否需要进行固件升级。
107.进入运行业务程序代码的循环中,定时完成喂狗操作,即将看门狗计时器计时清零,避免正常运行的情况下复位,直至业务完成。
108.在业务完成后,若需要进行固件升级,第一分区可以通过通信模块下载第一固件信息,将其存储在预设区域内,并将标识信息修改为指示网络设备待更新的第一标识,而后运行第二分区的启动装载代码。
109.若不需要进行固件升级,网络设备可以进入休眠状态,等待下次唤醒。
110.本发明实施例中的远程fota升级的固件下载在第一分区运行业务程序代码时可以同时进行,固件下载不中断业务程序代码的执行,仅在网络设备进入休眠前,进行复位升级操作,此时对业务影响最小。避免了其他升级方案中,设备停机在启动装载代码中下载固件造成的业务中断的情况。
111.相应地,第二分区的代码不需要完成下载操作,主要实现应用编程(in application programming,iap)功能程序引导功能,主要操作闪存存储区,不操作外部模块,业务代码小,且代码运行时间短。
112.同时,在第二分区中启动看门狗,防止网络设备在执行升级代码过程中可能出现的失联、失效情况;多种机制保证升级代码异常时,网络设备可将备份的正常代码进行回退操作,有效防止因升级造成设备异常须返厂维修的情况。
113.需要说明的是,本发明实施例提供的升级方法,执行主体可以为升级装置,或者该升级装置中的用于执行加载升级方法的控制模块。本发明实施例中以升级装置执行加载升级方法为例,说明本发明实施例提供的升级方法。
114.参见图6,图6是本发明实施例提供的升级装置600的结构图,如图6所示,升级装置600包括:
115.下载模块610,用于在运行第一分区的业务程序代码的过程中,下载服务器发送的第一固件信息;
116.存储模块620,用于将所述第一固件信息存储至预设区域;
117.第一运行模块630,用于在所述第一分区的业务程序代码运行结束的情况下,运行第二分区的启动装载代码;
118.升级模块640,用于在运行所述第二分区的启动装载代码的过程中,基于所述预设区域存储的所述第一固件信息,对所述第一分区进行固件升级。
119.本发明实施例通过下载模块610,在运行第一分区的业务程序代码的过程中,下载服务器发送的第一固件信息,通过存储模块620将所述第一固件信息存储至预设区域,并通过第一运行模块630,在所述第一分区的业务程序代码运行结束的情况下,运行第二分区的启动装载代码,最后通过升级模块640在运行所述第二分区的启动装载代码的过程中,基于所述预设区域存储的所述第一固件信息,对所述第一分区进行固件升级,从而可以实现在网络设备下载升级固件的过程中正常运行业务。
120.可选地,上述升级装置600还可以包括:
121.第一更新模块,用于将第三分区中的标识信息更新为第一标识,所述标识信息用于指示网络设备的运行状态,所述第一标识用于指示所述网络设备处于待更新状态;
122.上述升级模块640可以包括:
123.升级单元,用于在检测到所述标识信息为所述第一标识的情况下,基于所述预设区域存储的所述第一固件信息,对所述第一分区进行固件升级。
124.可选地,上述升级装置600还可以包括:
125.备份模块,用于将所述第一分区的业务程序代码存储至第四分区,以对所述第一分区的业务程序代码进行备份。
126.可选地,上述升级装置600还可以包括:
127.第二更新模块,用于将所述第三分区中的标识信息更新为第二标识,所述第二标识用于指示试运行所述第一分区的业务程序代码;
128.第二运行模块,用于在检测到所述标识信息为所述第二标识的情况下,试运行所述第一分区的业务程序代码;
129.还原模块,用于在所述第一分区的业务程序代码试运行异常的情况下,基于所述第四分区存储的业务程序代码,还原所述第一分区;
130.第三更新模块,用于将所述第三分区中的标识信息更新为第三标识,所述第三标识用于指示所述网络设备处于放弃更新状态;
131.第四更新模块,用于在所述第一分区的业务程序代码试运行正常的情况下,将所述第三分区中的标识信息更新为第四标识,所述第四标识用于指示所述网络设备处于完成更新状态。
132.可选地,上述升级装置600还可以包括:
133.启用模块,用于在运行所述第二分区的启动装载代码的过程中,启用看门狗程序,所述看门狗程序用于在预设时间段内未执行第一操作的情况下,执行复位操作;
134.执行模块,用于在运行所述第一分区的业务程序代码或试运行所述第一分区的业务程序代码的过程中,执行所述第一操作。
135.本发明实施例中的升级装置600可以是装置,也可以是终端中的部件、集成电路、或芯片。该装置可以是移动电子设备,也可以为非移动电子设备。示例性的,移动电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、可穿戴设备、超级移动个人计算机(ultra-mobile personal computer,umpc)、上网本或者个人数字助理(personal digital assistant,pda)等,非移动电子设备可以为服务器、网络附属存储器(network attached storage,nas)、个人计算机(personal computer,pc)、电视机(television,tv)、柜员机或者自助机等,本发明实施例不作具体限定。
136.本发明实施例中的升级装置600可以为具有操作系统的装置。该操作系统可以为安卓(android)操作系统,可以为ios操作系统,还可以为其他可能的操作系统,本发明实施例不作具体限定。
137.本发明实施例提供的升级装置600能够实现图1的方法实施例中升级装置实现的各个过程,为避免重复,这里不再赘述。
138.可选的,本发明实施例还提供一种电子设备700,包括处理器702,存储器701,存储在存储器701上并可在所述处理器702上运行的程序或指令,该程序或指令被处理器702执
行时实现上述升级方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
139.需要注意的是,本发明实施例中的电子设备包括上述所述的移动电子设备和非移动电子设备。
140.其中,所述处理器为上述实施例中所述的电子设备中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等。
141.本发明实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述升级方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
142.应理解,本发明实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。
143.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本发明实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
144.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
145.上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
再多了解一些

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

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

相关文献