如何在IAR Embedded Workbench中配置生成对应代码区域的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算法的一个简单总结: 

IAR

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

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

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

下面通过两个例子来介绍如何在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) 

  IAR

   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)  IAR

总结

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

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分