YTM32的flash存储器boot-swap功能详解

YTM32的flash存储器boot-swap功能详解

Introduction

客户在开发量产型的ECU软件时,大多会考虑实现OTA(在线更新)的功能,方便在将ECU设备装车之后,可以利用通信过程更新固件。OTA的实现技术中,为了提升更新过程的安全性,避免在更新过程中因意外中断导致整个ECU软件系统崩溃,通常会考虑备份更新的方式,如果本次更新固件的过程被意外中断,MCU仍可启动至最近一次能够正常运行的固件中,故而在MCU的片内flash中实际会存放至少两份程序,A程序和B程序。

这两份程序存放在不同的存储区,在创建这些application程序时,需要分别调整linker地址,让A程序和B程序映射到指定对应不同的地址区才能正常运行。芯片在上电启动后进入bootloader,经过信息安全检查、完整性检查、有效性检查等一些列判定条件之后,有选择地跳转到存放在不同地址的application程序。而在更新程序的时候,也要分别更新不同区域的程序。

为了简化开发者和用户区分application程序的A / B版本,有些专用于ECU的MCU,设计了硬件支持flash存储的AB面交换功能(boot swap),对应于两块独立的但地址连续拼接的flash存储器(pflash0pflash1),可以通过软件配置,指定哪块flash存储区被映射到0x0000_0000开始的位置。如此,将用于更新的固件application工程,其linker可以不做调整,始终为一份工程。在bootloader更新固件的过程中,将实际运行地址空间的程序,先写到备份flash存储区(例如flash的后半段)中,在更新成功完毕后,再执行boot swap命令,将备份flash存储区映射到实际运行的地址空间(例如,flash地址区间的前半段)。复位芯片后,就会从备份转正的flash启动,执行新的application了。如此,两个独立的存储区可互为备份。

Pricinple & Machenisim

YTM32B1MD1微控制器为例,介绍boot swap的机制和用法。

YTM32B1MD1微控制片上集成了2片容量为256KBflash,称为pflash0pflash1,总计512KB。默认情况下,pflash0被映射在0x0000_0000开始的地址空间,pflash1拼接在pflash0之后。当执行了boot swap命令后,复位,pflash1的物理存储被映射到0x0000_0000开始的地址空间,pflash0拼接在pflash1之后。

执行boot swap命令的具体操作,就是向EFM模块的CMD寄存器中,写入boot swap的命令码0x30。如图x所示。

在这里插入图片描述

图x boot swap的命令码

而在,EFM模块的STS寄存器中,可以通过查看BOOT_INFO标志位,判定当前0x0000_0000开始的区域映射到哪块pflash

### YTM32B1MD14 微控制器禁用和恢复 JTAG/SWD 的配置 在基于 Arm Cortex-M33 内核的 YTM32B1MD14 微控制器中,JTAG 和 SWD 接口的启用或禁用状态由特定的配置位控制。这些配置位通常存储在一个称为 CUS_NVR(Customer Non-Volatile Register)的专用区域中,该区域被映射至闪存存储器[^1]。 #### 禁用 JTAG/SWD 配置的方法 要永久性地禁用 JTAG 或 SWD 调试接口,可以通过编程设置 CUS_NVR 中的相关标志位来实现。具体来说: - **访问权限**:只有当设备处于未锁定的状态下才能修改 CUS_NVR 区域中的数据。 - **写入保护机制**:一旦设置了某些标志位用于禁用调试功能,则可能无法通过常规手段重新激活此功能,除非执行芯片擦除或其他厂商定义的操作流程。 以下是伪代码示例展示如何编写程序逻辑以关闭调试端口: ```c // 假设 cus_nvr_base 是指向 CUS_NVR 地址空间起始位置指针变量声明 volatile uint32_t *cus_nvr_base = (uint32_t *)0xXXXXXX; // 替换实际基地址 *(cus_nvr_base + DEBUG_DISABLE_OFFSET) |= BIT_TO_SET_FOR_JTAG_SWD_DISABLING; ``` #### 恢复 JTAG/SWD 配置的方法 如果需要再次开启已禁用的 JTAG 或 SWD 功能,一般有两种途径可选: 1. **硬件重置法**:利用专门设计的产品级工具或者返回工厂进行处理,在这种情况下可能会涉及到整个器件的安全属性初始化过程。 2. **软件解锁命令序列**:部分型号支持发送特殊的指令组合给 MCU 来临时解除限制;然而这种方法往往受到严格约束条件制约,并且仅适用于有限场景之下。 值得注意的是,上述两种方式均需遵循制造商的具体指导手册来进行操作,因为不同系列之间可能存在差异化的实现细节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值