请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【NUCLEO-H533RE评测】IAR CRC 镜像校验

[复制链接]
andey 发布时间:2024-7-30 14:54

简介

在嵌入式开发中通过OTA升级结束后,一般需要验证升级包的完整性,通常会携带CRC信息,升级后计算升级程序的CRC信息和携带的CRC进行检查,如果一致镜像代表升级包完整否则代表升级包有损坏。IAR 工具支持在bin文件的末尾添加上CRC信息,用于程序完整性的检测。

IAR 生成CRC 配置

IAR 在link 阶段可以根据Project>Options>Linker>Checksum 路径下的配置信息计算镜像的CRC信息,本地的配置如下:

CRC_CFG1.png

根据flash 的划分情况将0x08000000-0x0803fffb 区间用于存放 App 程序,0x0803fffc-0x0803ffff 空间存放CRC32信息。

各配置参数说明如下:

  • Checksum size : 选择 checksum 的大小(字节数)
  • Alignment: 指定 checksum 的对齐方式。 一般,处理器不支持非对齐访问时有用, 不填的话默认 1 字节对齐。
  • Algorithm: 选择 checksum 的算法
  • Complement: 是否需要进行补码计算。 选择“ As is”就是不进行补码计算。
  • Bit order:位输出的顺序。 MSB first,每个字节的高位在前。 LSB first, 每个字节的低位在前。
  • Reverse byte order within word: 对于输入数据,在一个字内反转各个字节的顺序。
  • Initial value: checksum 计算的初始化值
  • Checksum unit size : 选择进行迭代的单元大小,按 8-bit, 16-bit 还是 32-bit 进行迭代

CRC算法的配置说明可以参照如下说明: crc_angio.png

上述配置后,在编译生成的镜像后会添加如下的CRC32信息。 crc_gen.png

修改上述bin 文件删除末尾的CRC32数值 crc_del.png 使用在线工具(https://emn178.github.io/online-tools/crc32_checksum.html)生成对应的CRC数值比较后发现和IAR生成的是一致的。

crcvalue.png

CubeMx 配置

使用IAR 生成的CRC数据我们可以使用,STM32H533的CRC模块进行比较验证,对应配置如下: crc——cfg.png

添加如下代码验证CRC的完整性:

MX_CRC_Init();
  /* USER CODE BEGIN 2 */
  crc = HAL_CRC_Calculate(&hcrc, (uint32_t *)&__checksum_begin,(((uint32_t)&__checksum_end - (uint32_t)&__checksum_begin + 1u)/4u));
  /* USER CODE END 2 */  
  /* Compare the calculated CRC with the previously stored CRC */
  if(__checksum == crc^0xffffffff)
  {
      printf("rom crc check ok crc_calc %x crc_link %x\r\n",crc^0xffffffff,__checksum);
  }
  else
  {
      printf("rom crc check faild crc_calc %x crc_link %x\r\n",crc^0xffffffff,__checksum);
  }

运行后IAR 生成的CRC32数值和MCU的CRC模块计算出来的也是保持一致的。 微信截图_20240730145110.png

参考资料

https://www.iar.com/zh/knowledge/support/technical-notes/linker/iar-embedded-workbench-checksum-crc

https://www.iar.com/zh/knowledge/support/technical-notes/general/verifying-integrity-by-iar-embedded-workbench-and-crc

收藏 评论0 发布时间:2024-7-30 14:54

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版