如何生成stm32代码的二进制文件?

时间:2019-07-13 09:05:53

标签: c compilation stm32

我正在为STM32 MCU构建固件更新程序。到目前为止,我已经在设备上编程了引导加载程序软件,与FLASH中的主要应用程序分开了。

我需要做的是生成一个二进制文件,它将作为FLASH中主要应用程序的替换代码。这意味着我可以通过UART传输文件并覆盖主应用程序。我该如何生成这样的文件?

使用stm32CubeIDE对代码进行编程,该文件在生成后会生成.elf文件。在通过UART传输之前,我将在此二进制代码中添加标头。

非常感谢您的帮助

哈里

2 个答案:

答案 0 :(得分:2)

您将要使用IDE附带的objcopy.exe。以下内容可用于STM32CubeIDE的前身Atollic TrueStudio。通常将此步骤添加为后期制作步骤

arm-atollic-eabi-objcopy.exe -O ihex "${BuildArtifactFileBaseName}.elf" "${BuildArtifactFileBaseName}.hex"

有关objcopy的更多信息: https://sourceware.org/binutils/docs/binutils/objcopy.html

答案 1 :(得分:2)

在CubeIDE中,转到“项目设置”->“ C / C ++构建”组->“设置”->“工具设置”选项卡->“ MCU发布构建输出”->“转换为Intel Hex文件”复选框 Hex file option in CubeIDE (如果看不到这些选项,则可能需要重新启动IDE-这样的错误仍然存​​在)

这将使IDE将输出转换为易于分析的HEX文件。您可以找到the format description in Wikipedia。您可以先解析它,然后再发送到引导加载程序。

或者,您可以设置“转换为二进制文件”复选框,该复选框将生成原始的二进制文件。但是,如果您的代码不是从零地址开始,则可能会带来一些麻烦。