【简介】
在之前的帖子中简单介绍了S32K3 的硬件CRC模块的使用(【S32K3XX】CRC模块配置使用),我们继续使用软件的方式来实现该功能来对比软件CRC和硬件CRC 计算时间上的差异。我们在S32DS 的配置中添加软件CRC_TABLE 和软件运行时计算CRC的方式来计算CRC32的配置。


本地修改测试代码添加软件 CRC 计算分支,根据计算前后的log 时间戳来统计时间。
uint8_t image_crc_check(uint32_t start_addr, uint32_t length, uint32_t crc_value)
{
#if (CFG_USED_IMAGE_CHECK_CRC == CRC_ALGO_SOFT_CRC32_LOOKTABLE)
LOGI("CRC","Soft Start.");
Crc_Ip_Init(&CrcIp_xConfigInit);
Crc_Ip_SetChannelCalculate(CRC_LOGIC_CHANNEL_1,(uint8_t*)start_addr,length,0xffffffff,TRUE);
uint32_t crc_result = (uint32_t)Crc_Ip_GetChannelResult(CRC_LOGIC_CHANNEL_1);
LOGI("CRC","IMAGE CRC %08lx IMG %08lx.", crc_result, crc_value);
return (crc_result == crc_value) ? 1 : 0;
#elif (CFG_USED_IMAGE_CHECK_CRC == CRC_ALGO_HARD_CRC32)
LOGI("CRC","Hard Start.");
Crc_Ip_Init(&CrcIp_xConfigInit);
Crc_Ip_SetChannelCalculate(CRC_LOGIC_CHANNEL_0,(uint8_t*)start_addr,length,0xffffffff,TRUE);
uint32_t crc_result = (uint32_t)Crc_Ip_GetChannelResult(CRC_LOGIC_CHANNEL_0);
LOGI("CRC","IMAGE CRC %08lx IMG %08lx.", crc_result, crc_value);
return (crc_result == crc_value) ? 1 : 0;
#elif (CFG_USED_IMAGE_CHECK_CRC == CRC_ALGO_SOFT_CRC32_RUNTIME)
LOGI("CRC","Soft Runtime Start.");
Crc_Ip_Init(&CrcIp_xConfigInit);
Crc_Ip_SetChannelCalculate(CRC_LOGIC_CHANNEL_2,(uint8_t*)start_addr,length,0xffffffff,TRUE);
uint32_t crc_result = (uint32_t)Crc_Ip_GetChannelResult(CRC_LOGIC_CHANNEL_2);
LOGI("CRC","IMAGE CRC %08lx IMG %08lx.", crc_result, crc_value);
return (crc_result == crc_value) ? 1 : 0;
#endif
}上述代码软件查表方式CRC 校验760K 的数据耗时,1577 - 746 = 831 ms
[2026-07-07 10:41:23.746] * CRC , INFO : Soft Start. --- * [2026-07-07 10:41:24.577] [2026-07-07 10:41:24.577] * CRC , INFO : IMAGE CRC 042283ac IMG 042283ac. --- *
上述代码软件计算方式CRC 校验760K 的数据耗时,1721- 360 = 1361ms
[2026-07-07 10:56:30.360] * CRC , INFO : Soft Runtime Start. --- * [2026-07-07 10:56:31.721] [2026-07-07 10:56:31.721] * CRC , INFO : IMAGE CRC 042283ac IMG 042283ac. --- *
重新编切换到硬件分支耗时,700 - 617 = 83ms
[2026-07-07 10:45:59.617] * CRC , INFO : Hard Start. --- * [2026-07-07 10:45:59.700] [2026-07-07 10:45:59.700] * CRC , INFO : IMAGE CRC 042283ac IMG 042283ac. --- *
实测数据对比S32K3硬件CRC 的效率比软件还是高很多的。
我要赚赏金
