ZHCAC19A January 2023 – December 2025 MSPM0C1105 , MSPM0C1106 , MSPM0G1105 , MSPM0G1106 , MSPM0G1107 , MSPM0G1505 , MSPM0G1506 , MSPM0G1507 , MSPM0G1518 , MSPM0G1519 , MSPM0G3105 , MSPM0G3106 , MSPM0G3106-Q1 , MSPM0G3107 , MSPM0G3107-Q1 , MSPM0G3505 , MSPM0G3506 , MSPM0G3506-Q1 , MSPM0G3507 , MSPM0G3507-Q1 , MSPM0G3518 , MSPM0G3518-Q1 , MSPM0G3519 , MSPM0G3519-Q1 , MSPM0L1105 , MSPM0L1106 , MSPM0L1227 , MSPM0L1227-Q1 , MSPM0L1228 , MSPM0L1228-Q1 , MSPM0L1303 , MSPM0L1304 , MSPM0L1304-Q1 , MSPM0L1305 , MSPM0L1305-Q1 , MSPM0L1306 , MSPM0L1306-Q1 , MSPM0L1343 , MSPM0L1344 , MSPM0L1345 , MSPM0L1346 , MSPM0L2227 , MSPM0L2227-Q1 , MSPM0L2228 , MSPM0L2228-Q1
客户安全代码 (CSC) 是采用硬件隔离机制 (INITDONE) 的 MSPM0 器件的安全启动解决方案。图 3-1 展示了 CSC 引导和启动序列。在 BOOTRST 时,TI ROM 代码开始执行。成功引导后,引导代码会发出 BOOTDONE。此时,SYSCTL 向器件发出 SYSRST 以触发从 MAIN 闪存存储器执行。引导代码完成后,MAIN 闪存程序始终从物理地址 0x0004 向量(复位处理程序)开始。根据 NONMAIN 闪存 BCR 中的 CSCEXISTS 配置,BOOTDONE 之后有两个执行流程:
MAIN 闪存程序始终在 BOOTDONE 之后自物理地址 0x0004 开始。由于在 BOOTRST 期间会复位存储体交换策略,因此 MAIN 闪存程序始终在 BOOTDONE 之后启动而不会进行存储体交换。仅当在 NONMAIN 配置中同时启用 CSCEXISTS 和 FLASHBANKSWAPPOLICY 时,存储体交换才会在 INITDONE 之后生效。
对于 CSC 现有的情况,CSC 负责确定执行库、内存区域保护、将安全密钥初始化到 KEYSTORE 中、进行应用程序完整性和真实性验证等。该器件正在特权状态下工作,具有配置这些安全策略的权限。在 CSC 结束时会发出 INITDONE(通过写入 SYSCTL.SECCFG.INITDONE,请参阅特定于器件的技术参考手册以了解寄存器定义),然后 SYSCTL 会发出第二个 SYSRST,下面列出的所有安全策略在 INITDONE 期间生效,并且在下一个 BOOTRST 之前不修改:
INITDONE 之后,器件进入非特权状态,再次从 MAIN 闪存的地址 0x0004 开始执行,并且 CSC 会第二次执行。这一次,CSC 发现 INITDONE 之前已经发出过(这是通过读取 SYSCTL.SECCFG.SECSTATUS.INITDONE 位来确定的),因此会直接跳至主应用程序。请参阅图 3-2,了解特权状态 (INITDONE) 和非特权状态(INITDONE 之后)下的 CSC 执行流程。
有关引导和启动顺序的更多详细信息,请参阅 MSPM0 G 系列 80MHz 微控制器技术参考手册(修订版 C)的安全一章。

