存储器地址:0x80101C14 - 0x80101C30
PASSWORD 字段存储用于 BSL 身份验证的密码的 SHA-256 哈希值(32 字节)。解锁引导加载程序和访问受保护的 BSL 命令需要此密码。
默认值:所有 0xFF 字节的字符串哈希值
- 字 0 (0x80101C14):0x761396AF
- 字 1 (0x80101C18):0x5F63720F
- 字 2 (0x80101C1C):0x5A4AB4BD
- 字 3 (0x80101C20):0x9FC3630A
- 字 4 (0x80101C24):0xF930AF12
- 字 5 (0x80101C28):0x5CEEA650
- 字 6 (0x80101C2C):0x88E11B97
- 字 7 (0x80101C30):0x51409CE8
用途
BSL 密码用于保护对可修改器件存储器或读取敏感信息的关键 BSL 命令的访问。调用 BSL 时,它会在锁定状态下启动。要解锁 BSL 并访问受保护的命令,主机必须使用正确的密码发送解锁引导加载程序命令 (CMD_UNLOCK_BSL, 0x21)。
密码身份验证过程的工作方式如下:
- 主机发送使用了 32 字节密码的解锁引导加载程序命令。
- BSL 计算接收到的密码的 SHA-256 哈希值。
- BSL 将计算出的哈希值与 BSL 配置中存储的密码哈希值进行比较。
- 如果哈希值匹配,BSL 将被解锁,受保护的命令变为可用。
- 如果哈希值不匹配,BSL 保持锁定状态并返回 BSL_PASSWORD_ERROR。
BSL 包含几项安全功能,用于防范密码攻击:
- 睡眠延迟:如果发送了错误的密码,器件将进入睡眠模式 2 秒,并且在此期间不接受任何命令。这会使暴力攻击更加耗时。
- 安全警报:如果发送了 3 次错误的密码,则会根据 SECURITY_ALERT_LEVEL 配置采取安全警报措施。这可能包括:
- Factory Reset:擦除所有闪存
- 禁用引导加载程序:永久禁用引导加载程序
- 不执行任何操作:不采取任何操作
- 密码备份:在执行恢复出厂设置之前,BSL 会将密码备份到 SRAM。这样,即使非主闪存中的密码字段被擦除,也可以在恢复出厂设置后解锁 BSL。
更改 BSL 密码
可以通过多种方法更改 BSL 密码
- 使用 BSL 命令
- 使用当前密码解锁 BSL。
- 计算新密码的 SHA-256 哈希值。
- 使用新哈希值更新 BSL 配置中的 PASSWORD 字段。
- 计算 BSL 配置的新 CRC。
- 使用编程数据命令将更新后的 BSL 配置编程到非主闪存。
- 使用 SysConfig 和 Code Composer Studio (CCS)SysConfig 工具提供了非主配置器,可以生成完整的非主配置。如果非主闪存区域不受保护,您可以使用 Code Composer Studio 中的闪存加载程序直接修改 BSL 密码。
- 在 CCS 中或作为独立应用程序打开 SysConfig 工具。
- 导航至 Non-Main Configurator(非主配置器)部分。
- 配置所有 BSL 设置,其中 PASSWORD 字段需填入新密码的哈希值。
- 生成非主配置二进制文件。
- 使用 CCS 闪存加载程序或 BSL 命令将生成的二进制文件编程到非主闪存区域。
注: 如果忘记 BSL 密码,可能需要执行 DSSM 恢复出厂设置操作来恢复默认密码。但是,这将会擦除所有闪存,包括应用程序代码和配置数据。或者,如果非主闪存区域不受保护,您可以使用带有闪存加载程序的 CCS,通过新密码对 BSL 配置进行重新编程。