一种基于状态机的OTA固件升级方法与流程

文档序号:12596499阅读:1708来源:国知局
一种基于状态机的OTA固件升级方法与流程

本发明属于物联网领域,具体涉及一种基于状态机的OTA固件升级方法。



背景技术:

OTA固件升级是指终端通过无线下载的方式获取固件版本并对终端固件进行升级。移动终端的空中下载软件升级(Firmware Over-The Air,简称FOTA)目前已被开放移动联盟(Open Mobile Alliance)标准化,被称为固件升级管理对象(FUMO,Firmware Update Management Object)。但是目前主要用于手机端、平板等大型嵌入式设备。

随着物联网产业的兴起,越来越多的低功耗嵌入式设备涌现,传统的FOTA技术对于这种低功耗、存储计算资源有限的小型嵌入式设备并不适用,目前小型嵌入式设备的OTA固件升级都是各个厂家自己实现的。

同时由于小型嵌入式设备的存储、计算资源有限以及网络传输的不可靠性,这就使得OTA固件升级面临文件分片、文件损坏、文件篡改、文件乱序等问题,同时随着物联网的兴起,小型嵌入式设备的爆发式增长,一旦升级文件本身存在缺陷,将导致大量设备升级后瘫痪。



技术实现要素:

发明目的:本发明针对上述现有技术存在的问题做出改进,即本发明公开了一种基于状态机的OTA固件升级方法,可以有效解决小型嵌入式系统在OTA升级时面临的文件分片、文件损坏、文件篡改、文件乱序等问题,同时提供小规模的批量升级,用以验证升级文件本身是否可靠。

技术方案:一种基于状态机的OTA固件升级方法,包括以下步骤:

(1)嵌入式设备处于初始状态,然后判断嵌入式设备是否收到批量升级指令,若嵌入式设备收到批量升级指令,进入步骤(2),反之,直接进入步骤(3)

(2)、嵌入式设备收到服务器端发送的批量升级指令后跳转状态至批量升级状态,嵌入式设备立刻发送包含当前固件版本号的版本更新检测数据包到服务器端,嵌入式设备状态跳转至版本检测状态,服务端根据收到的更新检测数据包中的当前版本号,查询是否有更新文件,若没有,则结束本次操作;若有,则向嵌入式设备返回更新文件信息数据包,嵌入式设备收到更新文件信息数据包后跳转至获取文件信息状态,并进入步骤(4),

(3)、嵌入式设备每天随机发送包含当前固件版本号的版本更新检测数据包到服务器端,嵌入式设备状态跳转至版本检测状态,服务端根据收到的更新检测数据包中的当前版本号,查询是否有更新文件,若没有,则结束本次操作;若有,则向嵌入式设备返回更新文件信息数据包,嵌入式设备收到更新文件信息数据包后跳转至获取文件信息状态,并进入步骤(4),

(4)、嵌入式设备升级

(41)服务器端将更新文件切片,

(42)服务器端发送第一个分片文件至嵌入式设备,嵌入式设备收到第一个分片文件后,跳转至文件块开始状态,计算第一个分片文件的CRC校验码,并写入本地存储器中,若CRC校验码计算成功,并且写入本地存储器成功,则返回成功,则进入步骤(43);反之,则返回失败,服务器端重新发送第一个分片文件至嵌入式设备;

(43)服务端收到成功返回后依次发送中间分片文件至嵌入式设备,嵌入式设备收到中间分片文件后跳转至文件块流状态,同样计算分片文件的CRC校验码,并写入本地存储器中,若CRC校验码计算成功,并且写入本地存储器成功,则返回成功,服务端发送下一个分片文件至嵌入式设备;反之,则返回失败,服务器端重新发送当前分片文件至嵌入式设备;

(44)服务器端发送最后一个分片文件时,数据包中文件结束标志位被置为1,嵌入式设备读取到文件结束标志位后跳转至文件块结束状态,写入本地存储器中,同样计算分片文件的CRC校验码,并将计算结果与步骤(2)或(3)中收到的CRC校验码作比较,若二者相同,则返回成功,写入本地存储器中并进入步骤(5),反之则返回失败;

(5)服务器端发送升级指令,嵌入式设备收到升级指令后若当前状态文件块结束状态则为跳转至升级指令状态,并做相应处理然后重启完成升级;若当前状态不是文件块结束状态则丢弃指令不作处理。

进一步地,步骤(2)中的更新文件信息数据包中包含更新文件的版本号、文件大小、文件CRC校验码、以及文件所属。

进一步地,步骤(3)中的更新文件信息数据包中包含更新文件的版本号、文件大小、文件CRC校验码、以及文件所属。

进一步地,步骤(4)中若嵌入式设备若累计返回失败3次,则终止此次更新。

有益效果:本发明公开的一种基于状态机的OTA固件升级方法具有以下有益效果:

1、将升级文件切片,然后在文件块流中依次进行分片传输,每一片都会进行完整性验证以保证文件不被篡改和损坏并由终端确认正确之后服务端才会下发下一分片文件,保证文件传输的有序性;

2、提供了批量升级状态,用以进行批量升级。

附图说明

图1为本发明公开的一种基于状态机的OTA固件升级方法的状态转换示意图;

图2为本发明公开的一种基于状态机的OTA固件升级方法的流程图。

具体实施方式:

下面对本发明的具体实施方式详细说明。

如图1和2所示,一种基于状态机的OTA固件升级方法,包括以下步骤:

(1)嵌入式设备处于初始状态,然后判断嵌入式设备是否收到批量升级指令,若嵌入式设备收到批量升级指令,进入步骤(2),反之,直接进入步骤(3)

(2)、嵌入式设备收到服务器端发送的批量升级指令后跳转状态至批量升级状态,嵌入式设备立刻发送包含当前固件版本号的版本更新检测数据包到服务器端,嵌入式设备状态跳转至版本检测状态,服务端根据收到的更新检测数据包中的当前版本号,查询是否有更新文件,若没有,则结束本次操作;若有,则向嵌入式设备返回更新文件信息数据包,嵌入式设备收到更新文件信息数据包后跳转至获取文件信息状态,并进入步骤(4),

(3)、嵌入式设备每天随机发送包含当前固件版本号的版本更新检测数据包到服务器端,嵌入式设备状态跳转至版本检测状态,服务端根据收到的更新检测数据包中的当前版本号,查询是否有更新文件,若没有,则结束本次操作;若有,则向嵌入式设备返回更新文件信息数据包,嵌入式设备收到更新文件信息数据包后跳转至获取文件信息状态,并进入步骤(4),

(4)、嵌入式设备升级

(41)服务器端将更新文件切片,

(42)服务器端发送第一个分片文件至嵌入式设备,嵌入式设备收到第一个分片文件后,跳转至文件块开始状态,计算第一个分片文件的CRC校验码,并写入本地存储器中,若CRC校验码计算成功,并且写入本地存储器成功,则返回成功,则进入步骤(43);反之,则返回失败,服务器端重新发送第一个分片文件至嵌入式设备;

(43)服务端收到成功返回后依次发送中间分片文件至嵌入式设备,嵌入式设备收到中间分片文件后跳转至文件块流状态,同样计算分片文件的CRC校验码,并写入本地存储器中,若CRC校验码计算成功,并且写入本地存储器成功,则返回成功,服务端发送下一个分片文件至嵌入式设备;反之,则返回失败,服务器端重新发送当前分片文件至嵌入式设备;

(44)服务器端发送最后一个分片文件时,数据包中文件结束标志位被置为1,嵌入式设备读取到文件结束标志位后跳转至文件块结束状态,写入本地存储器中,同样计算分片文件的CRC校验码,并将计算结果与步骤(2)或(3)中收到的CRC校验码作比较,若二者相同,则返回成功,写入本地存储器中并进入步骤(5),反之则返回失败;

(5)服务器端发送升级指令,嵌入式设备收到升级指令后若当前状态文件块结束状态则为跳转至升级指令状态,并做相应处理然后重启完成升级;若当前状态不是文件块结束状态则丢弃指令不作处理。

进一步地,步骤(2)中的更新文件信息数据包中包含更新文件的版本号、文件大小、文件CRC校验码(循环冗余校验码)、以及文件所属(即是wifi模块更新还是mcu固件更新)。

进一步地,步骤(3)中的更新文件信息数据包中包含更新文件的版本号、文件大小、文件CRC校验码(循环冗余校验码)、以及文件所属(即是wifi模块更新还是mcu固件更新)。

进一步地,步骤(4)中若嵌入式设备若累计返回失败3次,则终止此次更新。

上面对本发明的实施方式做了详细说明。但是本发明并不限于上述实施方式,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。

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