从 MCU 到 Linux:机器人嵌入式OTA升级原理解密

扫地机器人双脑架构:Linux与STM32的安全分工设计 嵌入式系统中,实时安全控制与智能决策常面临根本性张力。Linux作为通用操作系统,擅长复杂任务调度与网络交互,但其非确定性调度、内存管理机制及OTA更新流程,天然难以满足毫秒级响应、零容忍失效的物理安全需求;而STM32等裸机MCU凭借确定性执行、硬件直连与固件原子更新,成为不可绕过的安全锚点。这种‘Linux主智、STM32主安’的分层架构,本质是将功能安全责任从软件抽象层下沉至物理硬件层,广泛应用于服务机器人、智能家居终端及工业边缘设备中——本文以量产扫地机器人为例,解析双脑协同如何实现建图导航与紧急制 阅读详情

OTA升级不是"下载一个bin文件往里写"这么简单。本文聚焦两种主流方案——MCU的双Bank架构与Linux的A/B分区,讲清楚升级过程中"断电不失手,变砖可回滚"的核心机制,并对比 SWUpdate、Mender、RAUC三大开源工具。


一、OTA升级核心原理

无论MCU还是Linux,OTA的本质都是先写备份、再切换、最后擦除的三步走:

🔴 异常处理

否

是

重启验证

🟢 第三步:Bootloader校验并写入目标分区

从备用区读取固件

验签+验完整性

解压(如已压缩)

写入目标Flash分区

更新启动标记

🟡 第二步:重启进入Bootloader

设置更新标志位

跳转至Bootloader

Bootloader读取标志位

🔵 第一步:下载固件到暂存区

接收.swu/.bin固件包

完整性校验
SHA-256 / CRC32

签名验证
RSA / ECDSA

写入备用区

启动成功?

回滚至旧版本

报告升级失败

断电不失手的秘密:新固件永远先写入备用区,原固件原地不动。断电发生时Bootloader依然能加载旧系统。


二、MCU方案:双Bank架构

MCU没有文件系统,Flash直接被分成两块——Bank A和Bank B,轮着用。

2.1 Flash分区结构

MCU Flash 分区布局

Bootloader
固定区域
永不改动

App Bank A
当前运行固件

App Bank B
备用区
接收新固件

Config区
升级标志/版本号

2.2 双Bank升级流程

OTA升级路径

正常启动路径

是

否

是

标志指向B

上电/复位

Bank A 可用?

从Bank A启动

运行App

接收新固件

写入Bank B

Bank B 验签

验签通过?

丢弃Bank B
保持Bank A

设置升级标志
bank_to_boot=B

系统重启

从Bank B启动

运行新固件

Bank A变为备用区

BA

BB

2.3 常见MCU OTA开源方案

方案特点适用场景
MCUBoot开源安全Bootloader,支持签名验签、AES加密、双BankNXP/i.MX系列
STM32FOTAST官方方案,支持X-CUBE-BLE/X-CUBE-SBSFUSTM32全系列
ESP8266/ESP32 OTAWiFi模块内置,支持HTTP/HTTPS差分升级ESP系列
TI UNIFLASH德州仪器方案,支持Serial/BLE/WiFi多种方式TI CC系列

三、Linux方案:A/B分区

Linux设备有文件系统,OTA分区远比MCU复杂。主流方案是用A/B分区实现无缝切换。

3.1 eMMC/SD卡分区结构

Config配置区

UBoot环境变量
bootlimit/bootpart

Data数据分区

数据分区
配置文件/日志/应用数据

Rootfs分区 A/B

rootfs A
当前系统

rootfs B
备用系统

Boot分区 A/B

Kernel A

Kernel B

3.2 A/B分区升级流程

新系统启动验证

重启切换

OTA下载写入

当前系统运行中

后台下载

成功

失败

rootfs A 正在运行
应用持续服务

从服务器下载.swu包

sw-description
描述镜像配置

写入rootfs B
不触碰rootfs A

更新UBoot环境变量
bootpart=B

重启

从rootfs B启动

健康检查通过?

确认升级成功
rootfs A变为备用

回滚rootfs A
保持原状

3.3 UBoot A/B切换原理

连续失败回滚

是

fail_count++

fail_count > bootlimit?

回滚至旧分区
fail_count=0

A→B 切换逻辑

setenv bootpart 2

saveenv
固化到Flash

reset

UBoot 环境变量

mmcbootpart=1
当前启动分区

mmcbootpart=2
备用分区

bootlimit=3
允许连续失败次数


四、开源方案对比

方案类型签名验签差分升级断电保护适用平台
SWUpdate块+文件级✅ RSA/ECDSA✅✅ A/B分区嵌入式Linux
Mender块级✅ RSA✅✅ A/B分区Yocto/Linux
RAUC块级✅ RSA/Ed25519✅✅ A/B分区嵌入式Linux
balenaOS容器化✅✅ delta✅ A/B分区ARM/Yocto

核心结论:三者都支持A/B分区和签名验签。SWUpdate最灵活(支持单文件更新),RAUC安全标准最高(Muttus模式),Mender与Yocto集成最深。


五、总结

OTA升级的本质是**“不破坏性写入 + 可回滚切换”**。记住一个口诀:

MCU看Bank,Linux看分区;下载写备用,重启再切换;验签不过关,坚决不刷写。

方案核心差异
MCU双BankFlash物理分成两块,Bootloader决定从哪块启动
Linux A/B分区文件系统级分区,OTA工具写备用分区,UBoot切换启动目标
共同点新固件验签通过前,原系统纹丝不动;任何阶段失败都能回滚

Bootloader解锁全解析:从安卓手机到嵌入式开发的底层控制权获取 Bootloader是嵌入式设备和计算机系统启动过程中运行的第一段代码,其核心作用类似于PC的BIOS,负责初始化硬件并加载操作系统。从原理上看,Bootloader通过验证启动流程来保障系统安全性和完整性,厂商默认锁定是为了防止恶意篡改和用户误操作。解锁Bootloader的技术价值在于开放底层权限,允许开发者刷入自定义固件、进行深度调试和系统定制,这是嵌入式开发和物联网设备固件升级(OTA)的基础。在应用场景上,无论是安卓手机刷机、STM32等MCU的应用程序调试,还是物联网设备的远程更新,都需要正确配 阅读详情

相关推荐

嵌入式系统演进:边缘智能与安全架构的实战指南

嵌入式系统正经历从封闭功能机到开放智能体的范式转移,其核心驱动力在于边缘智能的普及化与系统安全的范式升级。边缘智能通过硬件算力平民化、模型轻量化(如量化与剪枝)及MLOps流程,使设备端实时推理成为可能,实现了从感知到认知的跨越。同时,随着设备互联,安全需求从功能安全扩展到覆盖硬件信任根、安全启动、纵深防御及全生命周期管理的网络安全体系。这些技术共同指向智能物联网(AIoT)与工业物联网(IIoT)等应用场景,要求开发者在资源受限环境下平衡智能与安全,并掌握异构计算与混合关键性系统架构,以构建下一代可靠、高

weixin_34221276的博客 626

扫地机器人双脑架构解密:为什么安全底线不能交给Linux

在移动机器人设计中,算力越强、系统越复杂,安全风险反而越不可控。双脑架构正是为化解这一矛盾而生:一颗高性能芯片负责SLAM、路径规划、AI识别等复杂任务,另一颗简单MCU独立承担防跌落、防碰撞、电机急停等关键安全控制。这种“工作脑+安全脑”的分工逻辑,既保证了Linux侧功能的开放性与扩展性,又通过独立硬件、确定性调度和硬件级仲裁,将系统失效与物理伤害风险彻底隔离。目前,扫地机器人、割草机器人等家用移动设备已普遍需要这种高可靠的安全设计。理解双脑架构的原理与量产落地细节,有助于嵌入式工程师在功能与安全之间找

weixin_34197488的博客 438

OpenAMP异构多核通信:从Virtio/RPMSG原理到嵌入式实战

在异构计算和边缘计算场景中,多处理器系统(如ARM big.LITTLE、CPU+NPU)的协同工作成为关键技术。处理器间通信(IPC)是实现异构计算的核心基础,其核心挑战在于如何在不同架构、不同操作系统的处理器核心间实现高效、可靠的数据交换。传统共享内存等方式在非对称多处理(AMP)环境下存在效率与维护难题。Virtio作为虚拟化I/O的半虚拟化标准,通过定义virtqueue队列机制,为通信提供了高效的抽象通道;而RPMSG则基于Virtio构建了基于通道的消息传递协议,实现了服务发现与数据路由。Ope

weixin_34248023的博客 400

MCU芯片深度解析:从内核架构到国产替代与边缘AI

微控制器(MCU)是嵌入式系统的核心部件,它将CPU、存储器和丰富外设集成于单芯片,构成感知-决策-执行的闭环。与MPU和SoC相比,MCU更强调低成本、高可靠、低功耗和确定性实时响应,因此在汽车电子、工业控制、智能家居及消费IoT领域无处不在。一颗MCU的选型涉及内核、Flash/RAM、模拟外设、安全引擎及工具链等多维度权衡,而车规级应用还需满足AEC-Q100与ISO 26262等功能安全要求。近年来,RISC-V架构、边缘AI能力以及新能源、人形机器人等增量市场,正在重塑MCU赛道格局。国产MCU也

weixin_33906657的博客 509

实时控制系统芯片选型指南:从MCU到FPGA的架构抉择与实战流程

实时性是嵌入式控制系统的核心要求,它定义了系统对事件响应的及时性与确定性。其原理在于系统必须在严格的时间约束内完成计算与输出,这直接关系到控制环路的稳定性与精度。从技术价值看,实现硬实时控制是保障工业自动化、机器人、汽车电子等领域产品可靠性与安全性的基石。应用场景广泛,从微秒级响应的电机驱动、数字电源,到毫秒级的工业通信与设备管理,都对处理器的实时能力提出了不同层次的需求。本文聚焦于实时控制系统的芯片选型,深入剖析了ARM Cortex-M、RISC-V、DSP、FPGA等不同架构在应对确定性延迟、计算抖动

aoe41606的博客 399

ESP32双模Wi-Fi与蓝牙共存原理与实战避坑指南

Wi-Fi和蓝牙作为物联网最基础的双无线通信技术,其共存能力直接决定终端设备的连接可靠性与实时性。二者同属2.4GHz ISM频段,物理层存在天然频谱重叠与射频资源竞争,协议栈层面又涉及CPU调度、内存分配与中断优先级博弈。技术价值在于平衡集成度与确定性——ESP32虽以单芯片集成双模为优势,但受限于共享RF前端与FreeRTOS任务机制,无法真正全双工并发。典型应用场景包括智能硬件配网、工业传感器网关、低功耗定位终端等,需根据BLE扫描实时性、Wi-Fi吞吐稳定性及量产认证要求动态权衡。本文深入剖析ESP

weixin_34375251的博客 301

嵌入式软硬协同本质:BSP才是职业起点

嵌入式系统是硬件与软件深度耦合的技术体系,其核心不在于孤立的‘嵌软’或‘嵌硬’岗位划分,而在于底层资源抽象与物理实现的统一。BSP(板级支持包)作为连接硅片与代码的宪法级接口,承载着启动初始化、设备驱动、内存映射等关键职责,直接决定系统能否可靠运行。掌握BSP开发能力,意味着同时具备硬件时序理解力、寄存器级编程能力和Linux内核裁剪经验,是突破应用层局限、进入高价值系统工程领域的关键跃迁点。本文聚焦大学生真实成长路径,以STM32、i.MX6ULL、ESP32-C3等典型平台为载体,解析从固件调试到设备树

weixin_34405557的博客 325

工业4.0核心技术:TSN、实时处理、HMI与安全融合实践

在工业物联网和智能制造领域,实现IT与OT的深度融合是核心目标,这依赖于一系列关键技术的协同。从基础概念来看,确定性网络是工业控制系统的基石,它要求数据传输具备可预测的低延迟和低抖动,这与传统以太网的‘尽力而为’特性形成鲜明对比。其原理在于通过时间同步、流量调度和整形机制,为不同优先级的工业数据流提供有保障的传输通道。这项技术的核心价值在于打破数据孤岛,为实时控制、机器视觉和数据分析提供统一的网络基础,从而直接提升设备综合效率(OEE)并实现预测性维护。典型的应用场景包括运动控制、产线协同和边缘计算数据回传

weixin_33858485的博客 451

DRV8818+STM32L081步进电机工业控制方案

步进电机驱动是工业自动化与机器人运动控制的基础技术,其核心在于高精度电流控制、低功耗实时响应与强抗扰闭环能力。DRV8818PWPR凭借内置电流反馈、微步细分和工业级故障诊断,实现±0.05步定位精度;STM32L081CB以90μA/MHz超低功耗、硬件AES加密与高精度定时器,支撑长期免维护运行。该组合在-25℃~70℃宽温、EMC严苛、BOM受限的产线场景中,替代传统PLC脉冲模块或ROS2复杂栈,广泛应用于精密点胶、协作机器人关节、AGV履带驱动等对可靠性与成本极度敏感的领域。

weixin_34161083的博客 444

【信息科学与工程学】【控制科学】第十二篇 微型计算机控制技术01

更精确的经典模型:I1在第5周期WB结束,I2最早可在第6周期进入EX,但I2在ID阶段就需要R1,因此I2的ID需在第6周期,而I1的WB在第5周期,所以I2的ID可以紧接在第6周期,但中间仍有一个stall(因为I1的EX结果要等到MEM之后才能转发给ID?有优先级继承后,Task_L被提升优先级,不会被Task_M抢占,阻塞时间缩短为Task_L剩余执行时间(9ms),仍可能超过10ms,但可通过调整任务周期或使用中断处理缓解。电感L=10μH,输出电容C=100μF,ESR=5mΩ。

weixin_49199313的博客 8628

【信息科学与工程学】【产品体系】第三十三篇 DPU/smartinic芯片中的学科知识03

需求实现DMA 与流边界检测优化​分级超时状态机(短/中/长)+ 积压计数 + 批量触发DMA 控制器优化​描述符预取(深度 4)+ 中断合并(阈值 8)Fence 语义正确性验证​RTL 断言 + C 语言序列号检测 + 性能对比 + 硬件计数器所有代码均为可综合 Verilog,已在仿真器中通过基本功能测试。在 FPGA 原型上运行上述 RTL,配合 ChipScope 观察 fence 时序在 BlueField-3 上运行 DOCA DPA 测试程序,对比加/不加 fence 的结果。

weixin_49199313的博客 273

智能家居TLS与安全芯片实战:从握手失败到密钥防护

TLS(传输层安全协议)和安全芯片是物联网设备通信安全的两大基石,前者保障数据在传输过程中不被窃听或篡改,后者确保密钥在设备端永不暴露于软件环境。其核心原理涉及密码套件协商、证书链验证、会话密钥派生及硬件级密钥隔离。技术价值体现在抵御中间人攻击、防止固件逆向提取、支撑OTA可信升级等关键能力。典型应用场景覆盖Wi-Fi/蓝牙/Zigbee网关、智能门锁、环境传感器等资源受限嵌入式终端。面对‘创建tls客户端凭据时发生严重错误’‘站点使用过期或不安全的tls设置’等高频报错,本质是TLS版本兼容性、密码套件配

weixin_34242509的博客 266

Jupyter Lab 无法启动 Kernel 问题排查与解决总结

使用 curl,telnet,或 Python websocket-client 库可以本地模拟 WebSocket 握手行为,帮助分析服务端响应状态。避免使用 http:// + ws:// 组合方式部署 Jupyter Lab,特别是在远程或跨域访问场景。建议统一采用 https:// + wss:// 方式部署,确保浏览器信任并兼容。确认 WebSocket 已升级为 wss://,内核可正常启动。但在远程访问时,浏览器出于安全策略,默认拒绝 ws:// 协议。

weixin_43866043的博客 1854

串口远程透传原理与工业落地实践

串口通信是嵌入式系统和工业设备最基础的数据交互方式,其本质是基于UART的异步、点对点、低层字节流传输机制。受限于RS232/RS485等物理层电气特性,传统串口天然存在距离短、抗干扰弱、无网络寻址能力等硬约束。要实现可靠远程访问,必须在保持原有协议栈不变的前提下,完成从串行信号到IP数据包的无损映射——这涉及物理层时序硬化、会话层虚拟COM口隧道、应用层协议无关透传三大关键技术环节。真正可用的远程串口方案,需同时满足字节级时序精确性、流控信号可映射、断线自动重同步等硬性指标,广泛应用于固件远程烧写、多源设

weixin_34026276的博客 416

PC微信(3.9.2.23)逆向实战:定位并Hook消息接收函数

本文详细介绍了PC微信(3.9.2.23)逆向分析中定位并Hook消息接收函数的完整实战流程。通过Cheat Engine动态定位未读消息数内存地址,结合OllyDbg分析代码上下文,最终找到稳定的Hook点,并分享了实战中的关键注意事项与踩坑经验。

lll78的博客 473

VSCode配置C/C++开发环境:从零安装MinGW-w64并运行第一个C程序

在Windows系统上搭建C语言开发环境时,很多初学者混淆编辑器、编译器与调试器的分工,导致配置过程屡屡受挫。理解VSCode作为轻量级编辑器的定位,以及MinGW-w64提供的gcc编译器在源码编译中的核心作用,是顺利完成环境配置的关键。环境变量的正确设置直接影响gcc命令能否全局调用,而C/C++插件则赋予编辑器语法高亮与智能提示能力。通过安装VSCode、配置MinGW-w64、安装插件、汉化界面并运行一个最简单的hello.c程序,就能系统掌握这套开源工具链的完整工作流。无论是用于课程学习、算法练习

weixin_42531923的博客 531

芯片适配快讯:合兴软件 ISDT 完成对芯驰 E3系列 MCU 的适配

芯片适配快讯:ISDTx芯驰E3系列MCU。合兴软件HXSC-ISDT(嵌入式软件时间分析工具)完成对芯驰E3系列MCU的适配,助力跨域融合控制器的实时性能分析。

合兴软件的博客 166

冷源法测试噪声系数(Noise Figure)详细步骤

背景知识 电阻负载的功率谱密度 噪声等效模型 3 4 冷源法测试步骤 注意事项

eleday的电子世界 6871

FT61FC21B是什么芯片?2K程序+10位ADC+5路PWM,8位MCU芯片解析

🔹 1路增强型捕捉/比较/PWM(ECCP):支持单PWM、半桥、全桥模式,带死区控制,半桥下还能扩展出3对带死区的互补输出,外加单脉冲模式——三相无刷电机、半桥驱动、全桥H桥,一颗小芯片就能玩。FT61FC21B-DRB属于FT61FC2x系列,基于EEPROM的8位RISC架构,37条指令,2T/4T可选,主频最高16MHz(VDD≥2.5V时)。🔹 真正的10-bit ADC:7+1通道,500kHz ADC时钟下依然保持10位精度,内部2V/3V基准可选,还支持外部VREF。

主要分享电源芯片/MOS管/IGBT模块/MCU单片机资讯 466

SAM2与Docker的完美组合:5分钟搞定Linux环境下的图像分割部署

本文详细介绍了如何在Linux环境下通过Docker快速部署SAM2图像分割模型,解决安装过程中的常见问题。文章提供了从镜像选择、CUDA版本匹配到容器构建的全流程指南,特别针对GPU加速环境下的'cudnn_frontend: No execution plans support the graph'等报错提供了实用解决方案,帮助开发者在5分钟内完成高效部署。

fern8的博客 933

【Bluetooth蓝牙开发】九、BLE协议之GATT

1、开篇词 2、蓝牙开发入门 3、蓝牙协议栈总览 4、蓝牙协议栈——物理层 5、蓝牙协议栈——链路层 6、蓝牙协议栈——传输层 7、蓝牙协议栈——L2CAP协议 8、蓝牙协议栈——ATT协议 9、蓝牙协议栈——GATT协议 10、蓝牙通信流程分析 11、蓝牙协议栈——Bluez交叉编译 12、蓝牙调试工具汇总

Donge's Blog 4760

TMS320F28335 学习笔记(二):系统时钟、PLL 与看门狗

本文系统介绍F28335的时钟架构与看门狗应用,涵盖外部晶振、PLL倍频生成系统时钟(SYSCLKOUT)、高速/低速外设时钟分频配置,以及看门狗的启用、关闭与喂狗机制。强调时钟配置准确性对延时、PWM、通信等外设的重要性,指出常见错误如晶振不匹配、未等待PLL锁定、随意修改PLL或喂狗周期过长等问题,并提供初始化框架与验证方法,帮助开发者正确配置时钟系统,确保程序稳定运行。

2403_83044722的博客 260

安卓App开发 篇三:Android SDK和API

Jetpack 是一个由多个库组成的套件,可帮助开发者遵循最佳做法、减少模板代码并编写可在各种 Android 版本和设备中一致运行的代码,让开发者可将精力集中于真正重要的编码工作。hl=zh-cnhl=zh-cnWorkManager 是 Android Jetpack 的一部分,是用于持久性工作的推荐解决方案,适用于需要通过应用重启和系统重新启动来调度的工作,也是后台处理操作的主要推荐 API。立即执行:必须立即开始且很快完成的任务,可以加急,使用和Worker,通过对调用处理加急工作。

生活在别处 1280

串口实验-11

① 显示串口0接收到的数据② 串口0每隔3秒发送“waitting for serial data”信息COM30IDE 右上角 …三个点打开 串口监视器,选择波特率 115200在串口监视器 消息 位置 输入:hello esp32s3,会打印输出使用串口1来实现 串口数据回显功能方便大家后面用到串口接口的模块时,能知道使用方法COM26。

智能机器人产学研基地 22

微信小程序 - 最新详细实现气泡菜单功能,点击任意元素在底部或附近周围弹出气泡菜单列表,仿微信气泡弹框显示菜单快捷功能收纳,自定义气泡弹窗/菜单气泡弹窗,小程序气泡框嵌套菜单组件插件,自动计算弹出定位

微信小程序,vue2,vue3,气泡列表,汽泡菜单,气泡框,泡泡框,悬浮框,悬浮菜单,点击菜单按钮弹出气泡,对话箭头气泡框,弹出的气泡准确定位并吸附在附近,弹出式气泡,弹窗菜单,气泡自定义HTML弹窗,带三角的气泡弹框,三角气泡框里面嵌套菜单,当点击一个按钮或元素时,会从附近弹出一个小气泡一样的菜单列表,自定义气泡框内的内容,点击一个元素在附近弹出一个气泡弹框功能效果,气泡弹框不准怎么办,被盖住了,挡住了,长按弹出,组件插件,微信,自定义气泡菜单组件,气泡弹出框,小程序自定义气泡框,菜单气泡,包裹列表的三角

🏆 前端领域优质创作者 3915

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【保姆级教程】单片机离线 IAP 升级:从架构设计到避坑指南(基于 AT32L021 & CAN 总线)

本文详解基于AT32L021与CAN总线的离线IAP升级方案,采用“EEPROM中转”架构解决小容量Flash下固件校验与写入难题。通过分区管理、双核协同、跳转清场及关键避坑指南(如开漏I2C、页写回卷、32位Flash写入、变量溢出等),实现稳定可靠的离线升级。结合速度优化策略,将传输时间从83秒降至45秒,适用于工业控制等现场部署场景。

l1461697501的博客 358

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

上一篇: 端侧AI部署干货|主流框架+芯片适配一文吃透,看完直接上手
下一篇: Linux驱动调试七大杀器,从printk到KASAN全打通
LinuxRos
博客等级 码龄5年 11粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值