10.腾讯云物联网设备端学习---固件升级

本系列主要目的在于记录腾讯云物联网设备端的学习笔记,并且对设备端SDK进行补充说明。

简介

固件升级

固件升级基本上算是物联网设备必备的功能,固件升级功能在IoT Hub和IoT Explorer都得到了支持。其实简单的可以看做两个部分:

  • 控制消息:和腾讯云物联网平台进行交互,包括获取固件下载的信息,实现交互的逻辑
  • 固件数据:和腾讯云对象存储平台进行交互,拉取实际的固件数据

大致的流程如下所示:

固件升级流程

开发注意事项

固件升级是十分敏感的操作,要实现较为稳定的固件升级一般需要做到以下几点:

  • 固件校验:开发者对于下载的固件需要在设备端做好校验(此处不仅指md5校验,还应包括设备商自己的校验,因为md5只能保证文件的正确性,并不能保证固件本身的问题),以免造成事故。
  • 断点续传:针对弱网场景或者固件较大的设备,需要做好断点续传,保证下载的成功率,即每次下载完一段将断点的信息保存在相应的存储中(一般为flash中,也有放置于ram中,仅针对开机场景下的断点)。SDK已经支持该特性。
  • 固件备份:常规来说,待升级的固件存储在备份区域,当设备上电后,通过程序从备份区域读取固件进行升级,由于备份区只读,所以即使中途出现了掉电等异常情况,也能保证设备的可用性。
  • 多固件:其实多固件和单固件并无本质区别,因为固件升级面向的是文件,可以在文件中加入信息来将单个文件分割成多个固件。当然,还有一种方法是使用资源下载(后续文章会提及),这个也是腾讯云物联网支持的重要特性之一。