[STM32F1] 如何在十六进制文件名称中添加版本号和 8 位哈希值

[复制链接]
217|0
小库里 发表于 2025-11-14 12:52 | 显示全部楼层 |阅读模式
如何在十六进制文件名称中添加版本号和 8 位 Git 哈希值,并在程序中访问这些信息?
有一个名为 Foo 的 STM32 项目,编译后会生成名为 Foo.hex 的英特尔十六进制文件,用于现场设备的程序升级。
我希望在文件名中添加以下信息:版本号,例如 10.1 或 10_1、Git 哈希值的最后 8 位,以及自上次 Git 提交后的编译次数。具体需求如下:
若我们提交的版本为 10.1,对应提交的 Git 哈希值后 8 位为 63245699,希望生成的文件名为 Foo10_1_0_63245699.hex;
当通过 I2C 询问版本时,Foo 程序需返回 10_1_0 或 10_1_0_63245699;
若电脑上的文件版本高于 STM32 板载程序版本,则激活引导程序,通过 I2C 升级软件;
再次编译程序时,自上次提交后的编译次数加 1,文件名变为 Foo10_1_1_63245699.hex;
第三次编译则为 Foo10_1_2_63245699.hex;
当我们再次提交代码时,手动升级版本号,自上次提交后的编译次数重置为 0,同时 Git 哈希值更新,例如生成文件名 Foo10_2_0_23798241.hex。
问题是如何将包含这些信息的文件名或对应的版本信息嵌入到程序中,使得程序通过 I2C 询问版本时,能输出相关内容?
此前已有同事在 Microchip 编译器 / IDE 中实现了该功能,现在我需要在 STM32CubeIDE 的编译流程中添加相同的功能。
在 Microchip IDE 中,他们通过修改 Makefile 实现,但 STM32CubeIDE 生成的 Makefile 标注有 “自动生成文件,请勿编辑”, 如果我强行修改,后续 IDE 升级可能会覆盖我的修改,导致功能失效,该如何处理?

您需要登录后才可以回帖 登录 | 注册

本版积分规则

68

主题

68

帖子

0

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