简介在嵌入式开发中通过OTA升级结束后,一般需要验证升级包的完整性,通常会携带CRC信息,升级后计算升级程序的CRC信息和携带的CRC进行检查,如果一致镜像代表升级包完整否则代表升级包有损坏。IAR 工具支持在bin文件的末尾添加上CRC信息,用于程序完整性的检测。 IAR 生成CRC 配置IAR 在link 阶段可以根据Project>Options>Linker>Checksum 路径下的配置信息计算镜像的CRC信息,本地的配置如下: 根据flash 的划分情况将0x08000000-0x0803fffb 区间用于存放 App 程序,0x0803fffc-0x0803ffff 空间存放CRC32信息。 各配置参数说明如下:
CRC算法的配置说明可以参照如下说明: 上述配置后,在编译生成的镜像后会添加如下的CRC32信息。 修改上述bin 文件删除末尾的CRC32数值 使用在线工具(https://emn178.github.io/online-tools/crc32_checksum.html)生成对应的CRC数值比较后发现和IAR生成的是一致的。 CubeMx 配置使用IAR 生成的CRC数据我们可以使用,STM32H533的CRC模块进行比较验证,对应配置如下: 添加如下代码验证CRC的完整性:
运行后IAR 生成的CRC32数值和MCU的CRC模块计算出来的也是保持一致的。 参考资料https://www.iar.com/zh/knowledge/support/technical-notes/linker/iar-embedded-workbench-checksum-crc |
【NUCLEO-WB09KE评测】+基于STM32CubeMX创建工程点灯
【NUCLEO-WB09KE评测】+实现读取温湿度传感器SHTC3数据
【NUCLEO-WB09KE评测】+实现串口printf打印和shell移植
【NUCLEO-WB09KE评测】使用I2C点亮一个OLED
【NUCLEO-WB09KE评测】STM32WB09KE的内部BootLoader使用
NUCLEO-H563ZI刷入Micropython固件并点亮LED灯
【NUCLEO-H533RE评测】+点亮小灯
【NUCLEO-H533RE评测】串口Ymodem协议升级程序
【NUCLEO-H533RE评测】4.RTT Nano在Cubemx中的使用
【NUCLEO-H533RE评测】+09 低功耗测试