ZHCAEX1 January   2025 MSPM0G1518 , MSPM0G1519 , MSPM0G3518 , MSPM0G3519 , MSPM0L1227 , MSPM0L1228 , MSPM0L2227 , MSPM0L2228

 

  1.   1
  2.   摘要
  3.   商标
  4. 1非易失性存储器 (NVM) 基本介绍
    1. 1.1 闪存保护
  5. 2客户安全代码 (CSC) 简介
    1. 2.1 客户安全代码 (CSC) 执行概述
    2. 2.2 CSC 内存映射
    3. 2.3 客户安全代码 (CSC) 执行程序
  6. 3存储体交换示例实现
    1. 3.1 客户安全代码项目准备
      1. 3.1.1 在 NONMAIN 中启用客户安全代码 (CSC)
      2. 3.1.2 客户安全代码应用代码的实现:存储提及交换功能
    2. 3.2 应用代码项目准备
  7. 4常见用例介绍
  8. 5DATA 存储体简介
    1. 5.1 数据存储体保护
    2. 5.2 DATA 存储体擦除写入操作
  9. 6总结
  10. 7参考资料

客户安全代码 (CSC) 执行程序

图 2-3 展示了启用安全功能的应用中的引导和启动序列。在 BOOTRST 时,TI 引导代码开始执行。成功引导后,引导代码会发出 BOOTDONE。此时,SYSCTL 向器件发出 SYSRST 以触发从闪存执行。根据引导配置记录,这会触发启动主应用程序(如果此配置中不存在 CSC)或启动 CSC(如果配置了 CSC)。CSC 负责确定执行存储体、内存区域保护、将安全密钥初始化到密钥库等事项。当客户安全代码通过向 SYSCTL.SECCFG.INITDONE MMR 写入值来发出 INITDONE 时,SYSCTL 会发出第二个 SYSRST。器件再次从映射到闪存的 0x0 开始执行,而 CSC 会执行第二次。这一次,CSC 发现 INITDONE 之前已经发出过(这是通过读取 SYSCTL.SECCFG.SECSTATUS.INITDONE 位来确定的),因此会直接调用主应用程序。

注:

请参阅《MSPM0 L 系列 32MHz 微控制器技术参考手册》中的“安全”章节,以获取更多关于寄存器配置的详细信息。

安全执行流程是 CSC_EXISTS = YES 情况下的路径。在这种情况下,可以观察到在 BOOTRST 之后,有两个 SYSRST 会在主应用程序启动之前发出。在首个 SYSRST 之后,客户启动代码开始执行。这会配置安全性并发出 INITDONE。此时会锁定并强制执行安全配置。随即会发出第二个 SYSRST 以重新开始执行启动代码。在第二个 SYSRST 时,由于 INITDONE 为 YES,因此会启动主应用程序。

 安全引导和启动序列图 2-3 安全引导和启动序列

以使用存储体交换功能为例,CSC 会指定哪个存储体持有较新的已验证应用程序映像。如果该存储体是物理存储体 0(与 CSC 执行的源存储体相同),则存储体 1 为只读写,不具有执行权限。如果确定了正确的应用程序映像位于物理存储体 1 上,则 CSC 必须发出存储体交换请求。除映像身份验证之外,CSC 还会设置其他安全配置(本文档稍后将介绍这些配置)。CSC 通过向 SYSCTL.SECCFG.INITDONE 寄存器写入 PASS 值 (0x1) 以及 KEY 值 0x9d 来指示 CSC 执行结束。成功向 INITDONE 寄存器写入值会触发第二个 SYSRST 操作,在此期间,存储体交换以及所有其他安全配置都将生效。下一章节将详细介绍如何实现存储体交换功能。