【发布时间】:2022-01-04 07:48:22
【问题描述】:
我有一个头文件。它包含我在嵌入式系统项目中使用的各种常量(作为预处理器宏定义---哈希定义)的值(IDE 是 Keil MicroVision,微控制器是 STM32,编程语言是 C)。 我想将该头文件转换为十六进制文件,以便可以将其单独写入微控制器的闪存。 因此,对于单个通用软件代码,我希望更改常量并针对特定(大约 10-15 种不同类型)硬件运行它。
我的方法:我正在尝试先找到一种将头文件转换为二进制文件的方法,然后使用一些实用程序(来自 sourceforge 的 srecorder)将 .bin 转换为 .hex
这种方法对吗?
或者任何人都可以建议一种替代且有效的方法来实现我的目标吗? 谢谢
【问题讨论】:
-
普通的 C 程序从不在头文件中包含任何变量实例,因此这绝对不是正确的方法 - 您的 C 项目似乎设计不正确。另外,当您说常量时,您是指
const变量定义还是预处理器#define或枚举? -
预处理宏定义(散列定义)
-
不,这不是正确的方法(而且没有任何意义;头文件中的声明是对编译器的指令,而不是数据的实例化,并且数据位置由链接器确定。)这是一个X-Y 问题和您的解决方案 X 毫无意义。而是询问您的问题 Y。有许多可能的解决方案。 STM32 涵盖了广泛的部件,从具有许多 2Kb 闪存块的部件到具有更少、更大和可变大小的闪存页的其他部件。这对构成可行解决方案的内容产生了影响,其中有很多 - 因此您可能需要更具体。