一种固件升级方法及装置与流程

文档序号:12362705阅读:来源:国知局

技术特征:

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.一种固件升级装置,其特征在于,包括:

接收模块,用于接收上位机发送来的升级数据包,将其作为当前升级数据包;

第一判断模块,用于判断所述接收模块接收到的当前升级数据包是否为最后一包;

第一保存模块,用于当所述第一判断模块判断出所述接收模块接收到的当前升级数据包不是最后一包时,将所述当前升级数据包中的升级数据保存到易失性存储区中;

第一更新模块,用于当所述第一保存模块将所述当前升级数据包中的升级数据保存到易失性存储区中后,更新所述易失性存储区中缓存数据的长度;

第二判断模块,用于所述第一更新模块更新所述缓存数据的长度之后,判断所述缓存数据的长度是否小于预设长度;

读取模块,用于当所述第二判断模块判断出所述缓存数据的长度不小于预设长度时,顺序读取长度为所述预设长度整数倍的缓存数据;

第二更新模块,用于根据所述读取模块读取到的缓存数据更新所述易失性存储区中的第一校验值;

第二保存模块,用于将所述读取模块读取到的缓存数据保存到非易失性存储区中;

第三更新模块,用于所述第二保存模块将所述读取模块读取到的缓存数据保存到非易失性存储区中之后,更新所述缓存数据的长度;

所述接收模块,还用于当所述第二判断模块判断出所述缓存数据的长度小于预设长度时,接收上位机发送来的升级数据包,将其作为当前升级数据包;还用于当所述第三更新模块更新所述缓存数据的长度之后,接收上位机发送来的升级数据包,将其作为当前升级数据包;

第三判断模块,用于当所述第一判断模块判断出所述当前升级数据包是最后一包时,判断当前升级数据包中是否含有升级数据;

第三保存模块,用于当所述第三判断模块判断出当前升级数据包中含有升级数据时,将所述当前升级数据包中的升级数据保存到非易失性存储区中;

第四更新模块,用于所述第三保存模块将所述当前升级数据包中的升级数据保存到易失性存储区中之后,根据所述易失性存储区中的缓存数据更新第一校验值;还用于当所述第三判断模块判断出当前升级数据包不含有升级数据时,根据所述易失性存储区中的缓存数据更新第一校验值;

第四保存模块,用于当所述第四更新模块根据所述易失性存储区中的缓存数据更新第一校验值之后,将所述缓存数据保存到所述非易失性存储区中;

解析模块,用于当所述第四保存模块将所述缓存数据保存到所述非易失性存储区中之后,解析所述当前升级数据包得到第二校验值;

第四判断模块,用于判断所述解析模块得到的第二校验值与所述第一校验值是否相同;

执行模块,用于当所述第四判断模块判断出所述解析模块得到的第二校验值与所述第一校验值相同时,根据所述非易失性存储区中的升级数据执行升级操作;

发送模块,用于当所述第四判断模块判断出所述解析模块得到的第二校验值与所述第一校验值不同时,返回错误码给所述上位机,结束。

25.根据权利要求24所述的装置,其特征在于,所述第一判断模块,具体用于:判断所述接收模块接收到的当前升级数据包中预设字节上的数据是否为第一预设数据,是则确认所述当前升级数据包是最后一包,否则确认所述当前升级数据包不是最后一包。

26.根据权利要求24所述的装置,其特征在于,所述第一更新模块,具体用于:解析所述当前升级数据包,得到当前升级数据长度,将所述当前升级数据长度与所述缓存数据的长度相加求和,将所述缓存数据的长度更新为相加求得的和。

27.根据权利要求24所述的装置,其特征在于,

所述第二更新模块,具体用于:将所述读取模块读取到的缓存数据与所述第一校验值做预设哈希运算得到哈希结果,将所述第一校验值更新为所述哈希结果;

所述第四更新模块,具体用于:将所述易失性存储区中的所有缓存数据与所述第一校验值做预设哈希运算得到哈希结果,将所述第一校验值更新为所述哈希结果。

28.根据权利要求27所述的装置,其特征在于,所述第二更新模块,还用于:当所述第二判断模块首次判断出所述缓存数据的长度不小于所述预设长度时,将所述读取模块读取到的缓存数据与初始校验值做所述预设哈希运算得到哈希结果,将所述哈希结果作为第一校验值。

29.根据权利要求24所述的方法,其特征在于,所述第三更新模块,具体用于:

将所述缓存数据的长度更新为所述缓存数据的长度与所述预设长度做减运算得到的差;

或者,

将所述缓存数据的长度更新为所述缓存数据长度与所述预设长度做取余运算得到的余数。

30.根据权利要求24所述的装置,其特征在于,所述第三判断模块,具体用于:解析所述当前升级数据包,判断其第二个字节上的数据是否为第二预设数据,如果是,则确认所述当前升级数据包中不含有升级数据,否则确认所述当前升级数据包中含有升级数据。

31.根据权利要求24所述的装置,其特征在于,还包括:第五判断模块;

所述第五判断模块,用于当所述第三判断模块判断出当前升级数据包中不含有升级数据时,触发所述第四更新模块之前,判断所述易失性存储区中是否含有缓存数据;

所述第四更新模块,具体用于当所述第五判断模块判断出所述易失性存储区中含有缓存数据时,根据所述易失性存储区中的缓存数据更新第一校验值;

所述解析模块,还用于当所述第五判断模块判断出所述易失性存储区中不有缓存数据时,解析所述当前升级数据包得到第二校验值。

32.根据权利要求24所述的装置,其特征在于,还包括:第五更新模块、第六更新模块和第六判断模块;

所述第五更新模块,用于当所述第二判断模块判断出所述缓存数据的长度不小于预设长度时,触发所述接收模块之前,根据预定方式更新所述非易失性存储区中的存储编号;

所述第六更新模块,用于所述解析模块解析所述当前升级数据包得到第二校验值之前,将所述存储编号更新为第三预设数据;

所述第六判断模块,用于所述终端设备重新启动时,判断升级数据是否全部接收完成;

所述执行模块,还用于当所述第六判断模块判断出升级数据全部接收完成时,根据所述非易失性存储区中的升级数据执行升级操作;

所述发送模块,还用于当所述第六判断模块判断出升级数据未全部接收完成时,返回所述存储编号给所述上位机;

所述接收模块,还用于所述发送模块返回所述存储编号给所述上位机之后,接收所述上位机发送来的升级数据包,将其作为当前升级数据包。

33.根据权利要求32所述的装置,其特征在于,还包括:第七判断模块和第八判断模块;

所述第七判断模块,用于当所述第六判断模块判断出升级数据未全部接受完成时,触发所述接收模块之后,判断所述接收模块接收到的升级数据包中是否含有存储编号,是则触发第八判断模块,否则确认上位机重新发送升级数据;

所述第八判断模块,用于当所述第七判断模块判断出所述接收模块接收到的升级数据包中含有存储编号时,判断所述接收到的升级数据包中的存储编号与所述发送模块返回给上位机的存储编号是否相同,是则确认上位机续传升级数据;

所述发送模块,还用于当所述第八判断模块判断出所述接收到的升级数据包中的存储编号与所述发送模块返回给上位机的存储编号不相同时,返回错误码给上位机。

34.根据权利要求33所述的装置,其特征在于,

所述第二保存模块,还用于:当所述第七判断模块判断出上位机重新发送升级数据,且第一判断模块判断出当前升级数据包不是最后一包时,根据所述发送模块返回给上位机的存储编号,将所述读取模块读取到的缓存数据顺序保存到非易失性存储区中;还用于当所述第八判断模块判断出上位机续传升级数据,且第一判断模块判断出当前升级数据包不是最后一包时,从所述非易失性存储区的第一页或者第一块开始将所述读取模块读取到的缓存数据保存;

所述第三保存模块,具体用于:当所述第七判断模块判断出上位机重新发送升级数据,且第一判断模块判断出当前升级数据包是最后一包时,根据所述发送模块返回给上位机的存储编号,将所述缓存数据顺序保存到所述非易失性存储区中;还用于当所述第八判断模块判断出上位机续传升级数据,且第一判断模块判断出当前升级数据包是最后一包时,从所述非易失性存储区的第一页或者第一块开始将所述缓存数据保存。

35.根据权利要求32所述的装置,其特征在于,还包括:

第七更新模块,用于将所述非易失性存储区中的备份校验值更新为所述第一校验值,更新掉电标识。

36.根据权利要求35所述的装置,其特征在于,还包括:第九判断模块;

所述存储编号包括:第一存储编号和第二存储编号,所述备份校验值包括第一备份校验值和第二备份校验值,所述掉电标识包括第一掉电标识和第二掉电标识;所述第一存储编号、第一备份校验值和第一掉电标识保存在所述非易失性存储区中的第一存储区中,所述第二存储编号、第二备份校验值和第二掉电标识保存在所述非易失性存储区中的第二存储区中;

所述第九判断模块,具体用于:所述第五更新模块根据预定方式更新所述非易失性存储区中的存储编号之前,和所述第六更新模块将所述存储编号更新为第三预设数据之前,读取所述第一掉电标识和所述第二掉电标识并判断是否相同,是则确定随机选择一个存储区作为更新存储区,更新所述更新存储区中的数据,将另一个存储区作为备份存储区,更新所述备份存储区中的掉电标识;否则确定取值在前的掉电标识对应的存储区为更新存储区,更新所述更新存储区中的数据,将另一个存储区作为备份存储区,更新所述备份存储区中的掉电标识。

37.根据权利要求36所述的装置,其特征在于,所述第五更新模块,具体用于:读取所述备份存储区中的存储编号,根据读取到的存储编号和所述预定方式更新所述更新存储区中的存储编号。

38.根据权利要求37所述的装置,其特征在于,所述第六判断模块,具体包括:

第一判断子模块,用于读取所述第一掉电标识和所述第二掉电标识并判断是否相同;

所述发送模块,具体用于当所述第一判断子模块判断出所述第一掉电标识和所述第二掉电标识相同时,确认升级数据未接收完成,返回初始编号给上位机;

第二判断子模块,用于当所述第一判断子模块判断出所述第一掉电标识和所述第二掉电标识不同时,读取取值在后的掉电标识对应的存储区中的存储编号,判断读取到的存储编号是否为所述第三预设数据;

所述执行模块,具体用于当所述第二判断子模块判断出读取到的存储编号是所述第三预设数据时,确认升级数据全部接收完成,根据所述非易失性存储区中的升级数据执行升级操作;

所述发送模块,还用于当所述第二判断子模块判断出读取到的存储编号不是所述第三预设数据时,确认升级数据未全部接收完成,返回所述第二判断子模块读取到的存储编号给所述上位机;

所述接收模块,还用于所述发送模块返回所述第二判断子模块读取到的存储编号给所述上位机之后,接收所述上位机发送来的升级数据,将其作为当前升级数据包。

39.根据权利要求36所述的装置,其特征在于,

所述第二更新模块,还用于:当所述第六判断模块判断出升级数据未全部接收完成,触发所述接收模块之后,在所述接收模块触发所述第二更新模块时,读取返回给上位机的存储编号对应的存储区中的备份校验值,将读取到的备份校验值与所述读取到的缓存数据做预设哈希运算得到哈希结果,将所述哈希结果作为第一校验值;

所述第四更新模块,还用于当所述第六判断模块判断出升级数据未全部接收完成,触发所述接收模块之后,在所述接收模块触发所述第四更新模块时,读取返回给上位机的存储编号对应的存储区中的备份校验值,将读取到的备份校验值与所述易失性存储区中的缓存数据做预设哈希运算得到哈希结果,将所述哈希结果作为第一校验值。

40.根据权利要求24所述的装置,其特征在于,所述发送模块,还用于所述第二判断模块触发所述接收模块之前,及所述第三更新模块触发所述接收模块之前,返回应答数据给所述上位机。

41.根据权利要求32所述的装置,其特征在于,还包括:

拷贝模块,用于所述执行模块根据所述非易失性存储区中的升级数据执行升级操作之前,将所述升级数据从所述非易失性存储区中拷贝的应用区;

或者,

修改模块,用于所述执行模块根据所述非易失性存储区中的升级数据执行升级操作之前,将应用区的地址修改为所述非易失性存储区的地址。

42.根据权利要求41所述的装置,其特征在于,还包括:第九判断模块、通讯模块和第一设置模块;

所述第九判断模块,用于当所述接收模块接收上位机发送来的升级数据包作为当前升级数据包之前,判断升级标识是否置位;

所述接收模块,具体用于:当所述第九判断模块判断出升级标识置位时,接收上位机发送来的升级数据包作为当前升级数据包;

所述通讯模块,用于当所述第九判断模块判断出升级标识未置位时,与上位机进行数据通讯;

所述第九判断模块,还用于所述第六判断模块判断升级数据是否全部接收完成之前,判断升级标识是否置位;

所述第六判断模块,具体用于:当所述第九判断模块判断出升级标识置位时,判断升级数据是否全部接收完成;

所述第一设置模块,用于当所述拷贝模块将所述升级数据从所述非易失性存储区中拷贝的应用区之后,或者所述修改模块将应用区的地址修改为所述非易失性存储区的地址之后,将所述升级标识复位。

43.根据权利要求41所述的装置,其特征在于,还包括:

第二设置模块,用于当所述拷贝模块将所述升级数据从所述非易失性存储区中拷贝的应用区之后,或者所述修改模块将应用区的地址修改为所述非易失性存储区的地址之后,将所述第三校验值设置为初始校验值,将所述存储编号设置为初始编号,将所述掉电标识设置为初始数据。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1