ZHDU014 December   2025 MSPM33C321A , MSPM33C321A-Q1

 

  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 非主配置
      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 参考
      2. 2.5.2 使用 SysConfig 和 Code Composer Studio (CCS)
      3. 2.5.3 使用调试接口
  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 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 密码

存储器地址:0x80101C14 - 0x80101C30

PASSWORD 字段存储用于 BSL 身份验证的密码的 SHA-256 哈希值(32 字节)。解锁引导加载程序和访问受保护的 BSL 命令需要此密码。

默认值:所有 0xFF 字节的字符串哈希值

  1. 字 0 (0x80101C14):0x761396AF
  2. 字 1 (0x80101C18):0x5F63720F
  3. 字 2 (0x80101C1C):0x5A4AB4BD
  4. 字 3 (0x80101C20):0x9FC3630A
  5. 字 4 (0x80101C24):0xF930AF12
  6. 字 5 (0x80101C28):0x5CEEA650
  7. 字 6 (0x80101C2C):0x88E11B97
  8. 字 7 (0x80101C30):0x51409CE8

用途

BSL 密码用于保护对可修改器件存储器或读取敏感信息的关键 BSL 命令的访问。调用 BSL 时,它会在锁定状态下启动。要解锁 BSL 并访问受保护的命令,主机必须使用正确的密码发送解锁引导加载程序命令 (CMD_UNLOCK_BSL, 0x21)。

密码身份验证过程的工作方式如下:

  1. 主机发送使用了 32 字节密码的解锁引导加载程序命令。
  2. BSL 计算接收到的密码的 SHA-256 哈希值。
  3. BSL 将计算出的哈希值与 BSL 配置中存储的密码哈希值进行比较。
  4. 如果哈希值匹配,BSL 将被解锁,受保护的命令变为可用。
  5. 如果哈希值不匹配,BSL 保持锁定状态并返回 BSL_PASSWORD_ERROR。

BSL 包含几项安全功能,用于防范密码攻击:

  1. 睡眠延迟:如果发送了错误的密码,器件将进入睡眠模式 2 秒,并且在此期间不接受任何命令。这会使暴力攻击更加耗时。
  2. 安全警报:如果发送了 3 次错误的密码,则会根据 SECURITY_ALERT_LEVEL 配置采取安全警报措施。这可能包括:
    1. Factory Reset:擦除所有闪存
    2. 禁用引导加载程序:永久禁用引导加载程序
    3. 不执行任何操作:不采取任何操作
  3. 密码备份:在执行恢复出厂设置之前,BSL 会将密码备份到 SRAM。这样,即使非主闪存中的密码字段被擦除,也可以在恢复出厂设置后解锁 BSL。

更改 BSL 密码

可以通过多种方法更改 BSL 密码

  1. 使用 BSL 命令
    1. 使用当前密码解锁 BSL。
    2. 计算新密码的 SHA-256 哈希值。
    3. 使用新哈希值更新 BSL 配置中的 PASSWORD 字段。
    4. 计算 BSL 配置的新 CRC。
    5. 使用编程数据命令将更新后的 BSL 配置编程到非主闪存。
  2. 使用 SysConfig 和 Code Composer Studio (CCS)SysConfig 工具提供了非主配置器,可以生成完整的非主配置。如果非主闪存区域不受保护,您可以使用 Code Composer Studio 中的闪存加载程序直接修改 BSL 密码。
    1. 在 CCS 中或作为独立应用程序打开 SysConfig 工具。
    2. 导航至 Non-Main Configurator(非主配置器)部分。
    3. 配置所有 BSL 设置,其中 PASSWORD 字段需填入新密码的哈希值。
    4. 生成非主配置二进制文件。
    5. 使用 CCS 闪存加载程序或 BSL 命令将生成的二进制文件编程到非主闪存区域。

注: 如果忘记 BSL 密码,可能需要执行 DSSM 恢复出厂设置操作来恢复默认密码。但是,这将会擦除所有闪存,包括应用程序代码和配置数据。或者,如果非主闪存区域不受保护,您可以使用带有闪存加载程序的 CCS,通过新密码对 BSL 配置进行重新编程。