ZHDU066 March   2026 AM13E23019

 

  1.   1
  2.   摘要
  3.   商标
  4. 1简介
    1. 1.1 BSL 特性概览
    2. 1.2 术语
    3. 1.3 其他资源
  5. 2BSL 架构
    1. 2.1 设计
      1. 2.1.1 超时特性
        1. 2.1.1.1 接口自动检测
        2. 2.1.1.2 命令接收
    2. 2.2 调用 BSL
      1. 2.2.1 应用程序请求
      2. 2.2.2 基于 GPIO 的调用
      3. 2.2.3 调试邮箱命令
      4. 2.2.4 其他 BSL 调用方法
        1. 2.2.4.1 启动前应用程序验证
        2. 2.2.4.2 空白器件处理
    3. 2.3 存储器
      1. 2.3.1 SRAM 存储器使用情况
    4. 2.4 BSL NONMAIN 配置
      1. 2.4.1  BSL 配置 ID
      2. 2.4.2  BSL 接口引脚 (BLINTERFACE_PINS)
      3. 2.4.3  BSL 调用引脚配置 (BSLPIN_INVOKE)
      4. 2.4.4  存储器读取配置
      5. 2.4.5  BSL 密码
      6. 2.4.6  应用程序修订指针
      7. 2.4.7  安全警报级别
      8. 2.4.8  UART 波特率
      9. 2.4.9  I2C 目标地址
      10. 2.4.10 配置 CRC
    5. 2.5 更改 BSL 配置
      1. 2.5.1 使用 BSL 命令
      2. 2.5.2 使用调试接口
  6. 3引导加载程序协议
    1. 3.1 数据包格式
    2. 3.2 BSL 协议
      1. 3.2.1 BSL 确认
      2. 3.2.2 外设配置
        1. 3.2.2.1 UART
        2. 3.2.2.2 I2C
        3. 3.2.2.3 MCAN
        4. 3.2.2.4 CRC
    3. 3.3 引导加载程序内核命令
      1. 3.3.1  连接
      2. 3.3.2  Get Device Info
      3. 3.3.3  解锁引导加载程序
      4. 3.3.4  Program Data
      5. 3.3.5  快速编程数据
      6. 3.3.6  回读数据
      7. 3.3.7  闪存范围擦除
      8. 3.3.8  批量擦除
      9. 3.3.9  恢复出厂设置
      10. 3.3.10 独立验证
      11. 3.3.11 启动应用程序
      12. 3.3.12 更改波特率
    4. 3.4 引导加载程序内核响应
      1. 3.4.1 BSL 内核消息
      2. 3.4.2 详细错误
      3. 3.4.3 存储器回读
      4. 3.4.4 器件信息
      5. 3.4.5 独立验证
    5. 3.5 引导加载程序安全性
      1. 3.5.1 受密码保护的命令
        1. 3.5.1.1 安全警报
      2. 3.5.2 BSL 条目
  7. 4使用引导加载程序的示例程序流程
  8. 5修订历史记录

使用 BSL 命令

必要条件

必须在 BCR 配置中启用恢复出厂设置(“Enabled”或“Enabled with Password”)

过程

  1. 使用支持的调用方法之一(GPIO、应用程序请求或 DSSM)调用引导加载程序
  2. 使用连接命令 (CMD_CONNECTION, 0x12) 建立连接
  3. 使用解锁引导加载程序命令 (CMD_UNLOCK_BSL, 0x21) 通过当前密码解锁 BSL
  4. “执行恢复出厂设置”命令 (CMD_FACTORY_RESET, 0x30) 以擦除 NONMAIN 闪存配置
    1. 这将擦除 MAIN 闪存(应用程序存储器)和 NONMAIN 闪存(配置存储器)
    2. 如果 BCR 配置有要求,则向生产工厂提供重置密码(默认值:全 0xFF)
    3. 恢复出厂设置后,BSL 密码恢复为默认值(全 0xFF 的哈希值)
  5. 为 BSL 配置准备新的 BSL 配置结构并计算 CRC32:
    1. 针对完整配置结构计算 CRC32-ISO3309(CRC 字段自身除外)
    2. 使用位反转配置,初始种子值为 0xFFFFFFFF
    3. 配置结构大小:76 个字节(从 0x60100C00 到 0x60100C4B)
    4. 将计算出的 CRC32 值存储在 CRC 字段中 (0x60100C4C)
  6. 使用“编程数据”命令 (CMD_PROGRAM_DATA, 0x20) 将新 BSL 配置编程到 NONMAIN 闪存:
    1. Start Address:0x60100C00
    2. Data: 完整 BSL 配置结构(总共 80 字节,包括 CRC)
    3. 确认数据按照“编程数据”命令的要求进行 16 字节对齐
  7. 复位器件以应用新配置

注:
  • 每当修改任何配置字段时,都必须重新计算 CRC 字段
  • 不正确的 CRC 会导致灾难性错误和器件永久锁定
  • 如果在 BCR 配置中未启用恢复出厂设置功能,NONMAIN 闪存编程会失败
  • 确认对完整配置结构进行编程,而非仅对单个字段进行编程