[STM32F3] stm32cubeide警告:calculation has at least one hole

[复制链接]
SocialButterfly 发表于 2025-8-23 13:20 | 显示全部楼层 |阅读模式
我写一个引导程序,需要计算校验和。
通过 stm32cubeide 的 Srecord 工具获取 CRC。
Srecord 按照以下脚本运行:
# srec_cat command file: srec_crc_dump_to_file.txt
#===============================================
#-disable-sequence-warning
#Input file
PLK.hex -Intel
#Fill hole with 0xFF
-fill 0xFF 0x8000000 0x08040000
#CRC Algorithm at given address
-STM32 0x08040000
#-crop 0x08040000 0x08040004
-Output_Block_Size=16
#Produce output
-o PLK_SRECORD.hex -Intel
导致问题,
srec_cat: PLK.hex: 47492: warning: The data presented for STM32 calculation has  at least one hole in it.



公羊子丹 发表于 2025-8-24 07:27 | 显示全部楼层
这个警告意思是HEX文件里有空洞,你要么用fill参数把未覆盖区域填满。
周半梅 发表于 2025-8-24 07:28 | 显示全部楼层
srec_cat默认要求数据连续,如果有跳地址就会提示hole。
帛灿灿 发表于 2025-8-24 07:28 | 显示全部楼层
你已经用了-fill 0xFF,不过要确认起始和结束地址范围跟芯片flash完全一致。
童雨竹 发表于 2025-8-24 07:29 | 显示全部楼层
看下是不是PLK.hex里本身缺少某些地址段,编译链接时的scatter文件要检查。
万图 发表于 2025-8-24 07:30 | 显示全部楼层
如果只是warning,可以忽略,但做CRC最好保证区域完整。
Wordsworth 发表于 2025-8-24 07:31 | 显示全部楼层
可以试试加上-crop,把校验范围严格限制在实际代码区域。
Bblythe 发表于 2025-8-24 07:32 | 显示全部楼层
我印象里STM32算法参数需要最后4字节预留,确保不会被覆盖。
Pulitzer 发表于 2025-8-24 07:35 | 显示全部楼层
有人建议用-bin再转hex,这样地址就连续了,不会出现hole。
Uriah 发表于 2025-8-24 07:36 | 显示全部楼层
你要确认目标flash大小,0x08040000是不是对齐在正确边界。
Clyde011 发表于 2025-8-24 07:37 | 显示全部楼层
我之前也遇到过,最后是修改srec脚本顺序解决的,先fill再crop再CRC。
duo点 发表于 2025-8-25 15:41 | 显示全部楼层
内存区域未完全分配。
onlycook 发表于 2025-8-25 15:41 | 显示全部楼层
某些代码或数据段未被正确分配到内存区域。
七毛钱 发表于 2025-8-25 15:42 | 显示全部楼层
链接脚本中可能存在语法错误或逻辑错误,导致内存分配不连续。
内政奇才 发表于 2025-8-25 15:43 | 显示全部楼层
生成并分析 .map 文件,定位未分配的区域。
海滨消消 发表于 2025-8-25 15:43 | 显示全部楼层
调整内存定义或显式分配保留段。
豌豆爹 发表于 2025-8-25 15:43 | 显示全部楼层
检查编译器/链接器选项,避免不必要的内存占用。
麻花油条 发表于 2025-8-25 15:44 | 显示全部楼层
检查并优化链接脚本中的内存定义和段分配。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

42

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

42

主题

42

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部