在“使用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校验代码的效率。
负离子检测仪的应用/原理/特点/参数
LabVIEW实现近红外测量
LM3914型LED条图驱动器的原理
3G和4G使用软件无线电技术优化性能
除了iphone8之外!6件2017年最值得期待的苹果产品!
如何在IAR Embedded Workbench中配置生成对应代码区域的CRC校验码
意法半导体推出两款中央安全气囊碰可支持汽车级应用
人工智能时代的神经触角——传感器
人工智能催生出许多新的商业模式,正处于技术研发向市场应用推广的过渡期
单芯片AMR磁阻传感并不单一的特色
大米镉重金属快速检测仪产品的介绍说明
电力矿用变压器的类型_电力矿用变压器的用途
中国移动通副总经理建议政府出台全国层面的法律法规支持5G建设
致敬iPhone7Plus?刘作虎再曝:一加5真机手感再次升级
自制led恒流电源电路图,利用LM317的LED恒流源电路图
三星s8和iphone7大对决!谁才是上半年第一旗舰?
iOS11将于WWDC2017发布 终于等到你:DarkMode暗夜模式
智能电磁流量计
高通、NVIDIA大比拼 上演车载芯片争霸赛
LDO的运行困境:低裕量和最小负载