- 本文是本人在学习TC4x SOTA 功能时整理的一份笔记,主要记录 A/B Swap 的地址映射关系、相关 UCB 配置,以及 SOTA 初始化流程。 - 文章中的理解仍在逐步完善,部分内容可能存在疏漏或错误。一、SOTA简介
Software updates Over The Air (SOTA)即无线软件更新
SOTA基于A/B Swap机制,在不影响当前应用运行的情况下实现无线升级。具体来说,应用程序从活动区域运行,同时将新程序下载并写入非活动区域。
- 芯片有两组程序存储 Bank,分别作为区域 A 和区域 B。 - 当前从其中一组运行程序,称为活动区;另一组是非活动区,用于写入新版本。 - 写入并校验新版本后,更新 SOTA Swap UCB。 - 下次系统复位时,芯片切换地址映射,从新版本启动。旧版本仍留在另一组 Bank 中。二、SOTA功能介绍
常见的SOTA功能都是基于单片机开发Bootloader,通过Bootloader完成应用程序的更新,SOTA功能将PFlash分为AB两个分区,将待更新固件下载到非激活区,通过校验后,执行Swap功能,重启后将两个区的映射地址进行切换。
以TC4x为例:
TC4x中MemAddressMode具有线性及SOTA两种模式
以TC4Dx为例,线性模式地址范围为0xA000 0000~0xA13F FFFF
SOTA模式下,硬件自动将激活区Bank映射到起始地址 0xA0000000,MCU 从此处取指执行程序。
SOTA-A 与 SOTA-B 使用相同的 CPU 地址窗口,但两个窗口对应的物理 Bank 互换。
SOTA_A模式下,PFLASHx0映射到激活区;SOTA_B模式下,PFLASHx1映射到激活区。
升级时,都应将固件烧录到非激活区(非激活区Bank映射到起始地址为0xA200 0000)
三、SOTA配置参数
SOTA Mode Enable决定TC4x是否开启SOTA,将UCB0_SWAP_ena的SWAPEN位配置为1010使能SOTA模式,系统复位后再次启动便进入SOTA
一颗出厂状态芯片配置位SOTA-A模式初始化流程如下:
配置流程(图中第一列):
1、 先放入能启动的程序:把初始应用镜像写到 PNVMR 区域 A;
2、向SWAP_ORIG_MARKER 0写入0x00000055
3、向SWAP_ORIG_STATUS x写入0x43211234表示第0条记录有效
4、向SWAP_ORIG_SAL0写入系统地址
5、向SWAP_ORIG_CRCSE 0写入CRC校验值
6、将UCB0_SWAP_ena的SWAPEN位配置为1010