固件升级方法、装置、设备及计算机可读存储介质与流程

文档序号:24072352发布日期:2021-02-26 15:53阅读:152来源:国知局
固件升级方法、装置、设备及计算机可读存储介质与流程

[0001]
本公开涉及嵌入式设备技术,尤其涉及一种固件升级方法、装置、设备及计算机可读存储介质。


背景技术:

[0002]
随着物联网技术的发展,很多电子设备都接入了网络。比如众多的仪器仪表也能够加入网络,从而能够实现自动化的采集数据。
[0003]
其中,接入物联网的很多物联网终端都是采用固件升级的方式更新功能。一般都是通过服务器向物联网终端发送完整的固件升级包,物联网终端对接收的固件升级包进行存储,并写到处理器中。
[0004]
随着物联网终端的迅速发展,物联网终端的功能增多,代码量也越来越大。在固件升级过程中,服务器下发一包数据后需要等待物联网终端确认接收成功后,服务器才下发下一包数据,导致固件升级时间大大加长。


技术实现要素:

[0005]
本公开提供一种固件升级方法、装置、设备及计算机可读存储介质,以解决现有技术中固件升级时间过长的问题。
[0006]
本公开的第一个方面是提供一种固件升级方法,所述方法应用于物联网终端中的处理器,所述物联网终端中包括所述处理器、通讯模组和存储单元,所述方法包括:
[0007]
重复执行以下步骤,直至确定所述通讯模组接收完毕服务器下发的子数据包:在从所述通讯模组中获取子数据包的过程中,若确定符合预设条件,则控制所述通讯模组停止发送子数据包,其中,所述子数据包是服务器持续发送给所述通讯模组的,所述子数据包是对固件升级包进行拆分得到的;将接收到的子数据包,存储入存储单元中;
[0008]
将所述存储单元中存储的各子数据包,写入所述处理器的程序区。
[0009]
本公开的另一个方面是提供一种固件升级装置,所述装置应用于物联网终端中的处理器,所述物联网终端中包括所述处理器、通讯模组和存储单元,所述装置包括:
[0010]
控制单元,用于重复执行以下步骤,直至确定所述通讯模组接收完毕服务器下发的子数据包:在从所述通讯模组中获取子数据包的过程中,若确定符合预设条件,则控制所述通讯模组停止发送子数据包,其中,所述子数据包是服务器持续发送给所述通讯模组的,所述子数据包是对固件升级包进行拆分得到的;将接收到的子数据包,存储入存储单元中;
[0011]
写入单元,用于将所述存储单元中存储的各子数据包,写入所述处理器的程序区。
[0012]
本公开的又一个方面是提供一种固件升级设备,包括:
[0013]
存储器;
[0014]
处理器;以及
[0015]
计算机程序;
[0016]
其中,所述计算机程序存储在所述存储器中,并配置为由所述处理器执行以实现
如上述第一方面所述的固件升级方法。
[0017]
本公开的又一个方面是提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现如上述第一方面所述的固件升级方法。
[0018]
本公开提供的固件升级方法、装置、设备及计算机可读存储介质的技术效果是:
[0019]
本公开实施例提供的固件升级方法、装置、设备及计算机可读存储介质,应用于物联网终端中的处理器,物联网终端中包括处理器、通讯模组和存储单元,方案包括:重复执行以下步骤,直至确定通讯模组接收完毕服务器下发的子数据包:在从通讯模组中获取子数据包的过程中,若确定符合预设条件,则控制通讯模组停止发送子数据包,其中,子数据包是服务器持续发送给通讯模组的,子数据包是对固件升级包进行拆分得到的;将接收到的子数据包,存储入存储单元中;将存储单元中存储的各子数据包,写入处理器的程序区。本公开实施例提供的固件升级方法、装置、设备及计算机可读存储介质中,可以控制通讯模组在一定情况下停止向处理器发送子数据包,即使通讯模组持续接收服务器下发的子数据包,处理器也能够正常处理数据,因此能够减少固件升级时间,提高固件升级速度。
附图说明
[0020]
图1为一示例性实施例示出的固件升级过程示意图;
[0021]
图2a为本申请一示例性实施例示出的物联网终端的结构示意图;
[0022]
图2b为本申请另一示例性实施例示出的物联网终端的结构示意图;
[0023]
图3为本申请一示例性实施例示出的固件升级方法的流程图;
[0024]
图4为本申请一示例性实施例示出的数据传输流程示意图;
[0025]
图5为本申请另一示例性实施例示出的固件升级方法的流程图;
[0026]
图6为本申请一示例性实施例示出的子数据包的处理过程的流程图;
[0027]
图7为本申请一示例性实施例示出的固件升级装置的结构图;
[0028]
图8为本申请另一示例性实施例示出的固件升级装置的结构图;
[0029]
图9为本申请一示例性实施例示出的固件升级设备的结构图。
具体实施方式
[0030]
目前存在大量的物联网终端设备,这些终端可以通过网络上传数据,从而无需人为采集数据。例如,燃气仪表、水表、电表等都可以接入互联网,从而自动化的上报数据。
[0031]
随着物联网终端的功能增多,需要对物联网终端的固件进行升级。一般情况下,在固件升级过程中需要多次向其下发数据才能够完成升级。
[0032]
图1为一示例性实施例示出的固件升级过程示意图。
[0033]
如图1所示,物联网终端11可以通过网络与服务器12连接。在需要升级时,服务器12可以向物联网终端11分批发送升级数据。比如,服务器12发送了数据包1后,等待接收物联网终端11的应答指令,当服务器12接收到应答指令1之后,再向物联网终端11发送数据包2。
[0034]
这种方式会导致物联网终端11的升级时间较长。
[0035]
本申请提供的方案中,物联网终端通过通讯模组持续接收服务器发送的数据,通讯模组将接收的数据发送给物联网终端的处理器,以使处理器对这些数据进行处理,在满
足预设条件时,控制通讯模组停止向处理器发送数据,处理器将接收的数据存储到存储单元后,控制通讯模组继续向处理器发送接收的数据。因此,本申请提供的方案不需要一发一收的通讯方式,从而能够提高固件升级速度,且设置有控制通讯模组停止向处理器发送数据的机制,能够降低处理器的数据处理压力。
[0036]
图2a为本申请一示例性实施例示出的物联网终端的结构示意图;图2b为本申请另一示例性实施例示出的物联网终端的结构示意图。
[0037]
如图2a所示,物联网终端中可以包括处理器21、通讯模组22和存储单元23。其中,处理器21具有计算能力,从而执行本申请提供的方法。
[0038]
具体的,通讯模组22用于与外界通信,比如物联网终端通过通讯模组22与服务器进行交互。
[0039]
进一步的,存储单元23用于存储数据。比如可以存储物联网终端采集的数据,还可以存储服务器下发的数据。
[0040]
如图2b所示,处理器21还可以包括多个子芯片,比如包括两个子芯片,一个为主处理器211,另一个为通讯处理器212,从而由多个子芯片执行本申请提供的方法,从而降低单个芯片的数据处理压力。
[0041]
图3为本申请一示例性实施例示出的固件升级方法的流程图。
[0042]
本申请提供的固件升级方法可以应用于如图2所示出的物联网终端中,具体可以由物联网终端中的处理器执行。
[0043]
如图3所示,本申请提供的固件升级方法,包括:
[0044]
步骤301,在从通讯模组中获取子数据包的过程中,若确定处理器符合预设条件,则控制通讯模组停止发送子数据包。其中,子数据包是服务器持续发送给通讯模组的,子数据包是对固件升级包进行拆分得到的。
[0045]
其中,在物联网终端的功能需要更新时,可以将升级使用的固件升级包存储在服务器中,服务器可以向物联网终端发送该固件升级包。比如,研发人员可以将制作好的固件升级包上传至服务器,在达到预定时刻后,服务器向物联网终端下发固件升级包。
[0046]
具体的,可以由物联网终端的通讯模组接收服务器下发的固件升级包,再由通讯模组将接收的数据发送给处理器,由处理器对接收的数据进行处理。
[0047]
进一步的,服务器将固件升级包拆分为多个子数据包,并持续下发这些子数据包。通讯模组接收到子数据包后,可以将其发送给处理器,从而使处理器处理这些数据。
[0048]
本申请提供的方法中,物联网终端持续接收固件升级包,从而能够降低固件升级时间。
[0049]
图4为本申请一示例性实施例示出的数据传输流程示意图。
[0050]
如图4所示,由物联网终端的通讯模组22接收服务器41发送的子数据包。通讯模组22接收到子数据包后,将其发送给处理器21。
[0051]
实际应用时,在处理器从通讯模组中获取子数据包的过程中,若确定符合预设条件,则控制通讯模组停止发送子数据包。比如,在处理器已经接收的子数据包的字节数量达到阈值时,可以向通讯模组发送停止发送数据的消息,从而控制通讯模组不再向处理器发送子数据包。由于处理器能够处理的数据量有限,因此,可以将上述阈值设置为处理器能够处理的数据量上限值。再比如,当处理器未接收到子数据包的时长达到预设时长时,也可以
向通讯模组发送停止发送数据的消息,从而控制通讯模组不再向处理器发送子数据包。
[0052]
本申请提供的方法中,设置有通讯模组停止向处理器发送子数据包的机制,从而使得物联网终端能够持续接收服务器下发的数据,而不会产生处理器无法对接收的数据进行处理的问题。
[0053]
请继续参考图4,在一种可选的实施方式中,可以设置物联网终端上报数据的时间,当到达该时刻后,物联网终端与服务器建立通信连接。物联网终端基于该通信连接向服务器上报数据。若需要对物联网终端的固件进行升级,则服务器对数据处理完毕后,可以向物联网终端发送包括子数据包的指令。
[0054]
步骤302,将接收到的子数据包,存储入存储单元中。
[0055]
其中,处理器控制通讯模组停止发送子数据包之后,将已经从通讯模组获取的子数据包存储到存储单元,从而释放处理资源。
[0056]
具体的,在步骤302之后,继续执行步骤301,即继续从通讯模组获取子数据包,并基于步骤301与步骤302将子数据包存储到存储单元,直到通讯模组接收完毕服务器下发的子数据包为止。
[0057]
进一步的,可以获取已接收的子数据包的总长度,从而确定是否接收完毕服务器下发的子数据包。比如,在服务器下发的第一个子数据包中,可以记载固件升级包的总长度。物联网终端可以基于该信息确定是否接收完毕
[0058]
步骤303,将存储单元中存储的各子数据包,写入处理器的程序区。
[0059]
实际应用时,当通讯模组接收完毕服务器下发的子数据包,且处理器将通讯模组发送的子数据包写入存储单元后,可以将存储单元中存储的各子数据包,写入程序区。
[0060]
其中,在处理器中设置有程序区,用于存储执行代码。处理器运行其中的代码时,能够实现一定的功能,比如采集数据,再比如上传数据等。处理器将存储单元中存储的各子数据包写入处理器的程序区,能够实现代码的更新,从而更新物联网终端的功能。
[0061]
具体的,处理器可以擦除其内部程序区的代码,再将存储单元中的代码写入程序区,从而程序区中代码的更替。
[0062]
本实施例提供的方法用于进行固件升级,该方法由设置有本实施例提供的方法的设备执行,该设备通常以硬件和/或软件的方式来实现。
[0063]
本申请实施例提供的固件升级方法,应用于物联网终端中的处理器,物联网终端中包括处理器、通讯模组和存储单元,方法包括:重复执行以下步骤,直至确定通讯模组接收完毕服务器下发的子数据包:在从通讯模组中获取子数据包的过程中,若确定符合预设条件,则控制通讯模组停止发送子数据包,其中,子数据包是服务器持续发送给通讯模组的,子数据包是对固件升级包进行拆分得到的;将接收到的子数据包,存储入存储单元中;将存储单元中存储的各子数据包,写入处理器的程序区。本申请实施例提供的方法中,可以控制通讯模组在一定情况下停止向处理器发送子数据包,即使通讯模组持续接收服务器下发的子数据包,处理器也能够正常处理数据,因此能够减少固件升级时间,提高固件升级速度。
[0064]
图5为本申请另一示例性实施例示出的固件升级方法的流程图。
[0065]
如图5所示,本申请提供的固件升级方法,包括:
[0066]
步骤501,在从通讯模组中获取子数据包的过程中,若确定符合预设条件,则控制
通讯模组停止发送子数据包,其中,子数据包是服务器持续发送给通讯模组的,子数据包是对固件升级包进行拆分得到的。
[0067]
其中,在物联网终端的功能需要更新时,可以将升级使用的固件升级包存储在服务器中,服务器可以向物联网终端发送该固件升级包。比如,研发人员可以将制作好的固件升级包上传至服务器。
[0068]
具体的,服务器可以将固件升级包拆分为多个子数据包,在需要控制物联网终端升级时,持续向物联网终端发送子数据包。比如,可以在达到预定时刻后,服务器向物联网终端持续的依次下发子数据包。
[0069]
进一步的,子数据包可以包括信息帧类型的数据包,还可以包括数据帧类型的数据包。信息帧类型的数据包中包括固件升级包的一些信息,比如固件的版本号、总长度、第一校验码、总帧数。数据帧类型的数据包可以包括该帧数据的相关信息,比如帧号、固件数据长度、偏移地址、第二校验码,数据帧类型的数据包中还可以包括具体的升级数据。
[0070]
实际应用时,由物联网终端的通讯模组接收服务器下发的子数据包,再由通讯模组将接收的子数据包发送给处理器,由处理器对接收的子数据包进行处理。
[0071]
一种实施方式中,若物联网终端的结构如图2a所示,则可以由处理器执行本步骤。
[0072]
另一种实施方式中,若物联网终端的结构如图2b所示,则可以由通讯处理器执行本步骤。
[0073]
比如,可以在通讯模组中设置流控功能,在符合预设条件时,如图2a中的处理器或者如图2b中的通讯处理器可以控制通讯模组开启流控功能,从而控制通讯模组停止发送子数据包。
[0074]
本申请提供的方法中,物联网终端持续接收固件升级包,从而能够降低固件升级时间。
[0075]
实际应用时,在处理器从通讯模组中获取子数据包的过程中,若确定符合预设条件,则控制通讯模组停止发送子数据包。
[0076]
其中,预设条件可以包括已接收的所述子数据包的字节数量达到阈值。由于处理器能够处理的数据量有限,因此,可以将上述阈值设置为处理器能够处理的数据量上限值。当处理器接收了达到阈值子节数量的子数据包后,就控制通讯模组停止向其发送数据,使得处理器能够对已经接收的数据进行处理,处理完毕后,再控制通讯模组向其发送子数据包。
[0077]
具体的,预设条件还可以包括未接收到子数据包的时长达到预设时长,当通讯模组长时间没有向处理器发送数据时,可以认为是服务器侧不再下发子数据包,这种情况下,没有更多的子数据包需要传输,因此,可以控制通讯模组停止向处理器发送数据。
[0078]
步骤502,对接收到的子数据包进行解析处理,以校验接收到的子数据包。
[0079]
进一步的,处理器可以对已经接收的子数据包进行解析处理,从而校验该数据包中的数据是否完整。若校验通过,则可以执行步骤503,将接收到的子数据包存储入存储单元中。
[0080]
图6为本申请一示例性实施例示出的子数据包的处理过程的流程图。
[0081]
如图6所示,本申请提供的方法中,处理器接收到通讯模组发送的子数据包之后,可以执行步骤601。
[0082]
步骤601,根据当前是否缓存有数据包对接收的子数据包进行不同处理。
[0083]
若物联网终端的结构如图2a所示,则处理器中可以设置有用于缓存数据包的位置,可以根据处理器中是否缓存有用于升级固件的数据包对接收的子数据包进行处理。
[0084]
若物联网终端的结构如图2b所示,则通讯处理器中可以设置有用于缓存数据包的位置,可以根据通讯处理器中是否缓存有用于升级固件的数据包对接收的子数据包进行处理。若当前缓存有数据包,则执行步骤602。
[0085]
一种实施方式中,若物联网终端的结构如图2a所示,则可以在处理器中缓存有用于升级固件的数据包时,执行步骤602。
[0086]
另一种实施方式中,若物联网终端的结构如图2b所示,则可以在通讯处理器中缓存有用于升级固件的数据包时,由通讯处理器执行步骤602。
[0087]
步骤602,对当前接收的子数据包与缓存的数据包进行组合,得到组合数据包。
[0088]
其中,可以将当前接收的子数据包拼接在缓存的数据包之后,得到组合数据包。
[0089]
具体的,得到组合数据包之后,可以获取组合数据包的长度,具体可以获取组合数据包中包括的字节长度信息,并根据这一长度信息进行不同的处理。
[0090]
步骤603,若组合数据包的长度符合解析长度,则对组合数据包进行解析。
[0091]
步骤604,若组合数据包的长度不符合解析长度,则缓存组合数据包。
[0092]
若物联网终端的结构如图2a所示,则可以由处理器执行步骤603、604;若物联网终端的结构如图2b所示,则可以由通讯处理器执行步骤603、604。
[0093]
进一步的,若组合数据包中的数据长度符合解析长度,也就是组合数据包中的数据可以被解析,则对组合数据包进行解析。
[0094]
实际应用时,若组合数据包的长度不符合解析长度,也就是组合数据包中的数据不够被解析的数量,则可以缓存组合数据包,等待再次接收子数据包,共同解析处理。
[0095]
若当前未缓存有数据包,则根据当前接收的子数据包中是否包括帧头,对子数据包进行不同处理。
[0096]
若包括帧头,则基于该子数据的长度进行不同处理。具体可以执行步骤605或606,若不包括帧头,则执行步骤607。
[0097]
步骤605,若子数据包中包括帧头,且子数据包的长度符合解析长度,则对当前接收的子数据包进行解析。
[0098]
步骤606,若子数据包中包括帧头,且子数据包的长度不符合解析长度,则缓存接收的子数据包。
[0099]
若物联网终端的结构如图2a所示,则可以由处理器执行步骤605、606;若物联网终端的结构如图2b所示,则可以由通讯处理器执行步骤605、606。
[0100]
若子数据包中包括帧头,则可以认为该子数据包中包括完整数据帧的起始部分。
[0101]
若该子数据包的长度符合解析长度,即该子数据包中既包括起始部分,又具有足够数量的数据进行解析处理,则可以对该子数据包进行解析处理。
[0102]
若该子数据包的长度不符合解析长度,即该子数据包中包括起始部分,但不具有足够数量的数据进行解析处理,则可以对该子数据包进行缓存处理,等到接收了新的子数据包之后合并处理。
[0103]
步骤607,若子数据包中不包括帧头,则通过通讯模组向服务器发送解析失败的消
息。
[0104]
若物联网终端的结构如图2a所示,则可以由处理器执行本步骤;若物联网终端的结构如图2b所示,则可以由通讯处理器执行本步骤。
[0105]
其中,若接收的子数据包中不包括帧头,则说明该子数据包中不包括完整数据包的起始部分,而此时又没有已缓存的数据包,也就无法将当前的子数据包拼接到其他数据包之后,导致当前接收的该字数据包没有帧头,也就无法对其进行解析处理,此时,可以通过通讯模组向服务器发送解析失败的消息。
[0106]
具体的,该解析失败的消息中可以包括子数据包的标识信息,比如帧号。
[0107]
进一步的,上述对子数据包或组合数据包进行解析处理的过程具体包括:
[0108]
通过循环冗余校验确定数据包是否为完整数据。
[0109]
实际应用时,在数据包的帧头中可以包括校验码,在解析处理时,对数据包中的数据进行计算得到另一校验码,可以比对帧头中包括的校验码与计算得到的该另一校验码,若比对成功,则认为校验通过。
[0110]
步骤503,将接收到的子数据包,存储入存储单元中。
[0111]
若物联网终端的结构如图2a所示,则可以由处理器执行步骤503-507;若物联网终端的结构如图2b所示,则可以由通讯处理器执行步骤503-507。
[0112]
若对子数据包校验成功,则可以执行步骤503。
[0113]
此外,若对子数据包校验成功,还可以执行步骤504。步骤503与步骤504的执行时序不做限制。
[0114]
步骤504,判断子数据包的帧号与已处理的子数据包中包括的帧号是否连续;若帧号不连续,则确定缺失帧号。
[0115]
服务器拆分的子数据包可以具有帧号,各个子数据包的帧号应当为连续的,比如帧号可以是1、2、3、4、5等。
[0116]
其中,若当前处理的子数据包中包括帧号,则可以判断其与此前处理的子数据包中的帧号是否连续。若不连续,则可以确定中断的缺失帧号。比如当前处理的子数据包中的帧号为10,此前处理的子数据包中包括的帧号为8,则可以确定缺失帧号9。
[0117]
步骤503之后,可以继续执行步骤501,直到确定通讯模组接收完毕服务器下发的子数据包为止。
[0118]
步骤505,通过通讯模组向服务器发送包括缺失帧号的数据下发请求。
[0119]
其中,在上述循环结束后,若确定出了缺失帧号,则通过通讯模组向服务器发送数据下发请求。该数据下发请求中包括缺失帧号。
[0120]
具体的,若存在缺失帧号,则说明存在缺失的子数据包,因此,可以基于缺失帧号向服务器发送数据下发请求,使服务器下发缺失的子数据包。
[0121]
步骤506,通过通讯模组接收服务器发送的缺失数据包,并对缺失数据包进行解析处理。
[0122]
进一步的,向服务器发送了数据下发请求之后,服务器可以基于该请求向物联网终端发送与缺失帧号对应的缺失数据包,物联网终端中的通讯模组可以接收这些缺失数据包。通讯模组再将接收的确实数据包发送给处理器,使得处理器能够接收这些缺失数据包,并对其进行解析处理,具体的解析方式与上述方案类似。
[0123]
步骤507,根据解析后的子数据包对固件升级包进行校验。
[0124]
将子数据包存储到存储单元后,可以对根据解析后的子数据包对固件升级包进行校验。
[0125]
其中,服务器下发的子数据包中可以包括信息帧数据包,该数据包中可以包括整个固件升级包的信息,比如数据长度,再比如校验码。可以根据这些信息对由各个子数据包组合成的固件升级包进行校验,若校验通过,则执行步骤508。若校验未通过,则通过通讯模组向服务器反馈升级失败的消息。
[0126]
步骤508,达到预设时刻后,擦除程序区的代码。
[0127]
若物联网终端的结构如图2a所示,则可以由处理器执行步骤508、509;若物联网终端的结构如图2b所示,则可以由主处理器执行步骤508、509。
[0128]
其中,可以设置固件升级时间,比如,可以设置物联网终端在凌晨升级,则可以在凌晨时刻,物联网设备自动擦除内部程序区的代码。
[0129]
具体的,可以在达到预设时刻后,运行引导区程序,对存储单元中由子数据包组成的固件升级包进行校验,若校验通过则擦除程序区的代码。
[0130]
步骤509,将存储的子数据包写入程序区。
[0131]
擦除完毕后,将存储单元中存储的子数据包写入程序区,从而完成固件升级过程。
[0132]
图7为本申请一示例性实施例示出的固件升级装置的结构图。
[0133]
如图7所示,本实施例提供的固件升级装置,所述装置应用于物联网终端中的处理器,所述物联网终端中包括所述处理器、通讯模组和存储单元,所述装置包括:
[0134]
控制单元71,用于重复执行以下步骤,直至确定所述通讯模组接收完毕服务器下发的子数据包:在从所述通讯模组中获取子数据包的过程中,若确定符合预设条件,则控制所述通讯模组停止发送子数据包,其中,所述子数据包是服务器持续发送给所述通讯模组的,所述子数据包是对固件升级包进行拆分得到的;将接收到的子数据包,存储入存储单元中;
[0135]
写入单元72,用于将所述存储单元中存储的各子数据包,写入所述处理器的程序区。
[0136]
本实施例提供的固件升级装置,应用于物联网终端中的处理器,物联网终端中包括处理器、通讯模组和存储单元,装置包括:控制单元,用于重复执行以下步骤,直至确定通讯模组接收完毕服务器下发的子数据包:在从通讯模组中获取子数据包的过程中,若确定符合预设条件,则控制通讯模组停止发送子数据包,其中,子数据包是服务器持续发送给通讯模组的,子数据包是对固件升级包进行拆分得到的;将接收到的子数据包,存储入存储单元中;写入单元,用于将存储单元中存储的各子数据包,写入处理器的程序区。本申请实施例提供的装置中,可以控制通讯模组在一定情况下停止向处理器发送子数据包,即使通讯模组持续接收服务器下发的子数据包,处理器也能够正常处理数据,因此能够减少固件升级时间,提高固件升级速度。
[0137]
本实施例提供的固件升级装置的具体原理和实现方式均与图3所示的实施例类似,此处不再赘述。
[0138]
图8为本申请另一示例性实施例示出的固件升级装置的结构图。
[0139]
如图8所示,在上述实施例的基础上,本实施例提供的固件升级装置,在一种可选
的实施方式中,所述装置还包括解析单元73,用于在所述控制单元71将接收到的子数据包,存储入存储单元中之前:
[0140]
对接收到的子数据包进行解析处理,以校验接收到的子数据包。
[0141]
在一种可选的实施方式中,所述解析单元73具体用于:
[0142]
根据是否缓存有数据包对接收的所述子数据包进行不同处理。
[0143]
在一种可选的实施方式中,所述解析单元73包括第一解析模块731,用于:
[0144]
若缓存有数据包,则对当前接收的所述子数据包与缓存的数据包进行组合,得到组合数据包;
[0145]
若所述组合数据包的长度符合解析长度,则对所述组合数据包进行解析;
[0146]
若所述组合数据包的长度不符合解析长度,则缓存所述组合数据包。
[0147]
在一种可选的实施方式中,所述解析单元73包括第二解析模块732,用于:
[0148]
若未缓存数据包,则根据当前接收的所述子数据包中是否包括帧头,对所述子数据包进行不同处理。
[0149]
在一种可选的实施方式中,所述第二解析模块732具体用于:
[0150]
若所述子数据包中包括帧头,且所述子数据包的长度符合解析长度,则对当前接收的所述子数据包进行解析。
[0151]
在一种可选的实施方式中,所述第二解析模块732具体用于:
[0152]
若所述子数据包中包括帧头,且所述子数据包的长度不符合解析长度,则缓存接收的所述子数据包。
[0153]
在一种可选的实施方式中,所述第二解析模块732具体用于:
[0154]
若所述子数据包中不包括帧头,则通过通讯模组向所述服务器发送解析失败的消息。
[0155]
在一种可选的实施方式中,解析单元73具体用于:
[0156]
通过循环冗余校验确定所述数据包是否为完整数据。
[0157]
在一种可选的实施方式中,所述装置还包括判断单元74,用于:
[0158]
判断所述子数据包的帧号与已处理的子数据包中包括的帧号是否连续;
[0159]
若帧号不连续,则确定缺失帧号。
[0160]
在一种可选的实施方式中,所述装置还包括下载单元75,用于:
[0161]
通过所述通讯模组向所述服务器发送包括所述缺失帧号的数据下发请求;
[0162]
通过所述通讯模组接收所述服务器发送的缺失数据包,并对所述缺失数据包进行解析处理。
[0163]
在一种可选的实施方式中,所述装置还包括校验单元76,用于在接收完毕所述服务器下发的所述子数据包之后:
[0164]
根据解析后的所述子数据包对所述固件升级包进行校验;
[0165]
校验通过后所述写入单元72执行所述将所述存储单元中存储的各子数据包,写入所述处理器的程序区的步骤。
[0166]
在一种可选的实施方式中,所述写入单元72包括:
[0167]
擦除模块721,用于达到预设时刻后,擦除所述程序区的代码;
[0168]
写入模块722,用于将存储的所述子数据包写入所述程序区。
[0169]
可选的,所述写入单元72中还包括校验模块723,用于在所述擦除模块721擦除所述程序区的代码之前:
[0170]
运行引导区程序,对存储的由子数据包组成的固件升级包进行校验,若校验通过则所述擦除模块721执行所述擦除所述程序区的代码的步骤。
[0171]
可选的,所述子数据包包括信息帧类型、数据帧类型。
[0172]
可选的,所述预设条件包括以下任一种:
[0173]
已接收的所述子数据包的字节数量达到阈值、未接收到所述子数据包的时长达到预设时长。
[0174]
本实施例提供的固件升级装置的具体原理和实现方式均与图5所示的实施例类似,此处不再赘述。
[0175]
图9为本申请一示例性实施例示出的固件升级设备的结构图。
[0176]
如图9所示,本实施例提供的固件升级设备包括:
[0177]
存储器91;
[0178]
处理器92;以及
[0179]
计算机程序;
[0180]
其中,所述计算机程序存储在所述存储器91中,并配置为由所述处理器92执行以实现如上所述的任一种固件升级方法。
[0181]
本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,
[0182]
所述计算机程序被处理器执行以实现如上所述的任一种固件升级方法。
[0183]
本实施例还提供一种计算机程序,包括程序代码,当计算机运行所述计算机程序时,所述程序代码执行如上所述的任一种固件升级方法。
[0184]
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
[0185]
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1