图 3-2 是 CRC32 完整性校验的计算示例,假设用户将起始地址设置为 0x0001.0000,长度为八字节。应用程序数据请参考节 3.1.7。
选择 JAMCRC 作为计算模型以获取 CRC32 输出值。JAMCRC CRC 模型采用反转后的输入和输出位,使用多项式 0x04C11DB7,初始值为 0xFFFFFFFF,输出 XOR 值为 0x00000000。
按以下步骤计算示例 CRC32 值:
- 选择的应用程序摘要校验策略为 CRC 校验 (SECURE_BOOT_MODE = Abhor)。
- 设置应用程序摘要校验的 32 位起始地址 (USER_SECURE_APP_ST ART_ADDR = 0001.0000h)。
- 设置适用于 CRC 摘要校验的应用程序长度(按字节指定)(USER_SECURE_APP_LENGTH = 8h)。
- 根据给定输入计算 CRC32 输出:
- 将输入数据字节序反转,因 CRC32 采用 8 位格式计算:67、45、23、01、EF、CD、AB、89。
- 将 8 位输入数据合并为一个字符串:67452301EFCDAB89。
- 计算 CRC32 值(选择 HEX 作为输入编码、JAMCRC 作为模型):0x24648719(CRC32 在线工具)。
- 向 BCR 配置中注册 CRC32 输出值 (USER_SECURE_APP_HASH_1 = 2464.8719h)。若存在多个 USER_SECURE_APP_HASH_y 寄存器,仅使用 DIGEST 的首个 32 位字进行 CRC32 校验。
备注: 验证应用程序 CRC32 摘要校验的长度是否为偶数。