我正在为STM32 MCU构建固件更新程序。到目前为止,我已经在设备上编程了引导加载程序软件,与FLASH中的主要应用程序分开了。
我需要做的是生成一个二进制文件,它将作为FLASH中主要应用程序的替换代码。这意味着我可以通过UART传输文件并覆盖主应用程序。我该如何生成这样的文件?
使用stm32CubeIDE对代码进行编程,该文件在生成后会生成.elf文件。在通过UART传输之前,我将在此二进制代码中添加标头。
非常感谢您的帮助
哈里
答案 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文件”复选框 (如果看不到这些选项,则可能需要重新启动IDE-这样的错误仍然存在)
这将使IDE将输出转换为易于分析的HEX文件。您可以找到the format description in Wikipedia。您可以先解析它,然后再发送到引导加载程序。
或者,您可以设置“转换为二进制文件”复选框,该复选框将生成原始的二进制文件。但是,如果您的代码不是从零地址开始,则可能会带来一些麻烦。