一种固件升级方法及装置制造方法及图纸

技术编号:14342372 阅读:122 留言:0更新日期:2017-01-04 14:10
本发明专利技术提供一种固件升级方法及装置,属于通信领域。所述方法包括:终端设备接收上位机发送来的升级数据包,判断是否为最后一包,否则将升级数据作为缓存数据保存到易失性存储区中,顺序读取长度为预设长度整数倍的缓存数据,根据读取到的缓存数据更新易失性存储区中的第一校验值,并将读取到的缓存数据保存到非易失性存储区中,继续接受上位机发送来的升级数据包;是则将升级数据作为缓存数据保存到易失性存储区中,并根据易失性存储区中的缓存数据更新第一校验值,将缓存数据保存到非易失性存储区中;判断升级数据包中的第二校验值与第一校验值是否相同,是则根据非易失性存储区中的升级数据执行升级操作,否则返回错误码给上位机,结束。

【技术实现步骤摘要】

本专利技术涉及通信领域,尤其涉及一种固件升级方法及装置
技术介绍
固件升级技术是对存放在终端设备内部非易失性存储区中的固件进行无线升级的技术。目前固件升级的通用处理方式为终端设备检测到升级信息后,将要升级的数据包或者新固件程序下载到终端设备中,此时有如下两种处理方式:处理方式一为终端设备将所有数据包接收完成之后,写入到终端设备的非易失性存储区中;处理方式二为终端设备每接收到一包数据,便将其写入到终端设备的非易失性存储区中。在固件升级过程中必不可少的操作便是进行数据包或者固件程序的完整性检测(否则会导致固件不完整而无法启动的后果),其最简单的方式就是按照上述处理方式一,将所有数据包接收完成之后,进行完整性检测,并在检测成功后写入到终端设备的非易失性存储区中;但该方式对于终端设备易失性存储区非常小,尤其是在一些单片机中却无法使用。而按照上述处理方式二,目前的办法是在所有数据包都写入到终端设备的非易失性存储区之后,在轮询各非易失性存储区块或非易失性存储区页内容进行完整性检测,该方式非常耗时,且由于非易失性存储区是以块或页为单位进行存储数据,因此存在同一块或者同一页进行多次擦写的情况,造成非易失性存储区寿命降低。
技术实现思路
本专利技术的目的是为了克服现有技术的不足,提供一种固件升级方法及装置。一方面,本专利技术提供了一种固件升级方法,包括:步骤S1:终端设备接收上位机发送来的升级数据包,将其作为当前升级数据包,并判断所述当前升级数据包是否为最后一包,是则执行步骤S3,否则执行步骤S2;步骤S2:所述终端设备将所述当前升级数据包中的升级数据保存到易失性存储区中,并更新所述易失性存储区中缓存数据的长度,判断所述缓存数据的长度是否小于预设长度,是则返回步骤S1,否则顺序读取长度为所述预设长度整数倍的缓存数据,根据读取到的缓存数据更新所述易失性存储区中的第一校验值,并将所述读取到的缓存数据保存到非易失性存储区中,更新所述缓存数据的长度,返回步骤S1;步骤S3:所述终端设备判断当前升级数据包中是否含有升级数据,是则将所述当前升级数据包中的升级数据保存到易失性存储区中,根据所述易失性存储区中的缓存数据更新第一校验值,并将所述缓存数据保存到非易失性存储区中,执行步骤S4,否则根据所述易失性存储区中的缓存数据更新第一校验值,并将所述缓存数据保存到所述非易失性存储区中,执行步骤S4;步骤S4:所述终端设备解析所述当前升级数据包得到第二校验值,判断所述第一校验值与所述第二校验值是否相同,是则根据所述非易失性存储区中的升级数据执行升级操作,否则返回错误码给所述上位机,结束。可选地,所述步骤S1中,所述判断当前升级数据包是否为最后一包,具体为:所述终端设备判断所述当前升级数据包中预设字节上的数据是否为第一预设数据,是则确认所述当前升级数据包是最后一包,否则确认所述当前升级数据包不是最后一包。可选地,所述步骤S2中,所述更新所述易失性存储区中缓存数据的长度,具体为:所述终端设备解析所述当前升级数据包,得到当前升级数据长度,将所述当前升级数据长度与所述缓存数据的长度相加求和,将所述缓存数据的长度更新为相加求得的和。可选地,所述步骤S2中,所述根据读取到的缓存数据更新所述易失性存储区中的第一校验值,具体为:所述终端设备将读取到的缓存数据与所述第一校验值做预设哈希运算得到哈希结果,将所述第一校验值更新为所述哈希结果;可选地,所述步骤S3中,根据所述易失性存储区中的缓存数据更新第一校验值,具体为:所述终端设备将所述易失性存储区中的所有缓存数据与所述第一校验值做预设哈希运算得到哈希结果,将所述第一校验值更新为所述哈希结果。可选地,所述步骤S2中,当首次判断出所述缓存数据的长度不小于所述预设长度时,所述根据读取到的缓存数据更新所述易失性存储区中的第一校验值,具体为:所述终端设备将读取到的缓存数据与初始校验值做所述预设哈希运算得到哈希结果,将所述哈希结果作为第一校验值。可选地,所述步骤S2判断为否时,更新所述缓存数据的长度,具体为:所述终端设备将所述缓存数据的长度更新为所述缓存数据的长度与所述预设长度做取余运算得到的余数;或者,所述终端设备将所述缓存数据的长度更新为所述缓存数据的长度与所述预设长度做除运算得到的余数。可选地,所述步骤S3中,所述终端设备判断当前升级数据包中是否含有升级数据,具体为:所述终端设备解析所述当前升级数据包,判断其第二个字节上的数据是否为第二预设数据,如果是,则确认所述当前升级数据包中不含有升级数据,否则确认所述当前升级数据包中含有升级数据。可选地,所述步骤S3中判断为否时,根据所述易失性存储区中的缓存数据更新第一校验值之前,还包括:所述终端设备判断所述易失性存储区中是否含有缓存数据,是则根据所述易失性存储区中的缓存数据更新第一校验值,否则执行步骤S4。可选地,所述步骤S2判断为否,返回步骤S1之前,还包括:步骤A:所述终端设备根据预定方式更新所述非易失性存储区中的存储编号;所述步骤S3中,执行步骤S4之前,还包括:步骤B:所述终端设备将所述存储编号更新为第三预设数据;当所述终端设备重新启动时,还包括:步骤D:所述终端设备判断升级数据是否全部接收完成,是则根据所述非易失性存储区中的升级数据执行升级操作,否则返回所述存储编号给所述上位机,返回步骤S1。相应地,由所述步骤D返回步骤S1之后,在所述步骤S1中,所述终端设备接收到上位机发送来的升级数据包之后,还包括:步骤E1:所述终端设备判断接收到的升级数据包中是否含有存储编号,是则执行步骤E2,否则确认上位机重新发送升级数据;步骤E2:所述终端设备判断所述接收到的升级数据包中的存储编号与其返回给上位机的存储编号是否相同,是则确认上位机续传升级数据,否则返回错误码给上位机。可选地,由所述步骤D返回步骤S1之后,在所述步骤S1中执行步骤S2时,所述步骤S2中,所述将所述读取到的缓存数据保存到非易失性存储区中,具体为:当所述上位机续传升级数据时,所述终端设备根据所述返回给上位机的存储编号,将所述读取到的缓存数据顺序保存到非易失性存储区中;当所述上位机重新发送升级数据时,所述终端设备从所述非易失性存储区的第一页或者第一块开始将所述读取到的缓存数据保存;在所述步骤S1中执行步骤S3时,所述步骤S3中,所述将所述缓存数据保存到所述非易失性存储区中,具体为:当所述上位机续传升级数据时,所述终端设备根据所述返回给上位机的存储编号,将所述缓存数据顺序保存到所述非易失性存储区中;当所述上位机重新发送升级数据时,所述终端设备从所述非易失性存储区的第一页或者第一块开始将所述缓存数据保存。进一步地,所述步骤A和所述步骤B,还包括:所述终端设备将所述非易失性存储区中的备份校验值更新为所述第一校验值,更新掉电标识。具体地,所述存储编号包括:第一存储编号和第二存储编号,所述备份校验值包括第一备份校验值和第二备份校验值,所述掉电标识包括第一掉电标识和第二掉电标识;所述第一存储编号、第一备份校验值和第一掉电标识保存在所述非易失性存储区中的第一存储区中,所述第二存储编号、第二备份校验值和第二掉电标识保存在所述非易失性存储区中的第二存储区中;所述步骤A和所述步骤B之前,还包括:步骤C:所述终端设备读取所述第一掉电本文档来自技高网...
一种固件升级方法及装置

【技术保护点】
一种固件升级方法,其特征在于,包括:步骤S1:终端设备接收上位机发送来的升级数据包,将其作为当前升级数据包,并判断所述当前升级数据包是否为最后一包,是则执行步骤S3,否则执行步骤S2;步骤S2:所述终端设备将所述当前升级数据包中的升级数据保存到易失性存储区中,并更新所述易失性存储区中缓存数据的长度,判断所述缓存数据的长度是否小于预设长度,是则返回步骤S1,否则顺序读取长度为所述预设长度整数倍的缓存数据,根据读取到的缓存数据更新所述易失性存储区中的第一校验值,并将所述读取到的缓存数据保存到非易失性存储区中,更新所述缓存数据的长度,返回步骤S1;步骤S3:所述终端设备判断当前升级数据包中是否含有升级数据,是则将所述当前升级数据包中的升级数据保存到易失性存储区中,根据所述易失性存储区中的缓存数据更新第一校验值,并将所述缓存数据保存到非易失性存储区中,执行步骤S4,否则根据所述易失性存储区中的缓存数据更新第一校验值,并将所述缓存数据保存到所述非易失性存储区中,执行步骤S4;步骤S4:所述终端设备解析所述当前升级数据包得到第二校验值,判断所述第一校验值与所述第二校验值是否相同,是则根据所述非易失性存储区中的升级数据执行升级操作,否则返回错误码给所述上位机,结束。...

【技术特征摘要】
1.一种固件升级方法,其特征在于,包括:步骤S1:终端设备接收上位机发送来的升级数据包,将其作为当前升级数据包,并判断所述当前升级数据包是否为最后一包,是则执行步骤S3,否则执行步骤S2;步骤S2:所述终端设备将所述当前升级数据包中的升级数据保存到易失性存储区中,并更新所述易失性存储区中缓存数据的长度,判断所述缓存数据的长度是否小于预设长度,是则返回步骤S1,否则顺序读取长度为所述预设长度整数倍的缓存数据,根据读取到的缓存数据更新所述易失性存储区中的第一校验值,并将所述读取到的缓存数据保存到非易失性存储区中,更新所述缓存数据的长度,返回步骤S1;步骤S3:所述终端设备判断当前升级数据包中是否含有升级数据,是则将所述当前升级数据包中的升级数据保存到易失性存储区中,根据所述易失性存储区中的缓存数据更新第一校验值,并将所述缓存数据保存到非易失性存储区中,执行步骤S4,否则根据所述易失性存储区中的缓存数据更新第一校验值,并将所述缓存数据保存到所述非易失性存储区中,执行步骤S4;步骤S4:所述终端设备解析所述当前升级数据包得到第二校验值,判断所述第一校验值与所述第二校验值是否相同,是则根据所述非易失性存储区中的升级数据执行升级操作,否则返回错误码给所述上位机,结束。2.根据权利要求1所述的方法,其特征在于,所述步骤S1中,所述判断当前升级数据包是否为最后一包,具体为:所述终端设备判断所述当前升级数据包中预设字节上的数据是否为第一预设数据,是则确认所述当前升级数据包是最后一包,否则确认所述当前升级数据包不是最后一包。3.根据权利要求1所述的方法,其特征在于,所述步骤S2中,所述更新所述易失性存储区中缓存数据的长度,具体为:所述终端设备解析所述当前升级数据包,得到当前升级数据长度,将所述当前升级数据长度与所述缓存数据的长度相加求和,将所述缓存数据的长度更新为相加求得的和。4.根据权利要求1所述的方法,其特征在于,所述步骤S2中,所述根据读取到的缓存数据更新所述易失性存储区中的第一校验值,具体为:所述终端设备将读取到的缓存数据与所述第一校验值做预设哈希运算得到哈希结果,将所述第一校验值更新为所述哈希结果;所述步骤S3中,根据所述易失性存储区中的缓存数据更新第一校验值,具体为:所述终端设备将所述易失性存储区中的所有缓存数据与所述第一校验值做预设哈希运算得到哈希结果,将所述第一校验值更新为所述哈希结果。5.根据权利要求4所述的方法,其特征在于,所述步骤S2中,当首次判断出所述缓存数据的长度不小于所述预设长度时,所述根据读取到的缓存数据更新所述易失性存储区中的第一校验值,具体为:所述终端设备将读取到的缓存数据与初始校验值做所述预设哈希运算得到哈希结果,将所述哈希结果作为第一校验值。6.根据权利要求1所述的方法,其特征在于,所述步骤S2判断为否时,更新所述缓存数据的长度,具体为:所述终端设备将所述缓存数据的长度更新为所述缓存数据的长度与所述预设长度做取余运算得到的余数;或者,所述终端设备将所述缓存数据的长度更新为所述缓存数据的长度与所述预设长度做除运算得到的余数。7.根据权利要求1所述的方法,其特征在于,所述步骤S3中,所述终端设备判断当前升级数据包中是否含有升级数据,具体为:所述终端设备解析所述当前升级数据包,判断其第二个字节上的数据是否为第二预设数据,如果是,则确认所述当前升级数据包中不含有升级数据,否则确认所述当前升级数据包中含有升级数据。8.根据权利要求1所述的方法,其特征在于,所述步骤S3中判断为否时,根据所述易失性存储区中的缓存数据更新第一校验值之前,还包括:所述终端设备判断所述易失性存储区中是否含有缓存数据,是则根据所述易失性存储区中的缓存数据更新第一校验值,否则执行步骤S4。9.根据权利要求1所述的方法,其特征在于,所述步骤S2判断为否,返回步骤S1之前,还包括:步骤A:所述终端设备根据预定方式更新所述非易失性存储区中的存储编号;所述步骤S3中,执行步骤S4之前,还包括:步骤B:所述终端设备将所述存储编号更新为第三预设数据;当所述终端设备重新启动时,还包括:步骤D:所述终端设备判断升级数据是否全部接收完成,是则根据所述非易失性存储区中的升级数据执行升级操作,否则返回所述存储编号给所述上位机,返回步骤S1。10.根据权利要求9所述的方法,其特征在于,由所述步骤D返回步骤S1之后,在所述步骤S1中,所述终端设备接收到上位机发送来的升级数据包之后,还包括:步骤E1:所述终端设备判断接收到的升级数据包中是否含有存储编号,是则执行步骤E2,否则确认上位机重新发送升级数据;步骤E2:所述终端设备判断所述接收到的升级数据包中的存储编号与其返回给上位机的存储编号是否相同,是则确认上位机续传升级数据,否则返回错误码给上位机。11.根据权利要求10所述的方法,其特征在于,由所述步骤D返回步骤S1之后,在所述步骤S1中执行步骤S2时,所述步骤S2中,所述将所述读取到的缓存数据保存到非易失性存储区中,具体为:当所述上位机续传升级数据时,所述终端设备根据所述返回给上位机的存储编号,将所述读取到的缓存数据顺序保存到非易失性存储区中;当所述上位机重新发送升级数据时,所述终端设备从所述非易失性存储区的第一页或者第一块开始将所述读取到的缓存数据保存;在所述步骤S1中执行步骤S3时,所述步骤S3中,所述将所述缓存数据保存到所述非易失性存储区中,具体为:当所述上位机续传升级数据时,所述终端设备根据所述返回给上位机的存储编号,将所述缓存数据顺序保存到所述非易失性存储区中;当所述上位机重新发送升级数据时,所述终端设备从所述非易失性存储区的第一页或者第一块开始将所述缓存数据保存。12.根据权利要求9所述的方法,其特征在于,所述步骤A和所述步骤B,还包括:所述终端设备将所述非易失性存储区中的备份校验值更新为所述第一校验值,更新掉电标识。13.根据权利要求12所述的方法,其特征在于,所述存储编号包括:第一存储编号和第二存储编号,所述备份校验值包括第一备份校验值和第二备份校验值,所述掉电标识包括第一掉电标识和第二掉电标识;所述第一存储编号、第一备份校验值和第一掉电标识保存在所述非易失性存储区中的第一存储区中,所述第二存储编号、第二备份校验值和第二掉电标识保存在所述非易失性存储区中的第二存储区中;所述步骤A和所述步骤B之前,还包括:步骤C:所述终端设备读取所述第一掉电标识和所述第二掉电标识并判断是否相同,是则确定随机选择一个存储区作为更新存储区,更新所述更新存储区中的数据,将另一个存储区作为备份存储区,更新所述备份存储区中的掉电标识;否则确定取值在前的掉电标识对应的存储区为更新存储区,更新所述更新存储区中的数据,将另一个存储区作为备份存储区,更新所述备份存储区中的掉电标识。14.根据权利要求13所述的方法,其特征在于,所述步骤A,具体为:所述终端设备读取所述备份存储区中的存储编号,根据读取到的存储编号和所述预定方式更新所述更新存储区中的存储编号。15.根据权利要求14所述的方法,其特征在于,所述步骤D,具体为:所述终端设备读取所述第一掉电标识和所述第二掉电标识并判断是否相同,是则确认升级数据未接收完成,返回初始编号给上位机;否则读取取值在后的掉电标识对应的存储区中的存储编号,判断读取到的存储编号是否为所述第三预设数据,是则确认升级数据全部接收完成,根据所述非易失性存储区中的升级数据执行升级操作,否则确认升级数据未全部接收完成,返回所述读取到的存储编号给所述上位机。16.根据权利要求13所述的方法,其特征在于,由所述步骤D返回步骤S1之后,在步骤S1中执行步骤S2时,所述根据读取到的缓存数据更新所述易失性存储区中的第一校验值,具体为:所述终端设备读取返回给上位机的存储编号对应的存储区中的备份校验值,将读取到的备份校验值与所述读取到的缓存数据做预设哈希运算得到哈希结果,将所述哈希结果作为第一校验值;在步骤S1中执行步骤S3时,所述根据所述易失性存储区中的缓存数据更新第一校验值,具体为:所述终端设备读取返回给上位机的存储编号对应的存储区中的备份校验值,将读取到的备份校验值与所述易失性存储区中的缓存数据做预设哈希运算得到哈希结果,将所述哈希结果作为第一校验值。17.根据权利要求9所述的方法,其特征在于,所述步骤D中,返回所述存储编号给所述上位机之后,还包括:所述上位机接收所述终端设备返回的所述存储编号,根据所述存储编号计算所述终端设备接收到的升级数据的长度,并根据得到升级数据的长度,顺序下发后续的升级数据给所述终端设备。18.根据权利要求17所述的方法,其特征在于,所述根据所述存储编号计算所述终端设备接收到的升级数据的长度,具体为:将所述存储编号与所述预设长度相乘得到所述终端设备接收到的升级数据的长度。19.根据权利要求18所述的方法,其特征在于,所述根据得到升级数据的长度,顺序下发后续的升级数据给所述终端设备,具体为:所述上位机判断得到的升级数据长度中最后一个字节上的数据是否为一个升级数据包的结束字节上的数据,是则从该升级数据包的下一个升级数据包开始下发给所述终端设备,否则从该升级数据包开始下发给所述终端设备。20.根据权利要求1所述的方法,其特征在于,所述步骤S2中,返回步骤S1之前,还包括:所述终端设备返回应答数据给所述上位机。21.根据权利要求9所述的方法,其特征在于,所述根据所述非易失性存储区中的升级数据执行升级操作之前,还包括:步骤F:所述终端设备将所述升级数据从所述非易失性存储区中拷贝的应用区;或者,步骤G:所述终端设备将应用区的地址修改为所述非易失性存储区的地址。22.根据权利要求21所述的方法,其特征在于,所述步骤S1之前,还包括:所述终端设备判断升级标识是否置位,是则执行步骤S1,否则与上位机进行数据通讯;所述步骤D之前,还包括:所述终端设备判断升级标识是否置位,是则执行步骤D,否则与上位机进行数据通讯;所述步骤F或者所述步骤G之后,还包括:所述终端设备将所述升级标识复位。23.根据权利要求21所述的方法,其特征在于,所述步骤F或者所述步骤G之后,还包括:所述终端设备将所述备份校验值设置为初始校验值,将所述存储编号设置为初始编号,将所述掉电标识设置为初始数据。24.一种固件升级装置,其特征在于,包括:接收模块,用于接收上位机发送来的升级数据包,将其作为当前升级数据包;第一判断模块,用于判断所述接收模块接收到的当前升级数据包是否为最后一包;第一保存模块,用于当所述第一判断模块判断出所述接收模块接收到的当前升级数据包不是最后一包时,将所述当前升级数据包中的升级数据保存到易失性存储区中;第一更新模块,用于当所述第一保存模块将所述当前升级数据包中的升级数据保存到易失性存储区中后,更新所述易失性存储区中缓存数据的长度;第二判断模块,用于所述第一更新模块更新所述缓存数据的长度之后,判断所述缓存数据的长度是否小于预设长度;读取模块,用于当所述第二判断模块判断出所述缓存数据的长度不小于预设长度时,顺序读取长度为所述预设长度整数倍的缓存数据;第二更新模块,用于根据所述读取模块读取到的缓存数据更新所述易失性存储区中的第一校验值;第二保存模块,用于将所述读取模块读取到的缓存数据保存到非易失性存储区中;第三更新模块,用于所述第二保存模块将所述读取模块读取到的缓存数据保存到非易失性存储区中之后,更新所述缓存数据的长度;所述接收模块,还用于当所述第二判断模块判断出所述缓存数据的长度小于预设长度时,接收上位机发送来的升级数据包,将其作为当前升级数据包;还用于当所述第三更新模块更新所述缓存...

【专利技术属性】
技术研发人员:陆舟于华章
申请(专利权)人:飞天诚信科技股份有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1