一种基于网络的设备固件高可靠性远程升级方法与流程

文档序号:34726587发布日期:2023-07-07 20:55阅读:40来源:国知局
一种基于网络的设备固件高可靠性远程升级方法与流程

本发明涉及电动车,具体为一种基于网络的设备固件高可靠性远程升级方法。


背景技术:

1、远程升级技术,主要是指一种通过空中接口远程管理、更新设备中固件(或软件)的技术。通过远程升级操作,不仅可以下载升级应用层固件,也可以更新设备的操作系统固件。这样,远程升级技术使设备可以在售后时自动升级固件,大大节约了人工成本。

2、在现有的网络设备(特别是物联网设备)的远程升级过程中,可能存在以下问题:(1)下载过程信号不好:所选择的远程传输技术可以为gprs、nbiot、4g等,对信号质量要求高,信号质量不好时容易丢失数据,导致升级过程不可靠,升级成功率得不到保证,设备的固件升级成本增高;(2)升级过程意外断电:设备要求低功耗,一般用电池供电,升级过程中若出现电池耗尽情况或其他断电情况,会导致升级流程中断,严重时导致设备重新开机仍无法正常使用,为此我们提出一种基于网络的设备固件高可靠性远程升级方法。


技术实现思路

1、本发明的目的在于提供一种基于网络的设备固件高可靠性远程升级方法,以解决上述背景技术中提出的问题。

2、为实现上述目的,本发明提供如下技术方案:一种基于网络的设备固件高可靠性远程升级方法,包括以下步骤:

3、步骤一、设备上电启动后,设备固件从设备非易失性存储器参数空间中读取状态机的状态值,如果是第一次启动,则读取到的状态机将处于第一状态,第一状态为空闲状态;所述如果不是第一次启动,则有可能是八种状态的中的任意一种,

4、步骤二、第一次启动,引导程序引导原系统固件运行,状态机处于第一状态,设备开始定时向升级服务器申请新的固件差分包,升级服务器应答后,设备根据升级服务器应答的升级指令检查算法检测升级服务器下发的升级指令参数是否合法:若所述升级指令参数不合法,则重复步骤二继续定时向升级服务器申请新的固件差分包;若所述升级指令参数合法,则状态机进入第二状态,第二状态为开始升级状态,同时将第二状态写入设备非易失性存储器参数空间中;

5、步骤三、进入第二状态后,设备开始通过断点续传下载算法向步骤二中所述升级指令参数中包含的下载服务器地址发送下载固件差分包远程升级的申请:若固件差分包第一个数据包一直下载失败,超过一定次数则状态机进入第八状态,第八状态为升级错误状态,同时将第八状态写入设备非易失性存储器参数空间中,记录失败原因后,状态机恢复为第一状态,同时将第一状态写入设备非易失性存储器参数空间中,返回步骤二重新开始下一轮升级过程;若固件差分包第一个数据包下载成功并写入设备非易失性存储器固件差分包空间中,则状态机进入第三状态,第三状态为下载中状态,同时将第三状态写入设备非易失性存储器参数空间中;

6、步骤四、进入第三状态后,设备继续通过断点续传下载算法向步骤二中升级指令参数中包含的下载服务器地址发送下载固件差分包远程升级申请;若下载某一帧数据包时由于网络信号质量差下载失败,则自动重复下载此帧数据包;若固件差分包下载完成且设备计算的固件差分包的md5校验值与步骤二中所述升级指令参数中包含的固件差分包的md5校验值不一致,则状态机进入第八状态,同时将第八状态写入设备非易失性存储器参数空间中,记录失败原因后,状态机恢复为第一状态,同时将第一状态写入设备非易失性存储器参数空间中,返回步骤二重新开始下一轮升级过程;若固件差分包下载完成且设备计算的固件差分包的md5校验值与步骤二中所述升级指令参数中包含的固件差分包的md5校验值一致,则状态机进入第四状态,第四状态为下载成功状态,同时将第四状态写入设备非易失性存储器参数空间中;

7、步骤五、进入第四状态后,设备通过将所述步骤四中所述非易失性存储器固件差分包空间中的固件差分包和非易失性存储器原系统固件备份包空间中的原系统固件备份包两者作为输入,执行还原算法,得到目标固件包,同时将目标固件包写入非易失性存储器目标固件包空间中;若还原算法运行失败,无法得到目标固件包,或虽然还原得到了目标固件包,但设备计算的目标固件包的md5校验值与步骤二中所述升级指令参数中包含的固件差分包的md5校验值不一致,则重复执行还原算法;若还原算法连续多次失败,无法得到目标固件包,或虽然还原得到了目标固件包,但设备计算的目标固件包的md5校验值与步骤二中所述升级指令参数中包含的目标固件的md5校验值连续多次不一致,则状态机进入第八状态,同时将第八状态写入设备非易失性存储器参数空间中,记录失败原因后,状态机恢复为第一状态,同时将第一状态写入设备非易失性存储器参数空间中,返回步骤二重新开始下一轮升级过程;若还原算法运行成功,得到目标固件包,且设备计算的目标固件包的md5校验值与步骤二中所述升级指令参数中包含的目标固件的md5校验值一致,则状态机进入第五状态,第五状态为还原成功状态,同时将第五状态写入设备非易失性存储器参数空间中;

8、步骤六、进入第五状态后,设备设置升级类型标志为差分升级,同时将升级类型标志和状态机第五状态写入设备非易失性存储器参数空间中;状态机进入第六状态,第六状态为升级文件准备好状态;

9、步骤七、进入第六状态后,用于设备升级的即替换原系统固件包的目标固件包已准备好,此时设备开始定时检测是否满足系统重启条件;若设备不满足重启条件,则重复步骤七继续判断;若设备满足重启条件,则状态机进入第七状态,所述第七状态为升级文件写入状态,同时将第七状态写入非易失性存储器参数空间中;

10、步骤八、进入第七状态后,设备自动触发系统重启,重启后设备开始运行bootloader引导程序,引导程序根据对步骤四中所述的目标固件包进行读取和计算md5校验值;若设备计算的md5校验值与步骤二中所述升级指令参数中包含的目标固件包的md5校验值不一致,则引导程序跳过升级步骤继续引导原系统固件正常启动;若设备计算的md5校验值与步骤二中所述升级指令参数中包含的目标固件包的md5校验值一致,则将目标固件包空间的目标固件包覆盖原系统固件空间的原系统固件包;覆盖完成后,引导程序对新的系统固件包进行读取和计算md5校验值,若设备计算的新系统固件md5校验值与步骤二中所述升级指令参数中包含的目标固件包的md5校验值不一致,则引导程序跳过升级步骤继续引导原系统固件正常启动;若设备计算的新系统固件md5校验值与步骤二中所述升级指令参数中包含的目标固件包的md5校验值一致,则引导程序将引导新系统固件正常启动;到此步骤为止,整个远程升级过程成功,系统重新启动后,设备根据非易失性存储器参数空间中的状态机和其他标志判断升级结果后,向升级服务器返回升级结果;将状态机恢复为第一状态,同时将第一状态写入非易失性存储器参数空间中;

11、步骤九、后续正常运行时发生关机重新启动或升级过程任意步骤中发生意外断电后重新启动时,状态机可能是八种状态中的任意一种:若启动时状态机处于第一状态,则根据所述步骤二至步骤八执行升级过程;若启动时状态机处于第二状态,则根据所述步骤三至步骤八执行升级过程;若启动时状态机处于第三状态,则根据所述步骤四至步骤八执行升级过程;若启动时状态机处于第四状态,则根据所述步骤五至步骤八执行升级过程;若启动时状态机处于第五状态,则根据所述步骤六至步骤八执行升级过程;若启动时状态机处于第六状态,则根据所述步骤七至步骤八执行升级过程;若启动时状态机处于第七状态,则根据所述步骤八执行升级过程。

12、优选的,所述步骤二中的升级指令检查算法具体为:

13、步骤一、检查升级指令参数的格式是否为http网址格式;

14、步骤二、检查升级指令参数中是否包含有效ip地址;

15、步骤三、检查升级指令参数中固件差分包、目标固件包的大小是否在有效范围内,有效范围具体根据非易失性存储器中固件差分包空间和目标固件包空间大小而定;

16、步骤四、检查升级指令参数中原系统固件版本号与设备当前实际固件版本号是否一致;

17、步骤五、检查升级指令参数中设备硬件版本号与设备当前实际硬件版本号是否一致;

18、步骤六、全部通过则升级指令参数合法。

19、优选的,所述步骤三中的断点续传下载算法具体为:

20、步骤一、设备与下载服务器建立socket连接;

21、步骤二、设备通过http报文向下载服务器每次请求下载一个字节的数据包,具体通过“content-range”字段来控制请求的长度和位置;

22、步骤三、设备将http下载成功的数据包写入非易失性存储器固件差分包空间中,并在非易失性存储器参数空间中记录下已经下载成功的长度和位置;

23、步骤四、若由于网络信号质量差发生与下载服务器的socket连接中断,待网络信号质量恢复时设备会自动重建socket连接,并从非易失性存储器参数空间中读取步骤三中所述的长度和位置,继续通过所述步骤二来下载;

24、步骤五、若由于意外断电发生socket连接中断,待设备重启后,设备进入步骤四所述状态,则设备继续重建socket连接,并从非易失性存储器参数空间中读取步骤三中所述的长度和位置,继续通过所述步骤二来下载;

25、步骤六、全部数据下载完成后,设备关闭socket网络连接。

26、优选的,所述步骤七中的重启条件具体为:

27、步骤一、设备使用电池供电时电池剩余电量满足升级所需最低电量要求;

28、步骤二、设备无正在处理或待处理的服务器端或业务相关的任务需要执行;

29、步骤三、设备无正在会处理或待处理地与其他设备业务相关的任务需要执行;

30、步骤四、特别地,若设备重启涉及其他系统的安全性的临时缺失,则必须向该系统发送请求获得许可;

31、步骤五、若无以上要求,则设备可以直接重启。

32、优选的,所述任一步骤中发生意外断电时的保护步骤具体为:

33、步骤一、涉及状态机切换时,需要等待此状态下任务步骤执行完毕,然后将新状态更新到非易失性存储器参数空间中,再切换到新状态下的任务继续执行;以此保证即使发生意外断电,设备重新上电后状态机状态可在此状态或新状态下继续执行;

34、步骤二、涉及固件下载时,需要等待当前一帧数据包下载完毕且写入到非易失性存储器固件差分包空间中,并且将本帧数据包的长度和位置写入到非易失性存储器参数空间中,再继续下一帧数据包的下载;以此保证即使发生意外断电,设备重新上电后,通过读取非易失性存储器参数空间中存储的状态机状态和当前已下载的固件长度和位置,可继续进行精确无误地下载;

35、步骤三、涉及引导程序空间中引导程序使用目标固件包空间中目标固件包对原系统固件空间中原系统固件覆盖时,需要等待覆盖完毕且md5校验通过才能将目标固件包空间目标固件包作为原系统固件空间中新的系统固件进行引导启动;若覆盖任务执行到一半时发生意外断电,设备重新上电后引导程序空间中引导程序可以重新进行使用目标固件包空间中目标固件包对原系统固件空间中原系统固件覆盖的操作;即使所述覆盖任务连续多次仍然失败,则引导程序空间中引导程序可以使用源系统固件备份包空间中原系统固件备份包对原系统固件空间中原系统固件进行恢复,以此保证总有一个版本的固件可以成功执行;

36、步骤四、其他断电保护的场景以此类推,通过对非易失性存储器诸空间的合理划分引导程序空间、原系统固件空间、源系统固件备份包空间、目标固件包空间、固件差分包空间和参数空间参数的合理设置,可以使设备状态机和文件进行保护。

37、综上所述,本发明的有益效果是:

38、本发明提供的基于网络的设备固件高可靠性远程升级方法,使得设备固件的远程升级过程比较可靠,有效防止了下载过程信号不好、升级过程意外断电情况下导致升级过程中断或系统不可用等升级不可靠的问题。

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