当前位置: 首页 > news >正文

云端一体化差分+安全升级,AliOS Things物联网升级“利器”

1.1 OTA升级简介
随着物联网的日益发展,OTA升级逐渐成为物联网设备的刚性需求,目前物联网设备种类繁多,但并未提供统一的OTA升级方案,针对日益发展的物联网设备,开发者迫切需要一套云端一体化的OTA升级方案来满足快速迭代的产品开发周期,降低产品开发和部署的成本,同时针对物联网低功耗和省流量的场景,AliOS Things推出物联网设备的升级“利器”:云端一体化的差分+安全升级,可以快速修复软件漏洞,更新系统,解决了用户开发部署难,售后维护成本高,升级下载流量大,升级不安全的痛点问题。
1.2 OTA升级软件架构

AliOS Things OTA采用云端一体化软件架构如图所示,用户接口包括升级服务管理等界面设计在云端服务器上,通过设备端与云前端相互配合,为用户提供丰富特性的升级服务。

image

1.2 丰富的功能特性
AliOS  Things OTA提供云端一体化的升级服务,不仅可以为用户提供更加安全可靠的基础升级服务,如乒乓双备份分区升级,安全的下载通道,固件完整性校验,断点续传,断电保护; 也可以为用户提供丰富的高级升级服务,如差分增量升级,数字签名验证安全升级。
1、安全可靠的乒乓升级

AliOS Things OTA通过提供云端一体化的双备份AB分区乒乓升级方式,来确保任何情况不会因为升级过程而导致升级的设备无法启动。 如下图所示,使用乒乓双备份AB分区升级方式,同时配合设备端引导程序支持升级失败后可以自动回滚老的固件,使整个升级过程更加安全可靠。

image

2、云端一体化的差分升级方案

AliOS Things OTA提供云端一体化的差分升级服务,将耗时,计算量大的差分包生成工具集成到云端后台服务器集群来生成,升级过程中的状态信息通过云端web或者手机端界面显示出来,极大的简化了物联网设备端端的操作流程,同时升级过程的状态信息,如进度条,错误码等可以实时的通过云端显示出来,最大限度的提高用户体验。差分生成的增量包只有原始包的5%以下大小,特别适合物联网设备低功耗,低流量场景,相信AliOS Things云端一体化的差分升级方案必将成为物联网领域设备升级的一把不可或缺的升级“利器”。云端一体化的差分升级流程如下午所示:

image

使用优化后的高效压缩算法,在最小内存使用的情况下可以达到最大压缩率,可以稳定运行在内存资源很小的平台,如乐鑫8266芯片,对bin文件平均压缩率在5%左右,在版本代码更改较小的情况下,对1M大小原始压缩后的bin文件,经过我们的差分算法压缩后增量包大小只有4332字节,几乎可以忽略不计, 可以最大限度的节省升级流量。

  3、安全数字签名验证(RSA)
如下图流程所示:AliOS Things OTA提供云端一体化的安全升级服务,与阿里云安全服务器KPM直接对接,在云端完成秘钥及证书管理,数据签名,下发公钥到设备端,设备端完成固件签名验证,整个流程云端一体化提供服务,集成开发及操作非常简单。云端一体化的安全升级如下图所示:

image

1.4 轻松上手AliOS Things升级服务

1、按照1.1章节AliOS Things wiki文档安装好集成编译工具,并下载好源码
      AliOS Things OTA云到端使用文档链接: https://github.com/alibaba/AliOS-Things/wiki/OTA-Tutorial;
2、在编译AliOS Things OTA Linux host  Demo程序
     aos make clean;
     aos make otaapp@linuxhost
3、Linuxhost下运行OTA Demo程序,确保PC正常联网并获取到IP地址
    ./otaapp@linuxhost.elf

1otaapp

4、从云端创建产品,获取产品信息pk,dn,ds, ps,执行命令行运行
    OTA_APP "a16UKrlKekO" "gateway_test01" "AT2XFOPOIbJaKfXsKeaEhabJ8TLhMQYp" "RDluqbn3LQazrdqM"

2otaapp

如上图打印显示对应的ota设备pk,dn注册OTA服务成功(注意确保设备信息PK,DN等正确):

5、通过云端界面选择验证固件,点击确认后可以看到设备端OTA升级开始:

3otaapp

升级完成,在Linux host下会将文件写入到当前目录的文件名字为alinkapp@linuxhost.elf文件中。

4otaapp

相关文章:

  • Pywinauto自动化操作PC微信提取好友微信号
  • BAT都有哪些AIOps的经典案例?
  • 如何查看当前Open的Cursor
  • 基于OHCI的USB主机 —— USB设备获取描述符通用函数
  • Spring Cloud Feign的两种使用姿势
  • Android应用程序安装过程源代码分析(2)
  • 知行不合一,Elon Musk 最大的敌人居然是自己?
  • 第二章 vSphere可用性之准备软硬件环境
  • 谈谈观察者模式和发布订阅模式
  • 策略模式
  • spark本地环境的搭建到运行第一个spark程序
  • VC6不支持typedef中递归。终于找到了Tuple的实现方案。
  • 设计模式-工厂模式
  • RHCS Oracle HA for OEL5.8 KVM实践配置
  • 面试必问之【对象和函数】篇
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • Angular 响应式表单之下拉框
  • ES6--对象的扩展
  • HTTP那些事
  • js对象的深浅拷贝
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • 简单数学运算程序(不定期更新)
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 首页查询功能的一次实现过程
  • 在weex里面使用chart图表
  • RDS-Mysql 物理备份恢复到本地数据库上
  • ![CDATA[ ]] 是什么东东
  • #Linux(权限管理)
  • (7)STL算法之交换赋值
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (补)B+树一些思想
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (一)Dubbo快速入门、介绍、使用
  • (转)setTimeout 和 setInterval 的区别
  • .gitignore文件---让git自动忽略指定文件
  • .NET Framework与.NET Framework SDK有什么不同?
  • .Net 代码性能 - (1)
  • .Net各种迷惑命名解释
  • .NET命令行(CLI)常用命令
  • .NET设计模式(11):组合模式(Composite Pattern)
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • .Net中wcf服务生成及调用
  • .net专家(高海东的专栏)
  • /bin/bash^M: bad interpreter: No such file or directory
  • @Bean有哪些属性
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现
  • [bzoj2957]楼房重建
  • [C/C++]_[初级]_[关于编译时出现有符号-无符号不匹配的警告-sizeof使用注意事项]
  • [C\C++]读入优化【技巧】
  • [go] 迭代器模式
  • [HOW TO]怎么在iPhone程序中实现可多选可搜索按字母排序的联系人选择器
  • [IDF]被改错的密码
  • [MFC] MFC 获取指定窗口截图(大小可调)
  • [NOI2020统一省选 A] 组合数问题 (推式子)