在“使用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算法的一个简单总结:
对应CRC32算法主要跟对应的5个参数相关:Poly(多项式),Init(初始值),RefIn(输入值反转),RefOut(输出值反转)和XorOut(结果异或值)。理论上这5个参数组合最多可以有非常多种算法,不过实际使用中一般以上面几种为主。
在IAR Embedded Workbench中选择对应Checksum的CRC算法
IAR Embedded Workbench中Checksum选项中CRC算法的配置与对应CRC算法的参数对应关系如下:
下面通过两个例子来介绍如何在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)
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)
总结
本文主要以CRC32算法为例,介绍了如何在IAR Embedded Workbench中选择对应Checksum的CRC算法来匹配MCU的CRC模块,提高对应Checksum校验代码的效率。
审核编辑:汤梓红
-
mcu
+关注
关注
146文章
16944浏览量
350103 -
算法
+关注
关注
23文章
4595浏览量
92569 -
crc
+关注
关注
0文章
199浏览量
29426 -
IAR
+关注
关注
5文章
344浏览量
36606 -
代码
+关注
关注
30文章
4733浏览量
68291
原文标题:在IAR Embedded Workbench中选择对应Checksum的CRC算法来匹配MCU的CRC模块
文章出处:【微信号:IAR爱亚系统,微信公众号:IAR爱亚系统】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论