FOTA(Firmware Over-The-Air)即空中固件升级功能;CoAP(Constrained Application Protocol), 字面意思为受限的应用协议,基于 UDP,专为资源有限的物联网设备量身定制;所以 AliOS Things 的纯 CoAP FOTA 就是专为资源有限的物联网设备 (如基于 NB-IoT,LoRa) 提供的远程固件升级功能。
我们先看一下当前版本 (AliOS Thing1.1.2) 的 FOTA 结构图:
简要介绍:
CoAP 协议格式:
RFC7959 定义了 CoAP 协议的块输出规范,对于 resource representation 无法通过一个 CoAP 数据包承载时,发起块传输过程。块传输使用 options 字段进行控制。
CoAP 块传输标准新增了 4 个 Option(size1 最早在 RFC7252 中定义,RFC7959 扩展了其含义)。
块传输机制采用 Block1 和 Size1 完成 Request 中 Resource Presentation 的块传输;采用 Block2 和 Size2 完成 Response 中的 Resource Presentation 的块传输;
FOTA CoAP 下载由客户端像服务端请求资源,所以采用 BLOCK2 请求资源。
Block 格式:
Option Value 为变长 0-3 个字节的无符号数。
Block2 出现在 Response 中,Option value 取值含义:
Block2 出现在 Request 中,属于控制性用法:
通过上节我们对 CoAP 块传输有了比较详细的了解,CoAP FOTA 正是借助了 CoAP 块传输功能实现完整固件的下载。如第一节 FOTA 框架图,当交互通道与下载通道都走 CoAP 协议时,即为纯 CoAP FOTA,仅仅依赖 UDP 协议,无需资源消耗较大的 TCP 协议支持,甚至连 TCP/IP 协议栈都不用实现,从而减少 code size,ram 等资源占用,更重要的是 CoAP 对网络带宽 / 网络稳定性要求要求都很低,说到此,可能很多人都想到了 NB-IoT,LoRa 环境,没错,我们针对这种低功耗低性能场景有备而来。CoAP FOTA 流程如下:
至此,我们对 CoAP FOTA 应该有了较深的理解,如果想实战试一把,请移步 AliOS Things github ,下载代码搭建环境亲自体验一把,我们配有较丰富并持续丰富中的指导文档,请参考 https://github.com/alibaba/AliOS-Things/wiki/AliOS-Things-FOTA-Porting-Guide 功能验证章节。
另外,如果您对 CoAP 如何接入阿里云 IOTX 平台感兴趣,请点击 https://help.aliyun.com/document_detail/57697.html?spm=5176.doc57697.3.3.mtmUY0
获取相关内容。
来源: https://yq.aliyun.com/articles/309562