这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 行业应用 » 汽车电子 » 【S32K3XX】软件CRC和硬件CRC计算性能比较

共1条 1/1 1 跳转至

【S32K3XX】软件CRC和硬件CRC计算性能比较

高工
2026-07-06 21:56:04     打赏

【简介】

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

image.png

image.png


本地修改测试代码添加软件 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 的效率比软件还是高很多的。


           


共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]