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
“安全闪存启动”仅对从入口地址开始的前 16KB 闪存扇区 进行身份验证。为了对闪存的其他扇区进行身份验证,用户应用程序必须直接调用安全闪存启动 CMAC API。
通过使用十六进制实用程序,它支持为四个闪存入口地址中的每一个 + 16KB 和 1 个定制闪存范围生成黄金 CMAC 标签。定制闪存范围可配置为能够在定制地址范围内进行 CMAC 身份验证。如有需要,此范围可以是所有闪存扇区的长度。
用于定制闪存范围身份验证的 CPU1/CPU2 应用程序 CMAC 结构
struct CMAC_TAG
{
char tag[8];
uint32_t start;
uint32_t end;
}
用于完整闪存范围身份验证的 CPU1/CPU2 黄金 CMAC 标签存储器分配
#pragma RETAIN(cmac_all)
#pragma LOCATION (cmac_all, 0x087002)
const struct OMAC_TAG cmac_all = {{0}, 0x0, 0x0};
用于定制闪存范围身份验证的 CM 应用程序 CMAC 结构
struct CMAC_TAG
{
uint8_t tag[16];
uint32_t start;
uint32_t end;
}
用于完整闪存范围身份验证的 CM 黄金 CMAC 标签存储器分配
#pragma RETAIN(cmac_all)
#pragma LOCATION (cmac_all, 0x00204004)
const struct OMAC_TAG cmac_all = {{0}, 0x0, 0x0};
创建一个名为“cmac_all”的结构,用于创建定制 CMAC 身份验证范围。
CPU1 安全闪存 CMAC 身份验证 API
applicationCMACStatus = CPU1BROM_calculateCMAC (CMAC_AUTH_START_ADDRESS,
CMAC_AUTH_END_ADDRESS,
CMAC_AUTH_TAG_ADDRESS);
在应用程序中,将 F2838x 安全区域代码符号库包含到工程中(位于 C2000Ware [2] 中的 <C2000Ware_安装目录>/libraries/boot_rom/f2838x 位置),并调用相应内核的安全闪存启动 CMAC API。以上示例显示了在 CPU1 上进行的示例 API 调用。