嵌入式开发|阿里云物联网平台在线升级OTA

5 篇文章 1 订阅
本文详细介绍了如何利用阿里云的OTA(Over-the-Air)服务对嵌入式设备进行固件升级。首先,硬件上使用广和通L610模组进行二次开发。然后,设备通过MQTT上报版本信息,接收阿里云物联网平台的新版本升级包。升级包信息包括版本号、文件大小、存储地址等,并可以选择性上报升级进度。最后,设备完成升级后再次上报新版本信息,以确认升级成功。整个过程涉及MQTT通信、版本管理和固件更新流程。
摘要由CSDN通过智能技术生成

前言

        OTA功能是产品的必备功能,但是如果又不想自己搭建平台,可以选择了阿里云的平台,基于阿里云对自己的设备进行版本管理。

硬件准备

1.广和通L610模组(opencpu,二次开发)

代码实现

1.升级流程图

æµç¨

2.设备上报版本信息,如果有新版本会下发升级信息

设备端通过MQTT协议推送当前设备OTA模块版本号到Topic:/ota/device/inform/${YourProductKey}/${YourDeviceName}。消息格式如下:

{
  "id": "123",
  "params": {
    "version": "1.0.1",
    "module": "MCU"
  }
}
参数类型说明
idString消息ID号。String类型的数字,取值范围0~4294967295,且每个消息ID在当前设备中具有唯一性。
versionStringOTA模块版本。
moduleStringOTA模块名。说明
  • 上报默认(default)模块的版本号时,可以不上报module参数。
  • 设备的默认(default)模块的版本号代表整个设备的固件版本号。

3.设备下发升级包信息

设备端订阅Topic:/ota/device/upgrade/${YourProductKey}/${YourDeviceName}。物联网平台对设备发起OTA升级请求后,设备端会通过该Topic收到升级包的存储地址URL。

消息格式如下:

  • 单个文件的OTA升级包信息:
    {
      "id": "123",
      "code": 200,
      "data": {
        "size": 93796291,
        "sign": "f8d85b250d4d787a9f483d89a974****",
        "version": "1.0.1.9.20171112.1432",
        "isDiff": 1,
        "url": "https://the_firmware_url",
        "signMethod": "MD5",
        "md5": "f8d85b250d4d787a9f483d89a9747348",
        "module": "MCU",
        "extData":{
            "key1":"value1",
            "key2":"value2",
            "_package_udi":"{"ota_notice":"升级底层摄像头驱动,解决视频图像模糊的问题。"}"
         }
      }
    }
参数类型说明
idLong消息ID号。每个消息ID在当前设备中具有唯一性。
messageString结果信息。
codeString状态码。
versionString设备升级包的版本信息。
sizeLong升级包文件大小,单位:字节。

OTA升级包中仅有一个升级包文件时,包含该参数。

urlString升级包在对象存储(OSS)上的存储地址。

OTA升级包中仅有一个升级包文件时,包含该参数。

isDiffLong仅当升级包类型为差分时,消息包含此参数。

取值为1,表示仅包含新版本升级包与之前版本的差异部分,需要设备进行差分还原。

signString升级包签名。

OTA升级包中仅有一个升级包文件时,包含该参数。

signMethodString签名方法。取值:
  • SHA256
  • MD5
对于Android差分升级包类型,仅支持MD5签名方法。
md5String当签名方法为MD5时,除了会给sign赋值外还会给md5赋值。

OTA升级包中仅有一个升级包文件时,包含该参数。

moduleString升级包所属的模块名。

说明 模块名为default时,物联网平台不下发module参数。

extDataObject升级批次标签列表和推送给设备的自定义信息。

_package_udi表示自定义信息的字段。

单个标签格式:"key":"value"

filesArray多个升级包文件的信息列表。

OTA升级包中有多个升级包文件时,包含该参数。

单个升级包文件信息为:

  • fileSize:升级包文件大小。
  • fileName:升级包文件的名称。
  • fileUrl、fileMd5、fileSign:含义与url、md5、sign相同。

4.设备上报升级进度(可选)

Topic:/ota/device/progress/${YourProductKey}/${YourDeviceName}

{
  "id": "123",
  "params": {
    "step": "-1",
    "desc": "OTA升级失败,请求不到升级包信息。",
    "module": "MCU"
  }
}
参数类型说明
idString消息ID号。String类型的数字,取值范围0~4294967295,且每个消息ID在当前设备中具有唯一性。
stepString

OTA升级进度。

取值范围:
  • 1~100的整数:升级进度百分比。
  • -1:升级失败。
  • -2:下载失败。
  • -3:校验失败。
  • -4:烧写失败。

设备上报的进度值及其描述信息,可根据设备实际升级场景在设备端配置。设备端配置方法,请参见设备端Link SDK的OTA升级

descString当前步骤的描述信息,长度不超过128个字符。如果发生异常,此字段可承载错误信息。
moduleString升级包所属的模块名。模块的更多信息,请参见添加升级包

说明 上报默认(default)模块的OTA升级进度时,可以不上报module参数。

5.设备端完成OTA升级后,推送最新的版本信息到Topic:/ota/device/inform/${YourProductKey}/${YourDeviceName}。如果上报的版本与OTA服务要求的版本一致就认为升级成功,反之失败。

阿里云OTA(Over-The-Air)是一种远程无线升级的解决方案,可以将软件、固件和配置文件等数据通过云端实现远程升级和配置。下面是关于阿里云OTA服务器部署的一些步骤和说明。 首先,在阿里云控制台中创建一个账号,并选择阿里云的云产品OTAS(Over-The-Air upgrading Service)。然后,根据实际需求和项目规模选择合适的实例规格,完成实例购买和初始化设置。 接下来,在阿里云OTA控制台中创建并配置产品和设备。产品即指需要进行OTA升级和配置的设备类型,设备是指产品的具体实例。在创建产品时,需要选择合适的计费方式和其他相关参数。然后,可以配置设备属性和功能定义,并生成设备密钥以保证通信连接的安全性。 然后,在阿里云OTA控制台中上传固件版本和升级文件。固件版本是设备固件的不同版本,可以根据实际需求选择合适的版本号和描述信息。升级文件即需要推送到设备的更新文件,可以是固件、配置文件或其他应用程序。上传文件后,需要填写文件的相关信息,并生成签名以保证文件的完整性和安全性。 最后,配置设备的OTA升级策略和规则。在OTA控制台中,可以设置升级策略,如升级类型(立即升级、延时升级等)、升级条件(设备在线、离线等)、推送规则(按时间、地点等条件)以及升级通知等。根据实际需求,可以为不同的设备配置不同的策略。 总之,阿里云OTA服务器部署需要在控制台中进行创建产品、配置设备、上传固件和文件,最后设置升级策略和规则。通过这一系列的操作,可以实现远程无线升级和配置,提高设备的功能和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值