ZHCUAN6E October 2022 – May 2025 MSPM0L1105 , MSPM0L1106 , MSPM0L1116 , MSPM0L1117 , 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
可以将闪存区域配置为读取保护:当允许指令提取访问时,对该区域的读取访问将返回错误。CPU、DMA 和调试器访问均以相同的方式处理。这是通过向 SYSCTL.SECCFG.FIPPROTMAINSTART 和 SYSCTL.SECCFG.FIPPROTMAINEND 寄存器写入值来配置的,这两个寄存器分别包含要保护的范围的起始地址和结束地址。这两个地址均设置为以 64B 粒度进行写入。要启用这种保护,必须通过向 SYSCTL.SECCFG.FWENABLE 寄存器写入值并提供正确的 KEY 值 (0x76) 来启用 FLIPPROT 位(值为 1)。
可以通过读取 SYSCTL.SECCFG.SECSTATUS 寄存器随时获取 IP 保护状态。FLIPPROT 字段可以提供此状态。
如果需要阻止代码读取第三方供应商提供的软件 IP,此机制非常有用。请注意,需要进行 IP 保护的代码必须在编译时确保该区域不存在嵌入式数据访问(字面提取)。由于数据访问会返回访问错误,因此必须使用诸如 -mexecute-only(TI Clang 编译器标志)之类的标志来编译此类代码,以确保不会发出字面常量访问。