【CH32V303RCT6】NB模块在CTwing下的OTA升级[实操过程篇]

一、 本篇内容简介

本篇主要通过日志打印和一些云端的显示,来讲解整个SOTA升级的过程。

二、实验现象

2.1、目标代码

在这里插入图片描述

2.2、最终效果

在这里插入图片描述
当我们升级成功后,会跳转到APP_B执行程序。

三、设计思路

根据电信云平台的OTA设计特性,本次设计是通过256字节作为一次传输长度(数据段),具体不了解的同学可以看这篇有介绍
【CH32V303RCT6】NB模块在CTwing下的OTA升级
当看完这篇再回头看这篇,可能会印象深一点,不然就跟可能会有点头大。

3.1、升级包处理

由于原始数据包没有校验位,无法得知在下发数据过程中有没有发生数据错误,故为了整个目的,想着给他加上个校验位和数据长度位(各占用四个字节)。
首先。每一帧数据是256字节,通过写一个上位机,将IDE生辰的bin文件,在其前面加上校验位和数据长度,这个长度是真实的应用长度,即未处理时BIN文件的长度,也就是我们写入flash中数据的长度。

上位机图片:
在这里插入图片描述
效果如下:
在这里插入图片描述
第一个是整个原始BIN文件的CRC32校验值,后四个字节是数据大小,由图可知,是7300字节。

然后,当接收到第一帧数据时,将这个值取出来,然后按照这个长度,擦除flash
在这里插入图片描述
由于CH32V303RCT6一页是256字节,故7300/256= 28.5,所以应该擦除29页。

在这里插入图片描述
擦除完以后,接下来就是接收数据,每一帧都有校验位,故对每一帧都进行校验,校验没有问题,就按照顺序将这些数据写入flash中,
在这里插入图片描述
这个动作一直持续到数据接收完成,
当接收完成后,就要告诉服务器,我接受完了,要不要准备升级。
在这里插入图片描述
当发送完AT+CTM2MSEND=FFFE0116850E000100这个时,就会收到平台的消息fffe0117cf900000
这个时候再发送个AT+CTM2MSEND=FFFE0117B725000100告诉它那我就升级了。
此时本地就应该进行数据校验,,校验没问题,就开始执行升级。
升级完成后,要告诉平台,当前升级后的版本,平台会更新这个版本。
在这里插入图片描述

我这里为了演示简单,直接校验没问题,就上发升级成功,然后再进行跳转,这样好做点,不然有得加很多东西,比如标志位要写入FLASH中,以及在新程序中加入SOTA部分函数。麻烦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值