AURIX SOTA Alternative Mapping实战指南:如何正确配置IS_ACTIV状态

1次阅读
没有评论

共计 1148 个字符,预计需要花费 3 分钟才能阅读完成。

image.webp

AURIX 双 Bank 架构与 IS_ACTIV 标志位

AURIX 微控制器的双 Bank 架构是其 SOTA 功能的核心设计。这种架构将 Flash 存储分为两个独立的 Bank(通常是 Bank0 和 Bank1),允许在一个 Bank 运行当前固件的同时,在另一个 Bank 下载或更新新固件。IS_ACTIV 标志位用于指示哪个 Bank 是当前活跃的(即正在运行的)固件。

AURIX SOTA Alternative Mapping 实战指南:如何正确配置 IS_ACTIV 状态

  • Bank 切换机制 :当新固件下载并验证完成后,通过修改 IS_ACTIV 标志位来切换活跃 Bank,实现固件更新。
  • IS_ACTIV 的作用 :该标志位通常存储在特定的 Flash 区域或寄存器中,系统启动时会读取该标志位决定从哪个 Bank 启动。

传统单 Bank 与 Alternative Mapping 方案对比

方案 优点 缺点
传统单 Bank 实现简单,资源占用少 更新时需要擦除整个 Bank,风险高
Alternative Mapping 支持并行操作,更新过程更安全 配置复杂,需要处理标志位同步

IS_ACTIV 状态配置代码示例

#include "IfxScu_reg.h"
#include "IfxFlash_reg.h"

// 检查当前活跃 Bank
uint32_t get_active_bank() {return (FLASH0_FCON.B.IS_ACTIV == 1) ? 1 : 0;
}

// 设置 IS_ACTIV 标志位
void set_active_bank(uint32_t bank) {
    // 解锁 Flash 配置寄存器
    FLASH0_FCON.U = (FLASH0_FCON.U & ~(1 << 31)) | (0x5A << 24);

    // 设置 IS_ACTIV 位
    if (bank == 1) {FLASH0_FCON.B.IS_ACTIV = 1;} else {FLASH0_FCON.B.IS_ACTIV = 0;}

    // 锁定 Flash 配置寄存器
    FLASH0_FCON.B.LCK = 1;
}

错误配置的后果

  1. 启动失败 :如果 IS_ACTIV 指向的 Bank 没有有效固件,系统将无法启动
  2. 版本回退 :错误设置可能导致系统回退到旧版本固件
  3. 数据损坏 :在 Bank 切换过程中断电可能导致标志位与实际固件不匹配

生产环境关键检查点

  1. CRC 验证 :在切换 Bank 前必须验证新固件的 CRC 值
  2. 超时处理 :设置合理的超时机制,防止更新过程卡死
  3. 异常恢复 :实现回滚机制,当更新失败时能自动恢复到之前的稳定版本

动手实验

在 TC3xx 评估板上验证 IS_ACTIV 配置:

  1. 连接评估板并启动 AURIX Development Studio
  2. 创建新工程,包含上述代码示例
  3. 编译并下载到评估板
  4. 使用调试器观察 FLASH0_FCON 寄存器的变化
  5. 尝试修改 IS_ACTIV 位并重启系统,验证 Bank 切换效果

通过这个实验,您可以直观地理解 Alternative Mapping 的工作机制,为实际项目中的 SOTA 实现打下坚实基础。

正文完
 0
评论(没有评论)