- 背景**
我目前正在使用STM32CubeIDE开发STM32F411CEU6的固件,我将对多个UC进行编程,每个UC都有一个ID(32位无符号数字),这个数字是静态的,在他的一生中永远不会改变,我们是一个小团队,但可能我们将不得不对几百个这样的设备进行编程,所以在代码中手动更改与该ID关联的值会有点累人,而且很耗时,所以,我的问题是:
有没有一种方法来编译不同版本的固件,使其生成几个. bin文件,每个whit唯一的区别,这一个常数的变化?
有没有办法自动化这个过程?
"我在想什么"
我曾想过在头文件中定义这个常量(如果有必要的话,还可以定义其他常量),然后使用Python之类的工具生成不同版本的代码,但这样我就必须打开每个项目或工作区,并且仍然必须手动编译和生成每个. bin文件,有没有办法从Python(使用STM32CubeIDE)生成. bin文件,或者类似的东西?
- 其他信息**
- 使用STM32F411CEU6
- 使用STM32立方体IDE
- 我有Python C++的基本知识
- C语言中级知识
先谢了!任何帮助都将不胜感激
1条答案
按热度按时间ttvkxqim1#
如果可以选择使用
hex
文件,则可以避免重新编译,如下所示:1.在程序外部保留一些闪存空间(可选地配置链接器脚本以确保没有数据放置在该部分中)。
1.使用python脚本生成intel十六进制数据,并将所需ID放在保留位置。
1.简单地连接两个十六进制文件和程序像往常一样。我测试了这与STM32 ST-LINK实用程序/STM32CubeProgrammer。
要生成十六进制数据,可以使用intelhex包。例如:
注:
'<I'
的含义,请参见struct文档。