摘要: 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结构图:

简要介绍:

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

2.CoAP块传输
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个字节的无符号数。

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流程如下:

4.上板测验:
至此,我们对CoAP FOTA应该有了较深的理解,如果想实战试一把,请移步 AliOS Things github,下载代码搭建环境亲自体验一把,我们配有较丰富并持续丰富中的指导文档,请参考https://github.com/alibaba/AliOS-Things/wiki/AliOS-Things-FOTA-Porting-Guide 功能验证章节。

AliOS Things全链路优化-CoAP FOTA相关推荐

  1. 移动域全链路可观测架构和关键技术

    本文侧重阐述团队对移动领域全链路技术理念的原创性引入,整篇约1.2万字.阅读需要15分钟,读者将收获移动技术域体验优化的思路转变,以及软件定义体验的沉淀和研发实践. App现有架构挑战 2013年开始 ...

  2. 一文读懂云渲染“串流”全链路时延及优化策略

    ​这是一个让云游戏完美起步的时代. 云游戏作为产业内近年来炙手可热的话题,具有"云端运行.超高清.零延时.即点即玩"等众多特性. 随着 5G 时代的到来,以及中心云能力下沉至边缘云 ...

  3. 阿里巴巴淘宝全链路性能优化(上)

    作者|手淘用户体验提升项目组 出品|阿里巴巴新零售淘系技术部 导读:自阿里在11年提出 All in 无线之后,手淘慢慢成长为承载业务最多,体量巨大的航母级移动端应用.与之相应的,手淘离轻量,快速,敏 ...

  4. GC优化利器 - HBase2.0全链路offheap

    讲师 林明--阿里巴巴-云hbase内核开发 高级工程师 内容概要 gc问题会带来访问毛刺,回顾一下读写链路,然后看看全链路offheap怎么减少gc停顿.减低p999延迟的. 视频回看地址: htt ...

  5. 轻松掌控全链路服务监控:方案概述与对比 | 真的很干!

    点击上方"搜云库技术团队",选择"设为星标" 回复"1024"或"面试题"获取4T学习资料 0 - 问题背景 随着微服务 ...

  6. 科大讯飞全新1024:3大计划,200项A.I.能力,全链路驱动应用场景创新!

    10月24日,2018届科大讯飞全球1024开发者节在合肥奥林匹克体育中心综合馆如约举行,重磅发布了全新升级的科大讯飞<1024计划>! 原中国科学技术部副部长张来武.科大讯飞董事长刘庆峰 ...

  7. 全链路监控细节和难点剖析!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料!原文 | https://www.jianshu.com/p ...

  8. 主流微服务全链路监控系统之战

    点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料!问题背景随着微服务架构的流行,服务按照不同的维度进行拆分,一次 ...

  9. 实现一个全链路监控平台很难吗?Pinpoint、skywalking、zipkin,哪个实现比较好?...

    点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! 随着微服务架构的流行,服务按照不同的维度进行拆分,一次请求往 ...

最新文章

  1. mysql 如何修改wait_timeout,interactive_timeout ,和 session ,global 有什么关系
  2. 边缘AI是内存技术发展的催化剂
  3. android java包_android SDk中常用的java包介绍
  4. 虚拟局域网Vlan划分
  5. C# GC 垃圾回收机制原理
  6. 【机器学习】监督学习--(回归)LASSO
  7. 【经验】在CSS中定义超链接样式a:link、a:visited、a:hover、a:active的顺序
  8. 要取代 Node.js 的 Deno 还活着吗?
  9. error “Device supports x86, but APK only supports armeabi-v7a”
  10. 33. PHP Sessions
  11. matlab中怎么设置母线,Matlab绘图教程
  12. LCD1602A模块的应用
  13. Python:利用python语言实现18位身份证号码和15位身份证号码相互转换
  14. IDEA官网以往版本下载
  15. 80386汇编_进入32位保护模式
  16. MySQL数据库创建表一系列操作
  17. html改变按钮样式
  18. 2021 年 WAX 处在链游界前沿,2022 年能否继续维持? | Footprint Analytics
  19. java商品详情页设计_java高并发秒杀系统3-2节商品详情页上.mp4
  20. 程序员通过google 赶快来赚美金~ hot

热门文章

  1. C语言和其他高级语言的最大的区别是什么?
  2. pep8 python 编码规范_如何用好python编码规范,写一手漂亮的代码
  3. 百度搜索引擎优化指南3.0_深圳网站搜索引擎排名优化电话,百度优化排名费用_华阳网络...
  4. android点击通知栏之后消失,为什么noftifications出现在android通知栏中一段时间​​然后消失...
  5. 做raid会损坏linux文件吗,如何从损坏的RAID系统挂载磁盘?
  6. angular 字符串转换成数字_Angular日期在TypeScript中格式化转换应用
  7. c++ 协程_用yield实现协程
  8. html九图拼图游戏代码,HTML5拼图游戏
  9. 那些大学简称背后的“爱恨情仇”:东西南北中,就剩北大没人抢了
  10. 据说这是最受科研人员喜爱的春联