必要条件:
必须在 BCR 配置中启用恢复出厂设置(“Enabled”或“Enabled with Password”)
过程:
- 使用支持的调用方法之一(GPIO、应用程序请求或 DSSM)调用引导加载程序
- 使用连接命令 (CMD_CONNECTION, 0x12) 建立连接
- 使用解锁引导加载程序命令 (CMD_UNLOCK_BSL, 0x21) 通过当前密码解锁 BSL
- “执行恢复出厂设置”命令 (CMD_FACTORY_RESET, 0x30) 以擦除 NONMAIN 闪存配置
- 这将擦除 MAIN 闪存(应用程序存储器)和 NONMAIN 闪存(配置存储器)
- 如果 BCR 配置有要求,则向生产工厂提供重置密码(默认值:全 0xFF)
- 恢复出厂设置后,BSL 密码恢复为默认值(全 0xFF 的哈希值)
- 为 BSL 配置准备新的 BSL 配置结构并计算 CRC32:
- 针对完整配置结构计算 CRC32-ISO3309(CRC 字段自身除外)
- 使用位反转配置,初始种子值为 0xFFFFFFFF
- 配置结构大小:76 个字节(从 0x60100C00 到 0x60100C4B)
- 将计算出的 CRC32 值存储在 CRC 字段中 (0x60100C4C)
- 使用“编程数据”命令 (CMD_PROGRAM_DATA, 0x20) 将新 BSL 配置编程到 NONMAIN 闪存:
- Start Address:0x60100C00
- Data: 完整 BSL 配置结构(总共 80 字节,包括 CRC)
- 确认数据按照“编程数据”命令的要求进行 16 字节对齐
- 复位器件以应用新配置
注:
- 每当修改任何配置字段时,都必须重新计算 CRC 字段
- 不正确的 CRC 会导致灾难性错误和器件永久锁定
- 如果在 BCR 配置中未启用恢复出厂设置功能,NONMAIN 闪存编程会失败
- 确认对完整配置结构进行编程,而非仅对单个字段进行编程