本帖最后由 IoT8888 于 2019-10-16 14:29 编辑
1、AliOS Things 3.0 开发:OTA之整包升级使用手册
简介: 本位以物联网平台为例,介绍设备OTA实现环境准备
获取代码:分支:rel_3.0.0
选定APP:在AliOS-Things/app/example/中linkkitapp和otaapp都支持OTA功能,本文以linkkitapp为例介绍;
选定board: 在AliOS-Things/board/中有很多板子都支持OTA功能,本文以developerkit为例介绍;
选定云端平台:阿里云有两个平台支持AliOS Things OTA功能:物联网平台或智能生活开放平台,本文以物联网平台为例介绍;
使用流程
AliOS Things 支持Windows、Linux、MacOS编译环境,本文以Linux编译环境为例:
选择app和board
输入命令:
# 清除之前配置
$ aos make distclean
# 配置app为linkkitapp,board为developerkit
$ aos make linkkitapp@developerkit -c config
选择OTA组件及功能
输入命令:aos make menuconfig, 如下图:
选择顺序:Middleware Configuration --->uAgent Configuration --->-*- OTA Features ---> OTA Features
相关功能介绍如下:
[ ] OTA Secure Downloading Mode # 默认支持http下载,选中此项将支持https下载模式
[ ] OTA via uAgent # 默认不支持uAgent模式升级,选中支持uAgent方式升级
[ ] RSA Verify Support # 默认不支持安全升级,选中支持安全升级
(5) OTA Download Retry Count # 默认网络异常重试5次,可以根据需要自定义次数
(20000) OTA Download Timeout(ms) # OTA下载过程监控时间默认是20s,支持自定义
(512) OTA Download Block Size(bytes) # OTA下载时获取数据buf大小默认是512字节,支持自定义
(1024) OTA write flash cache size(bytes)# OTA写flash缓存大小默认是1k,支持自定义
[ ] BLE OTA Support # BLE OTA功能选项
完成配置后保存退出
编译固件
编译命令:aos make 编译完成后,生成的固件在out/linkkitapp@developerkit/binary目录下,如下图:
烧录到板子上,用于上传云端,但上传云端固件的版本号要求高于烧录在板子上的固件版本号,因此需要生成一个高版本的固件;
固件版本号更改及云端操作
更改build/build_rules/aos_target_config.mk文件中的app-1.0.0-为app-2.0.0-编译,如下图:
复制如上图标记的版本号,登录物联网平台平台,按如下图顺序操作:
点击新增固件后,如下图:
点击确定后,选择验证固件即可开始固件升级;升级结果可以点击“查看”获取详细结果;物联网平台的OTA操作可参考文档阿里云物联网平台固件升级文档 智能生活平台的OTA操作可参考阿里云智能生活开放平台固件升级文档;
2、AliOS Things 3.0 开发:OTA之压缩升级快速上手
简介: OTA(over the air)已成为物联网设备的刚需功能, 由于应用场景的需要,OTA又可分为整包升级、压缩升级及差分升级,本文将介绍基于AliOS Things 3.0版本的OTA压缩升级
概要
OTA(over the air)已成为物联网设备的刚需功能, 由于应用场景的需要,OTA又可分为整包升级、压缩升级及差分升级,本文将介绍基于AliOS Things 3.0版本的OTA压缩升级;首先介绍一下何为压缩升级?
从命名可以看出和压缩有关,具体做法是,先将待升级的固件用工具压缩,然后将压缩后的升级文件由云端推送到待升级设备端,待升级设备通过解压缩算法解压,最后完成升级过程;
优点:压缩过的固件较小,下载快,占地小节省存储空间;
缺点:设备端解压缩需要些时间,一般是几十秒,时间的长短与固件大小和mcu性能等有关;
如下图所示为AliOS Things 3.0 OTA压缩升级的流程示意图,3.0版本AliOS Things的编译体系支持将生成的bin文件自动压缩的功能,具体细节后面会介绍;
图1 AliOS Things 压缩升级示意图
环境准备
获取代码:分支:rel_3.0.0
选定APP:选择AliOS-Things/app/example/中linkkitapp;
选定board: 选择AliOS-Things/board/中developerkit;
选定云端平台:物联网平台;
使用流程
AliOS Things 同时支持Windows、Linux、MacOS编译环境,本文以Linux编译环境为例;
选择app和board
输入命令:
# 清除之前配置
$ aos make distclean
# 配置app为linkkitapp,board为developerkit
$ aos make linkkitapp@developerkit -c config
# 编译
$ aos make
编译完成后,生成的固件在out/linkkitapp@developerkit/binary目录下,如下图:
图2 编译生成固件图
更改build/build_rules/aos_target_config.mk文件中的app-1.0.0-为app-2.0.0-编译,如下图:
图3 固件版本号获取图
复制如上图标记的版本号,登录物联网平台平台,按如下图顺序操作
图4 添加固件操作步骤图
点击新增固件后,如下图:
图5 固件添加图
点击“确定”后,选择“验证固件”即可开始固件升级;升级结果可以点击“查看”获取详细结果;
设备端信息
设备端升级过程中部分log如下图:
图6 设备端压缩升级信息
升级结果云端查看
通过点击“验证固件”下的“查看”可以查看OTA的升级结果,如下图:
图7 云端升级结果图
以上就是AliOS Things 3.0版本的OTA压缩升级整个流程。
注:在做OTA之前确保设备端已连接云端
3、AliOS Things 3.0 开发:OTA之差分升级快速上手
简介: OTA之差分升级,用AliOS Things如何实现?
概要
前面已经介绍了AliOS Things 3.0 OTA的整包升级和压缩升级,本文将介绍AliOS Things 3.0版本的OTA差分升级;首先介绍一下差分升级的概念,差分升级是将新老固件差异部分剥离出来, 生成差分包,再通过云端将差分包推送到设备端,设备端接收完成后,通过差分恢复算法,将差分包和老固件进行融合,恢复差分前的新固件,进而完成升级;
优点:升级固件更小,下载速度快,更节省存储空间;
缺点:差分固件恢复成新固件的时间相对长,需要的内存相对大;
下图为AliOS Things 差分升级示意图:
图1 AliOS Things 差分升级示意图
环境准备
获取代码: 分支:rel_3.0.0
选定APP:选择AliOS-Things/app/example/中linkkitapp;
选定board: 选择AliOS-Things/board/中mk3080;
选定云端平台:物联网平台;
使用流程
AliOS Things 支持Windows、Linux、MacOS编译环境,本文以Linux编译环境为例;
选择app和board
输入命令:
# 清除之前配置
$ aos make distclean
# 配置app为linkkitapp,board为mk3080
$ aos make linkkitapp@mk3080 -c config
# 编译
$ aos make
编译完成后,生成的固件在out/linkkitapp@mk3080/binary目录下,如下图:
图2 编译生成固件图
烧录到板子上,同时也是差分的基础固件,接下来还需要编译生成一个高版本的固件;mk3080烧录的方法,如下图:
图3 mk3080烧录方法图
固件版本号更改
更改build/build_rules/aos_target_config.mk文件中的app-1.0.0-为app-2.0.0-编译,如下图:
图4 固件版本号获取图
制作差分升级包
将低版本的改名为old.bin, 高版本的 改名为new.bin, 在终端中输入命令:aos ota diff old.bin new.bin 执行完毕后,会在当前文件夹中得到差分升级包diff.bin
云端添加固件
复制如上图标记的版本号,登录物联网平台平台,按如下图顺序操作
图5 添加固件操作步骤图
点击新增固件,如下图,填入相关信息并上传差分升级包:
图6 固件添加图
点击“确定”后,选择“验证固件”即可开始固件升级;升级结果可以点击“查看”获取详细结果;
设备端信息
设备端升级过程中部分log如下图:
图7 设备端压缩升级信息
升级结果云端查看
通过点击“验证固件”下的“查看”可以查看OTA的升级结果,如下图:
图8 云端升级结果图
以上就是AliOS Things 3.0版本的OTA差分升级整个流程。
注:在做OTA之前确保设备端已连接云端
|