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