在IAR Embedded Workbench中选择对应Checksum的CRC算法来匹配MCU的CRC模块

在“使用IAR Embedded Workbench和MCU的CRC模块来检查代码的完整性”一文中,介绍了如何在IAR Embedded Workbench中配置生成对应代码区域的CRC校验码,然后在运行过程中使用MCU内嵌的CRC硬件模块计算对应代码区域的CRC校验码,并和之前存储的CRC校验码进行比较来检查对应代码区域的完整性。

CRC算法有很多种,一般MCU内嵌的CRC硬件模块支持的CRC算法种类是固定的,所以需要在IAR Embedded Workbench中选择对应的Checksum的CRC算法来匹配MCU的CRC模块。  

本文主要以CRC32算法为例,介绍如何在IAR Embedded Workbench中选择对应Checksum的CRC算法来匹配MCU的CRC模块。

CRC32算法简介

CRC32算法有很多种,下面是对应CRC32算法的一个简单总结: 

Image

对应CRC32算法主要跟对应的5个参数相关:Poly(多项式),Init(初始值),RefIn(输入值反转),RefOut(输出值反转)和XorOut(结果异或值)。理论上这5个参数组合最多可以有非常多种算法,不过实际使用中一般以上面几种为主。 

在IAR Embedded Workbench中选择对应Checksum的CRC算法 

IAR Embedded Workbench中Checksum选项中CRC算法的配置与对应CRC算法的参数对应关系如下: 

Image

下面通过两个例子来介绍如何在IAR Embedded Workbench中选择对应Checksum的CRC算法(Project > Options > Linker > Checksum > Generate checksum)。 

   CRC-32 

  • Algorithm: 选择 “CRC32”(对应的Poly自动选择为0x04C11DB7) 

  • Complement: 选择 “1’s complement”(对应的XorOut为0xFFFFFFFF) 

  • Initial value: 输入“0xFFFFFFFF”(对应的Init为0xFFFFFFFF) 

  • Bit order: 选择 “LSB first”(对应RefIn = TRUE, RefOut = TRUE) 

Image

   CRC-32/MPEG-2 

  • Algorithm: 选择 “CRC32”(对应的Poly自动选择为0x04C11DB7) 

  • Complement: 选择 “As is”(对应的XorOut为0x00000000) 

  • Initial value: 输入“0xFFFFFFFF”(对应的Init为0xFFFFFFFF) 

  • Bit order: 选择 “MSB first”(对应RefIn = FALSE, RefOut = FALSE) 

    Image

总结

本文主要以CRC32算法为例,介绍了如何在IAR Embedded Workbench中选择对应Checksum的CRC算法来匹配MCU的CRC模块,提高对应Checksum校验代码的效率。 

参考资料:

  1. IAR C/C++ Development Guide (Checksum calculation for verifying image integrity) 

  2. 使用IAR Embedded Workbench和MCU的CRC模块来检查代码的完整性 | IAR

  3. https://crccalc.com/ 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值