使用晶华微CB7816系列MCU实现OTA升级方案概述

品味人生客 科普生活 2026-08-13 21196

物联网时代,智能家电的远程固件升级能力已从"加分项"变为"必选项"——产品上市后修复漏洞、迭代功能,都离不开OTA。OTA(Over-The-Air)技术允许设备在无需物理接触的情况下,通过无线网络修复漏洞、增添功能,极大地降低了产品的维护成本并提升了用户体验。

CB7816系列高性能32位智能家电控制器,基于ARM Cortex-M0+内核,内置灵活的Flash重映射(Remap)机制,无需独立Bootloader即可实现A/B双区备份升级,让设备"在线升级永不掉线"。

01为什么选择CB7816进行OTA升级?

CB7816 系列 MCU 支持两种在线升级方案:Remap 升级方式 与 Bootloader 升级方式。两者的核心差异如下:

对比项 Remap方式 Boot loader方式
是否需要单独烧录 Bootloader 否,只需烧录"用户程序.bin" 是,需同时烧录Bootloader与用户程序
升级代码位置 集成在用户程序内,自定义编写 独立的BOOT区程序
支持的最大用户程序 128 KB 256 KB
升级失败的安全性 高(A/B 双区互为备份,可回滚) 取决于BOOT实现
升级协议 / 上位机 可自定义,也可用官方协议与工具 可自定义,也可用官方协议与工具

Remap 方式最大的优势在于"双备份"带来的安全性。 它把 Flash 划分为 A、B 两个互为备份的代码区:旧程序运行在 A 区时,新固件被完整写入 B 区,写入并校验通过后才切换启动区。一旦升级中途断电或数据出错,芯片仍可回到原来的代码区正常运行,不会变砖。这对于通过 Wi-Fi 这类"链路可能抖动、可能掉线"的无线通道做升级而言,几乎是必选项。

02OTA升级方案概述

在众多OTA方案中,A/B区备份以其高安全性脱颖而出。其核心思想是将Flash划分为两个区域:A区(当前运行区)和B区(备份升级区)。

CB7816芯片支持的Remap升级方式,这是一种基于A/B备份区、无需独立Bootloader的高效升级方案。

工作原理如下:

初始状态:芯片通过烧录器使能Remap功能。程序默认在A区(虚拟地址0x00000000对应的区域)运行。

固件下载:当WiFi模块接收到云端的新固件后,通过UART将固件数据发送给MCU。运行在A区的用户程序负责接收数据,并将其写入到B区(虚拟地址0x00020000开始)。

校验与标记:B区固件接收完毕后,进行完整性校验(如CRC校验)。校验通过后,修改一个特定的标志位,指示下次应从B区启动。

系统复位:用户程序执行软复位。

Remap切换:芯片复位后,硬件检测到Remap功能已使能,并根据标志位将B区的物理地址重映射到虚拟地址0x00000000。随后,CPU从0x00000000开始执行,实际运行的便是B区的新固件。A区则成为下次升级的备份区。

这种方式的优点在于:整个升级过程只有一个“用户程序”,无需编写和烧录独立的Bootloader,简化了开发和维护流程。

A/B区切换示意图:

4df80b78-90ad-11f1-90a1-92fbcf53809c.png

03硬件部分

1、芯片特性

特性:基于ARM Cortex-M0+内核,48MHz主频,内置256KB Flash。

Flash分区规划:

A区(当前运行区):存放当前正在运行的稳定固件。

B区(更新区):存放待更新的新固件。

Remap原理:CB7816支持将物理地址0x00000000映射到0x00020000(B区)。升级时,程序在A区运行,接收新固件写入B区;升级完成后,通过修改标志位后复位芯片,让芯片把B区的地址重新映射到0x00000000地址,把A区的地址映射到0x00020000地址。

控制字地址:通过写入0xFFF8600~0xFFF8603来控制运行在A区或B区(A区特征码:0xAA, 0x55, 0x33, 0x5A;B区特征码:0xAA, 0x55, 0x66, 0x5A)。

2、硬件连接

OTA升级的核心数据通道由MCU与WiFi模块之间的UART连接构成。以CB7816的UART1为例:

CB7816 MCU引脚 WiFi模块引脚 说明
TX1(例如PA05) RX MCU通过此引脚向WiFi模块发送数据/命令
RX1(例如PA06) TX MCU通过此引脚接收来自WiFi模块的固件数据
VDD(3.3V/5V) VCC 电源
GND GND 公共地

04软件实现关键步骤

1. 工程准备与初次烧录

首先,需要一次性完成芯片的Remap使能和固件烧录:

生成固件:将您的应用程序编译生成 .bin 文件。

使能Remap:使用CB78XX编程器上位机软件,加载您的 .bin 文件。

配置启动方式:在软件界面中,将“启动方式”选择为“Remap”。

烧录:通过烧录器(或J-Link)将固件烧录到芯片。此操作会设置芯片内部配置,使其后续始终工作在Remap模式下。

完成这一步后,芯片上电即会从A区运行程序。

2. 用户程序编写OTA逻辑

您的用户程序需要承担在线升级的核心逻辑,主要包含以下部分:

A. 定义关键参数

A区地址:虚拟地址0x00000000。

B区地址:虚拟地址0x00020000(128K偏移)。

启动标志地址:通过写入 0xFFF8600~0xFFF8603 来控制运行在A区或B区(A区特征码:0xAA, 0x55, 0x33, 0x5A;B区特征码:0xAA, 0x55, 0x66, 0x5A)。

B. 实现通信与解析协议

负责接收来自WiFi模块的数据,并解析上位机(如云端服务器)下发的命令。主要包括:

握手命令:MCU与上位机建立升级连接。

Flash擦除命令:擦除B区(0x00020000开始)。

编程命令:接收固件数据并写入B区。

校验命令:对写入B区的数据进行完整性校验(如CRC16)。

05总结

CB7816系列MCU凭借其灵活的Flash重映射(Remap)机制,为实现安全、可靠的A/B区OTA升级提供了简洁高效的硬件支持。开发者无需编写复杂的Bootloader,只需在用户程序中集成升级逻辑,即可借助WiFi模块等通信手段,轻松完成设备的远程固件更新。

这种方案不仅降低了软件开发的复杂性,更重要的是,它通过双区备份确保了即使升级过程中出现异常断电等意外,设备仍能从原有区域正常启动,极大提升了产品的鲁棒性和用户体验。

分享:

扫一扫在手机阅读、分享本文