58 ESP32 OTA升级(双OTA分区无factory APP)

IAP 内存分区方案对比:双 APP 备份 vs 单 APP 的 4 种设计权衡 本文深入对比了嵌入式系统中IAP(In-Application Programming)技术的两种内存分区方案:双APP备份与单APP设计。通过分析4种单APP变体方案与双APP方案的存储效率、故障恢复能力和实现复杂度,为开发者提供了工业级实现建议,包括安全增强措施、性能优化技巧和典型芯片实施方案,帮助解决固件升级中的可靠性挑战。 阅读详情
AI摘要

本文介绍了在ESP32资源有限(4M flash)的情况下,如何通过使用双OTA分区而非factoryAPP,成功实现固件的远程升级,包括分区划分、升级机制和下载写入过程。作者提供了详细的模块化代码示例和关键步骤。

1 引言

        产品功能实现后,就要对产品的维护进行考虑。产品出来后,卖了N台出去,如果突然发现自己一行代码写错了,怎么办,肯定不能去现场吧N台设备,免费出差旅游也累啊,所以一般需要有远程升级设备的功能,此篇为对ESP32 OTA实验经验总结。

2 问题

        当前ESP32官方例程,以及网络上的经验例程,都是factory APP + 双OTA_x 方式。我选用的esp32是4M flash的,现在编译的固件大小是1.3M,按照上述的方式,需要用到的空间是:1.3M * 3 =3.9M。

        只有4M大小flash的我,很明显,这看起来马上就不能用,也不够用了。所以,按照网上或官网那种分区的方式,肯定不行。

        然后在继续查找经验过程中,发现有人没有用官方的factory APP+双OTA_X方式,而是直接双OTA_0和OTA_1,没有factory这个东东,省下了1倍固件大小的空间,所以只有4M flash的我,就采用这个方案了。

3 双OTA no factory APP实现

要做OTA升级,需要了解的内容是:

        1.如何对flash划分分区?

        2.升级机制是怎样的?

        3.如何将固件从网络上download下来并写到flash中,以及标记相关参数?

对于问题1:如何对flash进行分区划分?

        对这个问题,我一开始比较迷惑。因为esp32给出的ota升级的demo,是需要三个分区,即factory app+OTA1+OTA2,按照这算法,所需flash的大小是单个app的三倍。

        然后我固件大小是1.3M,整块flash大小4M,这样算下来3*1.3 = 3.9M,显然不够,所以一开始迷惑了。官方怎么不给只有两个的,完全两个就搞定了,然后经过资料搜索,和尝试,最后确认两个OTA分区,不需要factory app也是可以的,所以就敲定了以下的分区划分。

对于问题2:升级机制是怎样的? 

        esp32 OTA的升级机制跟传统的机制是一样的,来回切换,就这样。。。。

对于问题3:如何将固件从网络上download下来并写到flash中,以及标记相关参数?

        下载的话,我采用了httpget方式,将文件从http服务器下载下来。至于下载下来的文件写入flash和如何标记OTA_data相关参数,直接参考官方例程即可。整个搞下来其实不难,要花一点时间调试而已。 

        本实验采用的方式是模块化编程,所以下面给出的代码都是模块独立的,稍微移植就可以用。

#includ
ESP-IDF:ESP32 fatory分区不够用,重新分区的方法 阅读详情

相关推荐

ESP32 OTA升级

本文主要介绍了ESP32如何实现OTA升级,包括代码示例、代码讲解以及注意事项等等。读者可以通过学习本文,了解ESP32 OTA升级的原理和实现方式,并可以应用到实际项目中。同时,也需要注意OTA升级期间的一些注意事项,以保证升级成功。

朽木自雕i的博客 7481

ESP32-S3 N16R8模组开发实战:PlatformIO工程搭建与PSRAM深度应用

ESP32-S3 是乐鑫推出的双核Wi-Fi+蓝牙SoC,以低功耗、高集成度和丰富外设广泛应用于物联网终端。其核心能力依赖于合理利用片上SRAM(520KB)与外扩PSRAM(如N16R8标配8MB),而内存资源约束直接决定能否运行图像处理、音频缓存或OTA升级等典型场景。PlatformIO凭借对ESP-IDF的原生支持,提供细粒度Flash模式配置、PSRAM显式内存段控制及自定义分区表管理能力,成为N16R8这类裸模组量产开发的事实标准工具链。本文聚焦资源受限嵌入式环境下的工程落地,覆盖从物理焊接、环

weixin_34178244的博客 160

ESP32-S3 N16R8开发环境深度搭建指南

嵌入式开发中,开发环境不仅是工具链集合,更是硬件能力与软件抽象之间的信任契约。ESP32-S3作为支持Wi-Fi 6、BLE 5.0、USB OTG及AI加速器的高性能MCU,其N16R8型号配备8MB PSRAM与16MB Flash,要求开发者从传统Arduino范式转向PlatformIO+ESP-IDF的白盒化构建体系。理解PSRAM初始化、分区表配置、CH343驱动适配及UFOA加速器调用等底层机制,是实现边缘AI、低功耗OTA和实时图形界面的前提。本文聚焦ESP32-S3 N16R8在VS Co

ciya3282的博客 357

ESP32-S3端云协同AI架构设计与实战

轻量级AI设备的核心在于端侧感知与云端智能的有机协同,而非简单堆砌算力。本文围绕嵌入式AI落地的关键矛盾——资源受限与智能需求之间的张力,解析如何基于ESP32-S3构建分层解耦的端云协同架构:通过感知层(USB摄像头+TFLite Micro)实现低延迟特征提取,执行层(FreeRTOS+确定性指令引擎)保障本地即时响应,协同层(MQTT+FlatBuffers+安全OTA)确保可靠通信与热更新,进化层(模型仓库+AB测试)支撑能力持续演进。该方案兼顾TinyML、边缘计算与云原生工程实践,适用于AI陪伴

优快云头条 688

【ESP32】第4篇 OTA 流程概览 与 OTA 数据分区

工厂启动设置下,OTA 数据分区中应没有数据(所有字节擦写成 0xFF)。如果分区表中没有工厂应用程序,则启动第一个可用的 OTA 分区(通常是。OTA 数据分区的容量是 2 个 flash 扇区的大小(0x2000 字节),防止写入时电源故障引发问题。OTA 功能启动后,向当前未用于启动的 OTA 应用分区写入新的应用固件镜像。镜像验证后,OTA 数据分区更新,指定在下一次启动时使用该镜像。第一次 OTA 升级后,OTA 数据分区更新,指定下一次启动哪个 OTA 应用程序分区。

Fanjufei的博客 487

SpringBoot不用三方框架,怎么动态调度定时任务,ScheduledExecutorService 详解

Spring Boot 提供了强大的定时任务支持,无需依赖任何第三方框架,即可轻松实现可配置的定时任务。通过使用 `@EnableScheduling` 注解启用定时任务支持后,我们可以利用 `@Scheduled` 注解来定义定时任务的方法,这些方法可以在指定的时间间隔或特定时间点自动执行。 我们还可以通过集成 `ScheduledExecutorService` 来实现灵活的定时任务管理。`ScheduledExecutorService` 是 Java 标准库的一部分,能够以固定速率或延迟执行任务,

横竖撇折点 1939

大语言模型无代码构建知识图谱概述

由示例可以看出,大语言模型的泛化能力能够非常精准的抽取文本中的实体、关系等知识信息。其能够大大提升知识提取的效率与准确性。HuggingFists低代码平台的出现进一步促进了知识图谱构建的效率。它大幅降低了知识图谱构建人员的技术要求,使得从事该工作的人员有了更大的选择范围。不断下降的构建成本,意味着可以有更多的客户享受到知识图谱带来的业务价值。

colorknight的专栏 1817

手把手用LTspice仿真运算放大器电路:从虚短虚断到频响分析

本文通过LTspice仿真软件,手把手教你从搭建基础运算放大器电路开始,验证虚短虚断原理,并逐步深入频响分析与稳定性探究。内容涵盖反相/同相放大器、积分器仿真,导入真实运放模型进行蒙特卡洛分析,以及利用交流分析和波特图评估电路性能,帮助工程师和学生将抽象理论转化为直观、可测量的仿真结果,提升电路设计实战能力。

salt9的博客 1094

计算机视觉与深度学习实战:以Python为工具,基于帧间差法进行视频目标检测

计算机视觉是一门研究如何使机器从数字图像或视频中提取、分析和理解有用信息的学科。它涉及图像处理、计算机图形学、人工智能等多个领域的知识。通过计算机视觉技术,我们可以实现图像的识别、分类、目标检测等功能。本文介绍了计算机视觉与深度学习的基本概念和原理,并以Python为工具,基于帧间差分法实现了视频目标检测。帧间差分法具有算法实现简单、程序设计复杂度低、对光线等场景变化不太敏感等优点,因此在实际应用中得到了广泛的应用。然而,帧间差分法也存在一些局限性,如对于缓慢移动或静止的物体检测效果不佳。

一个好知识的传播者 1256

从零实现深度学习框架——理解正则化(一)

本文介绍解决过拟合与欠拟合的方法——正则化,主要介绍L1和L2正则化。

日积月累,天道酬勤 3394

英伟达(NVIDIA) 显卡型号、计算能力(CC)、CUDA版本、PyTorch版本 对照表

本文全面梳理NVIDIA显卡型号与其计算能力(CC)的对应关系,并详解各代CUDA版本对不同架构的支持与弃用情况,帮助用户判断硬件兼容性。同时,结合PyTorch官方发布版本,整理其支持的CUDA版本清单,指导开发者合理选择深度学习环境配置。涵盖从Jetson嵌入式设备到H100、Blackwell等最新旗舰显卡,是一份实用的AI开发环境搭建参考指南。

寒水馨 · 轻量级技术文档 · hanshuixin.org 4890

基于STM32的多传感器融合的设施农业小型搬运机器人避障控制系统设计

针对设施农业场景中狭窄通道、障碍物多样(如农机具、作物植株、水管)的特点,设计一款基于 STM32 的小型搬运机器人避障控制系统。系统通过多传感器融合实现 360° 环境感知,采用模糊 PID 控制算法实现平滑避障,满足温室、大棚等场景的搬运需求。通过在温室环境测试,系统可实现对直径≥5cm 障碍物的有效检测(检测距离误差≤5%),避障转向半径≤30cm,平均功耗≤15W。后续可通过增加激光雷达(如 TFmini)提升远距离障碍物检测能力,结合 SLAM 算法实现路径规划。

weixin_42300449的博客 860

【人工智能】拒绝焦虑,理性突围:AI 时代 Java 工程师的职业重构与进化指南

摘要:在AI技术快速发展的背景下,Java工程师面临职业转型挑战。本文通过MECE原则解构工作内容,划分高替代风险区(如CRUD开发)、高增效潜能区(如逻辑优化)和高核心壁垒区(如架构设计),指出AI对不同任务的影响程度。从劳动经济学视角分析行业将呈现K型分化,初级执行者被替代,而精通AI协作的全栈工程师需求增长。文章强调警惕过度依赖AI导致认知能力退化,并提出转型路径:掌握AI驱动开发(AIDD)、深耕领域驱动设计(DDD)、拓展全流程能力及AI原生应用开发。最终结论指出,未来的核心竞争力在于结合AI工具

奶爸的编程之路,也就一周冷个三天 135

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: 57 spi电平转换的坑
下一篇: 59 Linux socket的select编程
Chasing_Chasing
博客等级 码龄10年 233粉丝 87原创
评论 12
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值