AliOS Things全链路优化-CoAP FOTA

简介: FOTA(Firmware Over-The-Air)即空中固件升级功能;CoAP(Constrained Application Protocol),字面意思为受限的应用协议,基于UDP,专为资源有限的物联网设备量身定制;所以AliOS Things的纯CoAP FOTA就是专为资源有限的物联网设备(如基于NB-IoT,LoRa)提供的远程固件升级功能。

FOTA(Firmware Over-The-Air)即空中固件升级功能;CoAP(Constrained Application Protocol),字面意思为受限的应用协议,基于UDP,专为资源有限的物联网设备量身定制;所以AliOS Things的纯CoAP FOTA就是专为资源有限的物联网设备(如基于NB-IoT,LoRa)提供的远程固件升级功能。

1.AliOS Things1.1.2 FOTA简介

    我们先看一下当前版本(AliOS Thing1.1.2)的FOTA结构图:

6bc99008e5cad2aec968c367444dc8db5cb8db4a

    简要介绍:

  • 信息交互通道:指与特定的云平台交互更新信息如版本上报、查询,下载链接获取,进度上报等控制或通知类信息;
  • 下载通道:通过1中获取的下载链接下载指定固件;
  • FOTA service:fota主服务;
  • 版本管理:维护升级前后的固件版本;
  • Security:fota安全部分,包括通道安全(mbedtls),固件下载校验,flash写入校验等;
  • Hal适配层:针对特定硬件的接口适配,主要指flash操作部分;
  • 启动参数设置/固件更新:这里分两种情况,1.乒乓升级,直接将新固件写入与当前程序运行分区对等的另一个分区中,下载完成后设置启动参数让下次程序启动直接从FOTA下载分区启动,每次更新来回切换;2.下载完成后设置启动参数进入bootloader中,将下载好的固件从下载分区中复制到程序运行分区以完成固件升级。

 

2.CoAP块传输

    CoAP协议格式:

cd5a43bc5deef2abb2d329b7cdbc52a4075629ef

    RFC7959定义了CoAP协议的块输出规范,对于resource representation无法通过一个CoAP数据包承载时,发起块传输过程。块传输使用options字段进行控制。

dd37e13add76292a9fc917be12350b79b44aef7c

abd5f16788e0dd69858a902e525d3621bd1ea834

    CoAP块传输标准新增了4个Option(size1最早在RFC7252中定义,RFC7959扩展了其含义)。 

    块传输机制采用Block1和Size1完成Request中Resource Presentation的块传输;采用Block2和Size2完成Response中的Resource Presentation的块传输;

FOTA CoAP下载由客户端像服务端请求资源,所以采用BLOCK2请求资源。

    Block 格式:

b5ba1a248278212cbf5f2362bc63f44a7844d779

 Option Value为变长0-3个字节的无符号数。

  • NUM:具有给定大小的块序列内的块(NUM)的相对数(从0开始编号),即块序号
  • M:是否有更多块
  • SZX:块大小,取值0-6,实际每个块的payload为2^ (4+SZX),即块大小为16-1024Byte

 

    Block2出现在Response中,Option value取值含义:

  •  NUM:表示当前Message的Payload在整个body中的编号
  •  M:表示是否还有更多块才能完成整个body的传输
  •  SZX:当M为1时,表示当前Message的Payload的大小(2**(SZX+4));当M为0时,实际Payload为1到2**(SZX+4)Byte;

    Block2出现在Request中,属于控制性用法:

  • NUM:期望Response传输的块号
  • M:无意义,设置为0
  • SZX:当NUM为0时,表示希望采用的块大小;当NUM非0时,直接采用上一个接收到的Response中的块大小

 

3.纯CoAP FOTA

    通过上节我们对CoAP块传输有了比较详细的了解,CoAP FOTA正是借助了CoAP块传输功能实现完整固件的下载。如第一节FOTA框架图,当交互通道与下载通道都走CoAP协议时,即为纯CoAP FOTA,仅仅依赖UDP协议,无需资源消耗较大的TCP协议支持,甚至连TCP/IP协议栈都不用实现,从而减少code size,ram等资源占用,更重要的是CoAP对网络带宽/网络稳定性要求要求都很低,说到此,可能很多人都想到了NB-IoT,LoRa环境,没错,我们针对这种低功耗低性能场景有备而来。CoAP FOTA流程如下:

37cac2448f2250dbcf90b32f9a721ae790cdc6cb


4.上板测验:

    至此,我们对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 

获取相关内容。

 

 

 

目录
相关文章
|
Arthas 监控 Java
Arthas常用命令
Arthas常用命令
814 0
|
Java Maven
maven 使用国内代理
一直使用 maven默认仓库,maven 的下载速度一直不快不慢;最近换了网络,maven秒变蜗牛,换了阿里云的镜像,瞬间飞快。 配置文件 ${USER_HOME}/.m2/settings.xml: 设置阿里云镜像 alimaven aliyun maven http://maven.
8636 0
|
自然语言处理 监控 关系型数据库
MySQL模糊匹配技巧:无需ES的高效实现
在数据库应用中,模糊匹配是一个常见的需求,尤其是在不引入Elasticsearch(ES)等外部搜索引擎的情况下。MySQL作为强大的关系型数据库,提供了多种实现模糊匹配的方法。本文将分享如何在MySQL中实现模糊匹配,并提供五大步骤和十个实战案例,帮助你提升查询效率和性能。
1691 1
|
算法
ECCV 2024:盲视频去闪烁通用方法BlazeBVD来了,美图&国科大联合提出
【8月更文挑战第15天】随着多媒体的兴起,视频成为信息传播的关键媒介,但视频中的闪烁问题影响观看体验。美图与中国科学院大学联合研发的BlazeBVD算法,采用直方图辅助方法简化学习过程,提高了视频去闪烁的质量与速度。该算法通过2D网络恢复纹理,3D网络修正时间一致性,实现了高效能与高保真度。实验结果显示,BlazeBVD在多种视频类型上表现优秀,推理速度提升显著。尽管如此,算法在处理局部闪烁和复杂场景时仍存在局限性,未来有进一步优化的空间。[论文链接](https://arxiv.org/pdf/2403.06243v1)
428 1
|
前端开发 JavaScript API
Nuxt3 实战 (十一):添加路由 Transition 过渡效果和 Loading 动画
这篇文章介绍了Nuxt3框架中页面和布局的过渡效果设置方法,以及首屏加载动画的添加。通过配置nuxt.config.ts文件和添加CSS样式,可以实现页面过渡效果。同时,文章也提到了在页面中设置不同的过渡效果和为布局和页面同时设置过渡效果的方法。最后,文章以一个Github仓库链接和一个线上预览地址作为总结,表示遵循官方文档操作即可完成相关设置。
528 0
Nuxt3 实战 (十一):添加路由 Transition 过渡效果和 Loading 动画
|
机器学习/深度学习 传感器 算法
【OpenCV】告别人工目检:深度学习技术引领工业品缺陷检测新时代
【OpenCV】告别人工目检:深度学习技术引领工业品缺陷检测新时代
414 2
|
关系型数据库 MySQL Java
mysql数据库处理TIMESTAMP格式日期
该内容提到了关于MySQL数据库处理TIMESTAMP格式日期的解决方案。首先,引用了两篇CSDN博客文章,一篇是关于使用MyBatis在MySQL中添加或修改TIMESTAMP日期的,另一篇是关于将Oracle的TIMESTAMP字段通过MyBatis插入到数据库的。接着,提到一个错误信息,说明MySQL表中不能有多个TIMESTAMP列。然后,展示了如何设置数据库字段(ctime和mtime)自动记录创建和更新时间,并提供了对应的mapper文件和Java字段定义,以实现业务代码中无需手动设置这些时间戳。
419 2
|
传感器 机器学习/深度学习 监控
实时交通信息采集与处理
实时交通信息采集与处理
800 3
|
JSON 物联网 API
嵌入式物联网开发之使用Json获取北京时间校准接口API
嵌入式物联网开发之使用Json获取北京时间校准接口API
716 1
|
SQL 数据挖掘 关系型数据库
【建议收藏】Mysql+Flink CDC+Doris 数据同步实战(上)
【建议收藏】Mysql+Flink CDC+Doris 数据同步实战
7727 0
【建议收藏】Mysql+Flink CDC+Doris 数据同步实战(上)