【OpenCPU】MN316-DLVD丨CTWingFOTA升级使用介绍

菩禔看科技 2024-04-23 03:10:18

CTWing FOTA

FOTA(Firmware Over-The-Air)是终端设备固件的空中下载升级,指通过云端升级技术,为具有连网功能的设备提供固件升级服务,用户使用网络以个性化、易扩展的方式获取智能终端系统升级包,并通过FOTA进行云端升级,完成系统修复和功能优化。

MN316 OpenCPU SDK提供的FOTA方式是以差分包进行升级的方式,需要先通过编译获得升级前后版本固件包,即模组当前版本和目标升级版本,接着使用差分包制作工具,生成差分包,再把差分包放到服务器上,模组下载到本地进行升级。

本文从使用流程、demo代码、CTWing FOTA示例及常见问题四个方面,讲解如何通过CTWing平台进行FOTA升级。

一、CTWing FOTA使用流程解析

图1 CTWing FOTA使用流程

图1介绍了使用CTWing平台对MN316模组进行FOTA升级的常规流程,可结合MN316_OpenCPU(R14)_Standard_X.X.X.XXXXXX_release\examples\ctwing\cm_demo_ctwing.c中的demo示例程序加深理解。

CTWing FOTA功能包含的函数接口详细定义可在include\cmiot\cm_ctwing.h和cm_fota.h文件中查看。

二、CTWing FOTA demo代码解析

SDK中CTWing FOTA常规使用方法,可在cm_demo_ctwing.c、cm_demo_onenet.c和cm_ctwing.h文件中查看,下面我们详细看一下。

2.1 设置用户FOTA版本号及获取FOTA版本号的函数

图2 用户版本号设置及获取

此接口在cm_demo_onenet.c,cm_demo_ctwing.c里面的版本号获取接口cm_fota_get_version与OneNET FOTA共用,用户自定义版本号user_ver[],由用户自行维护迭代,CTWing平台无需识别该版本号,版本号仅用于打印判断。

2.2 设置FOTA状态回调函数

图3 CTWing FOTA状态回调函数

图4 CTWing FOTA状态值枚举

图5 CTWing FOTA状态结构体

在CTWing FOTA状态事件回调函数test_ctw_fota_cb里进行打印FOTA的不同状态,以便用户对FOTA进度进行判断处理。

2.3 设置CTWing事件回调函数

图6 CTWing事件回调函数

用户要登录CTWing平台才能触发FOTA升级,因此需要设置CTWing事件回调函数,用于判定是否登录平台成功cm_demo_printf("+CTWEVT:%d\n", event)。

三、CTWing FOTA测试示例

下面我们用MN316 OpenCPU SDK提供的CTWing FOTA函数接口搭配CTWing平台进行测试,测试模组选用MN316-DLVS,以下为完整测试步骤。

3.1 编译初始版本

用VScode打开SDK,在文件cm_demo_onenet.c里找到当前的用户SDK版本号,如下:

图7 自定义版本号

默认是“V1.0.0”,输入./build.bat dlvs_h0 demo编译SDK,并使用logview工具合并成烧录文件,为便于区分,修改文件名为V1.0.0.mimgx,再用logview工具烧录到模组。

3.2 编译目标版本并制作差分包

修改用户版本号user_ver为“V2.0.0”,再编译、合并文件,修改烧录文件名为V2.0.0.mimgx,使用logview工具生成差分包,得到xyDelta和xyDelta_downgrade两个差分文件,xyDelta是升级差分包,xyDelta_downgrade是降级差分包(本次只测试升级,不测试降级)。

图8 差分包制作

3.3 用户登录CTWing平台,创建LWM2M协议的产品并添加设备

图9 平台添加设备

此时设备处于已注册状态,还未激活,需要登录平台进行激活(注意:如果未激活过,后面添加升级设备的时候无法找到设备)。

模组开机后主串口发送以下命令进行登录:

CM:CTWING:0

CM:CTWING:1

3.3 上传差分包文件到平台

图10 平台上创建固件

图11 选择差分包文件并上传

图12 已上传差分包

3.4 创建升级任务

图13 点击创建任务

图14 选择上传的差分包

图15 点击升级设备管理

图16 选择待升级设备,加入升级

图17 点击启动升级

3.5 模组侧触发FOTA升级

两种触发方式:

① 模组在离线状态下,串口发送CM:CTWING:1发起登录平台请求;

② 模组在在线状态下,串口发送CM:CTWING:4发起平台更新请求。

等待平台下发升级任务,模组会收到+CTWFOTA上报,如果模组长时间未收到此上报,可尝试多次发送更新请求命令,正常情况下模组会开始下载差分包然后升级重启。

图18 模组升级过程示例

3.6 完成FOTA升级

模组重启后,串口发送CM:CTWING:0和CM:CTWING:1,读取版本号并登录平台,模组会上报+CTWFOTA:4,1,表示升级完成,同时刷新平台页面,平台也会显示升级完成。

图19 模组完成升级示例

图20 平台显示升级成功

四、常见问题

1、平台上添加升级设备时,无当前设备可选,一般是什么原因?

一般情况下,用户使用模组只是登录平台收发数据,只有在对模组版本进行维护更新时才会用到FOTA功能,模组需要在升级前确保登录过CTWing平台,才能在升级任务添加设备时找到该设备,否则无设备可选。

2、模组有时执行cm_ctwing_open或者cm_ctwing_updata后长时间未打印检测到升级任务的回调,或者升级重启再次登录平台后长时间未打印升级成功的回调,一般是什么原因?

与平台和网络有关,确保网络正常后,建议用户程序逻辑上可以适当延长检测等待时间,并设置多次触发检测。





转载自中移物联网,仅供模组品牌对应于中移物联网模组体系参考。

声明:《菩禔物联》所发表内容均为原创,所有原创内容仅用于交流,不代表任何立场和观点。极少数优才文章注明来源的,版权归原出处所有(无法查证版权的或未注明出处的均来源于网络搜集)。如有侵权,请联系我们删除或更改。内容的真实性、准确性和合法性由原作者负责。转载内容(视频、文章、广告等)只以信息传播为目的,仅供参考,不代表本平台认同其观点和立场。

The content published in the Bodhi Union of Things is original, and all original content is for communication purposes only and does not represent any position or viewpoint. A very small number of excellent talent articles indicate their source, and the copyright belongs to the original source (those that cannot be verified or whose source is not indicated are all collected online). If there is any infringement, please contact us to delete or make changes. The authenticity, accuracy, and legality of the content are the responsibility of the original author. The reprinted content (videos, articles, advertisements, etc.) is only for the purpose of information dissemination and is for reference only. It does not mean that this platform agrees with its views and positions.

0 阅读:0

菩禔看科技

简介:感谢大家的关注