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

news2024/11/15 11:08:36

一、 本篇内容简介

本篇主要通过日志打印和一些云端的显示,来讲解整个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部分函数。麻烦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1931918.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【自撰写】【国际象棋入门】第11课 对局实例分析(一)

第11课 对局实例分析(一) 本次课中,我们来分析一例真实的对局。对局弈于“国象联盟”APP,日期为2024年6月13日星期四,我执黑。开局伊始,白方的布局略占优势,中局阶段黑方一直保持着微弱的领先&…

[AWS]CodeCommit的创建与使用

背景:CodeCommit是AWS自带的代码管理仓库,使用起来很不顺手,不如自建的gitlab仓库。不足之处很多,比如:缺乏可视化工具、用户管理麻烦,仓库管理手段贫瘠。 老板为了简单就使用了CodeCommit进行管理&#xf…

一个用于管理多个 Node.js 版本的安装和切换开源工具

大家好,今天给大家分享一个用于管理多个Node.js版本的工具 NVM(Node Version Manager),它允许开发者在同一台机器上安装和使用不同版本的Node.js,解决了版本兼容性问题,为开发者提供了极大的便利。 在开发环…

Mongodb多键索引中索引边界的混合

学习mongodb,体会mongodb的每一个使用细节,欢迎阅读威赞的文章。这是威赞发布的第93篇mongodb技术文章,欢迎浏览本专栏威赞发布的其他文章。如果您认为我的文章对您有帮助或者解决您的问题,欢迎在文章下面点个赞,或者关…

ubuntu搭建harbor私仓

1、环境准备 链接: https://pan.baidu.com/s/1q4XBWPd8WdyEn4l253mpUw 提取码: 7ekx --来自百度网盘超级会员v2的分享 准备一台Ubuntu 机器:192.168.124.165 将上面两个文件考入Ubuntu上面 2、安装harbor 安装Docker Harbor仓库以容器方式运行,需要先安装好docker,参考:…

移动终端的安全卫士

随着移动互联网的快速发展,移动端安全风险频发。设备指纹技术凭借高精度的设备识别能力,能够帮助企业提升移动端安全防护能力,精准区分合法与风险行为,跨行业赋能风控,为金融、电商、游戏等多领域提供强大的业务安全保…

不想填邀请码?Xinstall来帮你,一键安装无忧愁

在这个快节奏的时代,每一个点击都承载着用户的期待与耐心。然而,在下载App的过程中,繁琐的邀请码填写往往成为了用户体验的一大障碍。你是否也曾经因为不愿填写邀请码而放弃了一款心仪的App?今天,就让我们一起走进Xins…

STM32智能交通监测系统教程

目录 引言环境准备智能交通监测系统基础代码实现:实现智能交通监测系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景:交通监测与管理问题解决方案与优化收尾与总结 1. 引言 智能交通监测系统通…

1千多看图猜成语游戏ACCESS\EXCEL数据库

今天闲来无事想写个代码自己搞定,我不写代码已经很久了,主要是年纪不小了对新技术的学习比较吃力,兴趣也被生活打磨的体无完肤。今天又捡起VB(暴露了年纪)搞了一下。 当然,很多事情都是这样,自己…

【入门级】docker

开头处生动的描述一下”码头工人”吧:小鲸鱼(登记处Registry:比如docker hub官方)背着好多集装箱(仓库repository:存放各种各样的镜像,一般存放的是一类镜像,这一类镜像中通过tag 版…

数据安全的护航者:数据脱敏与敏感词过滤详解

数据安全重要性 发散问题,大家最近有没有因隐私或者敏感数据泄露而产生的问题以及烦恼? 生活中,手机、身份证、社保账号等泄露引发的困扰 工作中.... 之前测试环境发送邮件给客户的用户等 1、什么是数据脱敏 定义:数据脱敏是…

【算法笔记自学】第 9 章 提高篇(3)——数据结构专题(2)

9.1树与二叉树 #include <cstdio>int main() {int n, m;scanf("%d%d", &n, &m);printf(n m 1 ? "Yes" : "No");return 0; } 9.2二叉树的遍历 #include <cstdio> #include <vector> using namespace std;const int…

useState函数

seState是一个react Hook(函数)&#xff0c;它允许我们像组件添加一个状态变量&#xff0c;从而控制影响组件的渲染结果 数据驱动试图 本质&#xff1a;和普通JS变量不同的是&#xff0c;状态变量一旦发生变化组件的视图UI也会随着变化(数据驱动试图) 使用 修改状态 注意&am…

tracert及Test-netconnection使用

tracert命令 tracert <参数> <目标 IP 或主机名>-d 不将地址解析成主机名。 -h maximum_hops 搜索目标的最大跃点数。 -j host-list 与主机列表一起的松散源路由(仅适用于 IPv4)。 -w timeout 等待每个回复的超时时间(以毫秒为单位)。 -R 跟踪往返行程路径(仅适用…

【iOS】——ARC源码探究

一、ARC介绍 ARC的全称Auto Reference Counting. 也就是自动引用计数。使用MRC时开发者不得不花大量的时间在内存管理上&#xff0c;并且容易出现内存泄漏或者release一个已被释放的对象&#xff0c;导致crash。后来&#xff0c;Apple引入了ARC。使用ARC&#xff0c;开发者不再…

docker搭建普罗米修斯监控gpu

ip8的服务器监控ip110和ip111的服务器 被监控的服务器110和111只需要安装node-export和nvidia-container-toolkit 下载镜像包 docker pull prom/node-exporter docker pull prom/prometheus docker pull grafana/grafana新建目录 mkdir /opt/prometheus cd /opt/prometheus/…

微软的vscode和vs2022快捷键官网链接

vscode官方文档:https://code.visualstudio.com/docs/ vscode快捷键官方文档:https://code.visualstudio.com/docs/getstarted/keybindings vs2022官方文档:https://learn.microsoft.com/zh-cn/visualstudio/ide/?viewvs-2022 vscode快捷键官方文档:https://learn.microsoft.c…

石头剪刀布休息(猜拳游戏)

自己写的简易版 //2024.07.17 import java.util.Scanner; import java.util.Random; public class GuessingGame {public static void main(String[] args) {Tom tm new Tom();System.out.println("");for (int i 0; i < 3; i) {Random r new Random();tm.com…

数据可视化在智慧医疗中的重要应用

在现代智慧医疗的推动下&#xff0c;数据可视化技术正日益成为医疗领域的重要工具。通过将复杂的医疗数据转换为直观的图表和图形&#xff0c;数据可视化不仅提升了医疗服务的效率&#xff0c;还极大地改善了患者的就医体验。 在智慧医疗中&#xff0c;数据可视化首先在电子病历…

Android View的绘制流程

1.不管是View的添加&#xff0c;还是调用View的刷新方法invalidate()或者requestLayout()&#xff0c;绘制都是从ViewRootImpl的scheduleTraversals()方法开始 void scheduleTraversals() {if (!mTraversalScheduled) {mTraversalScheduled true;mTraversalBarrier mHandler…