OTA远程升级实现记录

news/2025/11/5 11:49:38/文章来源:https://www.cnblogs.com/zero-000/p/19193188

OTA远程升级实现记录

STM32程序更新实现

MCU程序更新逻辑是:

  1. STM32的flash地址从0x0x0800 0000开始,将flash中分出三个分区,分别作为BootLoaderAPP1APP2,每个区都可能存储着各自的代码程序
  2. MCU上电、复位后从 0x0800 0000 进入BootLoader程序,检测某个自定义的标志位(存储在掉电不丢失设备中),判断是否有程序需要更新
  3. 如果需要更新,则擦除APP1中的程序,将APP2分区中的程序写入到APP1后,擦除APP2、清除升级标志位并复位MCU
  4. 如果不需要更新,则跳转到APP1,执行APP1中的程序

烧录可以设置烧录的目标Flash位置,如果我分区设置是:

  • BootLoader(0x0800 0000 ~ 0x0x0800 3FFF)
  • APP1(0x0800 4000 ~ 0x0x0800 FFFF)

则若要代码直接烧录到APP1分区,则需要做如图设置:

image

这样直接烧录的话,需要BootLoader程序才能跳转到此,并且想要正常执行该程序的话,还需要在该分区程序中的main函数开头进行中断向量表位置的修改:

SCB->VTOR = FLASH_BASE | 0x00004000UL; //! 更改中断向量表地址

不同分区有了不同程序后,就需要实现从一个分区的程序跳转到另一个分区程序,其关键点在于堆栈寄存器(MSP)和程序计数寄存器(PC),基本逻辑是:

  1. 复位BootLoader程序中使用到的外设
  2. 修改堆栈寄存器,使其指向目标分区的堆栈起始位置
  3. 修改程序计数寄存器PC,使其指向目标分区的复位向量
// 修改MSP寄存器
__asm void MSR_MSP(uint32_t addr){MSR MSP, r0	// 将传入的地址存储到堆栈寄存器BX  r14
}typedef void (*pc_adjust)(void);// 跳转APP1区
void bootloader_executeapp(void){pc_adjust pc;// 检查栈顶地址正确性if(( (*(uint32_t *) APP1_ADDR) & 0x2FFE0000 ) == 0x20000000){MSR_MSP(*(uint32_t *) APP1_ADDR);pc = (pc_adjust)(*(uint32_t*)(APP1_ADDR+4));pc();	// 调用函数,会使得PC寄存器存储该函数入口地址}
}

在APP1分区烧录程序后,该分区首地址的第一个条目(4个字节)存储的是该程序的堆栈指针,第二个条目存储的是复位向量,因而以上代码使用到*(uint32_t *) APP1_ADDR*(uint32_t*)(APP1_ADDR+4)

能够在BootLoader程序中进行跳转,也能在不同分区存储程序后,通过手动在APP2中烧录新的程序并设置更新标志位,即可基本实现一个程序更新的例子。此后的IAP/OTA无非就是关于”如何将新的程序写到APP2“的问题。

STM32串口IAP实现

IAP指 In-Application Programming ,而串口IAP是借助上位机工具和modem协议,将.bin文件通过串口传输给MCU,MCU再进行程序更新。具体效果有个OTA升级的博客里的动图很直观:notes: 我的笔记, 简单的进行了归纳 - Gitee.com

我自己使用的是Ymodem协议,具体参考了以下博客,里面也介绍了Ymodem:Xmodem 协议介绍及应用(基于 ESP-IDF) - 知乎。

在该博客中关于Ymodem的地方有个需要注意的地方:

image

STM32+ESP-01S通过OneNET的远程OTA升级实现

OTA远程升级的实现需要借助云平台和相关网络通信模块,此处使用OneNET作为平台、ESP-01S作为模块(存粹因为手头有+4G模块太贵)。由于使用OneNET进行OTA升级需要使用HTTP协议,所以和MQTT没啥关系,对ESP8266相关模块而言,使用基本AT指令和TCP/IP相关AT指令即可实现通信。AT 命令集 — ESP-AT 用户指南 文档

  1. AT+RST 复位
  2. AT+CWMODE 设置为客户端模式
  3. AT+CWDHCP 启用 SoftAP 的 DHCP
  4. AT+CWJAP 连接2.4G网络(一般使用手机热点)
  5. AT+CIPSTART 可进行HTTP协议的连接
  6. AT+CIPSEND 可进行HTTP协议的发送

使用OneNET就首先需要在OneNET创建产品和升级包,具体方式参考了9-新版OneNet平台 使用网络调试助手软件 构建测试OTA升级整个流程报文数据_哔哩哔哩_bilibili。接着需要MCU通过ESP01S连接云平台、向发送、获取内容。具体需要发送的消息内容、格式是什么可直接参考OneNET平台官方文档(OneNET文档中心),下面介绍一些基本的需要发送的内容包括:

  1. 上传当前版本号
  2. 查询云平台的OTA任务
  3. 分片下载程序包

需要注意的是官方文档中的存在错误:
image

官方文档直接给出HTTP格式的内容,而在程序中传送的有关HTTP内容的字符串和其中还有一些不一样(没有学过HTTP,因而只是照猫画虎……)

image


参考内容:

  • notes: 我的笔记, 简单的进行了归纳 - Gitee.com

  • OneNET文档中心

  • AT 命令集 — ESP-AT 用户指南 文档

  • Xmodem 协议介绍及应用(基于 ESP-IDF) - 知乎

  • 9-新版OneNet平台 使用网络调试助手软件 构建测试OTA升级整个流程报文数据_哔哩哔哩_bilibili

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

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

相关文章

结构(1)While和DoWhile

结构(1)While和DoWhile结构(1)While和DoWhile While package com.kun.struct;public class WhileDemo01 {public static void main(String[] args) {// 输出1到100int i = 0; // 初始化变量i为0while (i < 100)…

2025 年工业风机厂家最新推荐排行榜:涵盖离心、高温、防腐、耐磨、防爆等类型设备实力厂商精选

引言 在当前工业生产中,风机作为关键的流体输送与通风设备,对生产效率、安全保障及节能减排成效起着决定性作用。随着冶金、化工、电力等行业的快速发展,市场对风机的耐高温、防爆、耐腐蚀等特性要求愈发严苛,一级…

详细介绍:人工智能系统学习之 FastAi 学习笔记(二)-卷积神经网络(CNN)

详细介绍:人工智能系统学习之 FastAi 学习笔记(二)-卷积神经网络(CNN)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-famil…

2025年深圳离婚律师事务所权威推荐榜单:股权分割律师/离婚房产律师/房产分割律所团队精选

在婚姻家事法律服务领域,专业律所的选择直接影响案件结果。根据近三年案件承办量、客户满意度、行业奖项及专业能力等数据维度,本文精选深圳地区多家具有代表性的离婚律师事务所,为需要婚姻家事法律服务的群体提供参…

2025 年洗车用品厂家最新推荐排行榜权威发布,聚焦跨区域供应与定制服务实力云南源头洗车用品 / 智能洗车用品 / 家用洗车用品公司推荐

引言 2025 年民用汽车保有量已达 3.52 亿辆,汽车后市场的爆发式增长带动洗车用品需求激增,但行业深陷多重困境。传统供应商多聚焦单一产品销售,难以满足 “设备 + 服务” 的一体化需求,跨区域配送时效差、定制化能…

2025年11月中国装饰公司推荐榜单:十大优质装修企业排行分析

随着家装市场日益成熟,许多业主在装修时面临选择困难。2025年,中国装修行业呈现标准化、透明化趋势,但消费者仍常遇到预算超支、工期延误、质量参差不齐等问题。根据国家住房和城乡建设部发布的行业数据,2024年家装…

2025年武汉美食必吃榜服务权威推荐榜单:美食推荐/好吃的餐厅/好吃的美食源头服务商精选

在武汉这座以"早餐之都"闻名全国的城市,美食不仅是日常所需,更是一种文化传承与生活方式。根据2025年大众点评"必吃榜"数据显示,武汉以75家上榜商户数量位列全国第七,其中本地特色美食商户占比…

2025年北京婚姻诉讼律师权威推荐榜单:继承律师/离婚诉讼律师/房产分割律师团队服务商精选

面对婚姻诉讼中的情感纠葛与复杂法律关系,专业律师的选择成为保障权益的关键 据不完全统计,2024年北京地区婚姻诉讼案件数量同比增长18.3%,其中涉及财产分割争议的案件占比72.6%,涉外婚姻纠纷数量增长15.8%。在如此…

AspNetCoreModuleV2安装Hosting,一直失败解决方案

名称:AspNetCoreModuleV2 路径:C:\Program Files\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll(需要安装.net Hosing版本才有)

2025年11月橱柜品牌推荐榜单:权威分析与选购指南

在装修新家或改造旧厨房时,橱柜作为厨房的核心组成部分,其选择往往关系到整体空间的实用性、美观性以及长期使用的舒适度。对于许多消费者而言,面对市场上众多的橱柜品牌,如何挑选出既符合个人需求又具备可靠品质的…

基于DTW和HMM的语音识别仿真

一、算法原理与仿真框架 1. 系统架构设计2. 核心算法对比指标 DTW算法 HMM算法适用场景 孤立词识别(固定词汇量) 连续语音识别(大词汇量)计算复杂度 O(n)(动态规划) O(TNM)(状态转移)抗噪性 对环境噪声敏感 通…

2025 年护眼灯品牌最新推荐排行榜:精选优质品牌,深度解析生产实力与护眼优势

引言 居家学习、办公场景的常态化让护眼灯从 “可选品” 变为 “必需品”,儿童网课、成人熬夜办公、老人阅读等场景均对专业照明有迫切需求。但当前市场乱象频发:部分产品蓝光超标、频闪严重,甚至存在虚假宣传,不仅…

2025年苏州企业周年庆策划公司权威推荐榜单:大型活动策划公司/趣味运动会策划/企业年会策划源头公司精选

在苏州这座经济活跃、文化繁荣的城市,企业周年庆活动已成为展示企业形象、凝聚团队力量的重要载体。根据行业数据显示,2025年苏州活动策划市场规模预计突破80亿元,其中企业周年庆策划需求占比达25%,较2023年增长15…

2025 年护眼吸顶灯品牌最新推荐排行榜:品牌实力测评及选购指南权威发布

引言 2025 年 7 月新版读写作业台灯性能要求正式实施后,RG0 蓝光等级与无可视频闪成为强制条款,护眼照明市场进入 “健康光” 淘汰期。然而调研显示,家庭光环境不合格率仍高达 68%,蓝光峰值过高、显色指数不足等问…

Ollama和vLLM大模型推理性能对比实测

在部署大模型推理服务的时候,Ollama和vLLM是目前最常见的两个大模型部署工具,这里选择英伟达的RTX 3090比较Ollama和vLLM这两个工具在大语言模型推理场景下性能表现,使用Qwen3模型、控制同样的API推理参数,测试并发…

wireguard组网

一、需要准备事项: 1.有IPV4的公网服务器 2.公网服务器安装好docker 二、公网服务器docker安装服务端 1.安装docker curl -sSL https://get.docker.com | sh //安装docker2.生成wireguard的密码哈希值 docker run --…

误解对象的“引用名”跟对象的“名称属性”(`__name__`)引发的一则错误

class MyMetaclass(type):def __new__(cls,*args,**kwargs):print("MyMetaclass中的new被执行")return super().__new__(cls,*args,**kwargs)def __init__(self,*args,**kwargs):print("MyMetaclass中的…

React系列教程:8. 传递函数

函数组件 // src/components/Hello1.jsximport { useState } from reactfunction Hello1 (props) {const [ hello1, setHello1 ] = useState(world1)setTimeout(() => {setHello1(world2)}, 2000)return ({/* 执行父…

杂题选记(10.26 - 11.1)

P12029 [USACO25OPEN] Election Queries G 记 \(c_i\) 为投票给 \(i\) 的人数。那么两头奶牛 \(x\),\(y\) 能成为领队的条件是 \(c_x + c_y \ge c_max\),其中 \(c_max = \max{c_i}\)。 考虑单次查询,用双指针可以轻…

P3953 [NOIP 2017 提高组] 逛公园 题解

P3953 [NOIP 2017 提高组] 逛公园 题解P3953 [NOIP 2017 提高组] 逛公园 题解 题目传送门 我的博客 前言 笔者的做法是最短路+记忆化搜索+DP,目前没有写完其他做法。 思路 拿到这道题后笔者第一个想法是跑一个Dijkstr…