跳转到主要内容

CB7816系列MCU-OTA升级设计指南

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

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

一、为什么选择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 这类"链路可能抖动、可能掉线"的无线通道做升级而言,几乎是必选项。

二、OTA升级方案概述

在众多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区切换示意图:

Image
A/B区切换示意图:

三、硬件部分

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

公共地

四、软件实现关键步骤

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)。

五、总结

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

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

来源:杭州晶华微

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。