ZHCAEX1 January 2025 MSPM0G1518 , MSPM0G1519 , MSPM0G3518 , MSPM0G3519 , MSPM0L1227 , MSPM0L1228 , MSPM0L2227 , MSPM0L2228
图 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 操作,在此期间,存储体交换以及所有其他安全配置都将生效。下一章节将详细介绍如何实现存储体交换功能。