ZHCAAD3A September   2020  – June 2026 F29H850DM , F29H850TU , F29H859TU-Q1 , F29P329SM-Q1 , F29P589DM-Q1 , F29P589DU-Q1 , TMS320F2800132 , TMS320F2800133 , TMS320F2800135 , TMS320F2800137 , TMS320F280033 , TMS320F280034 , TMS320F280034-Q1 , TMS320F280036-Q1 , TMS320F280036C-Q1 , TMS320F280037 , TMS320F280037-Q1 , TMS320F280037C , TMS320F280037C-Q1 , TMS320F280038-Q1 , TMS320F280038C-Q1 , TMS320F280039 , TMS320F280039-Q1 , TMS320F280039C , TMS320F280039C-Q1 , TMS320F28384D , TMS320F28384D-Q1 , TMS320F28384S , TMS320F28384S-Q1 , TMS320F28386D , TMS320F28386D-Q1 , TMS320F28386S , TMS320F28386S-Q1 , TMS320F28388D , TMS320F28388S , TMS320F28P550SG , TMS320F28P550SJ , TMS320F28P559SG-Q1 , TMS320F28P559SJ-Q1 , TMS320F28P650DH , TMS320F28P650DK , TMS320F28P650SH , TMS320F28P650SK , TMS320F28P659DH-Q1 , TMS320F28P659DK-Q1 , TMS320F28P659SH-Q1

 

  1.   1
  2.   摘要
  3.   商标
  4. 简介
  5. 安全闪存启动概述
  6. CMAC 身份验证
  7. 安全闪存启动选项
  8. 安全闪存启动流程
  9. C2000Ware 示例详细信息
  10. 对超过 16KB 的闪存代码进行身份验证
  11. 调试资源
  12. 其他信息和注意事项
  13. 10C2000 CMAC 算法与 OpenSSL 的对齐
    1. 10.1 C28x 存储器和二进制文件字节顺序
    2. 10.2 闪存二进制字节顺序
    3. 10.3 CMAC 密钥字节顺序
    4. 10.4 CMAC 输出对齐流程
    5. 10.5 工作示例
    6. 10.6 差异总结
  14. 11参考文献
  15. 12修订历史记录

安全闪存启动流程

在器件上实现安全闪存启动的过程包含两步:

  1. 生成身份验证标签 – 此过程是在器件外部创建映像期间进行的。
    1. C2000™Arm® 十六进制实用程序使用输入 CMACKEY 以及能够为黄金 CMAC 身份验证标签保留存储空间的 CMAC 应用程序数据结构来对闪存启动代码映像运行 CMAC 算法。更多有关十六进制实用程序的详细信息,请参阅 [3] 和 [4]。
    2. 生成的黄金 CMAC 标签嵌入在十六进制文件中由表 4-1 指定的位置。
    3. 十六进制映像(现在包含黄金 CMAC 标签)被编程到闪存的相应扇区中。
    4. 相应的安全闪存启动模式应根据表 4-1 进行选择并编程到 CPU1 USER OTP 中。
  2. 对闪存中的应用程序启动代码进行身份验证 – 此过程在器件内部执行安全闪存启动时进行。
    1. BOOTDEFx/BOOTPINCONFIG 字段被配置为根据表 4-1 选择安全闪存启动选项(在复位时,器件会启动)并对指定的闪存扇区执行 CMAC 算法。
    2. 将由 CMAC 算法生成的标签与位于预编程位置的黄金 CMAC 标签进行比较。
    3. 标签匹配成功后,启动过程将分支到经过身份验证的闪存代码并开始执行。
    4. 如果标签匹配失败,则会对 CPU1/CPU2/CM 采取不同的操作:
      1. 如果是 CPU1,则会将器件复位(代码保持在循环中,并且在看门狗到期时会自动发出 XRSn)。
      2. 如果是 CPU2,则会在 CPU2TOCPU1IPCBOOTSTS 寄存器中设置安全启动失败标志,将 IPC 命令与安全闪存 CMAC 错误代码一起发送到 CPU1,并且 CPU2 启动代码会循环等待 CPU1 以采取必要操作。还会在 CPU2 的 0x0000 0002 地址位置捕获 CPU2TOCPU1IPCBOOTSTS 寄存器的副本。
      3. 如果是 CM,则会在 CMTOCPU1IPCBOOTSTS 寄存器中设置安全启动失败标志,将 IPC 命令与安全闪存 CMAC 错误代码一起发送到 CPU1,并且 CM 启动代码会循环等待 CPU1 以采取必要操作。还会在 CM 的 0x2000 0000 地址位置捕获 CMTOCPU1IPCBOOTSTS 寄存器的副本。
注: 在计算映像上的身份验证标签以及对映像进行身份验证时,CMAC 算法会将包含黄金标签的存储器地址视为全 1。