【发布时间】:2019-11-22 20:31:33
【问题描述】:
我正在为 STM32 MCU 构建固件更新程序。到目前为止,我已经在设备上编写了引导加载程序软件,与 FLASH 中的主应用程序分开。
我需要做的是生成一个二进制文件,它将作为 FLASH 中主应用程序的替换代码。这意味着我可以通过 UART 传输文件并覆盖主应用程序。我该如何制作这样的文件?
代码是使用 stm32CubeIDE 编写的,它在构建后会生成一个 .elf 文件。在通过 UART 传输之前,我将在此二进制代码中添加一个标头。
非常感谢您的帮助,
哈利
【问题讨论】:
-
How do I go about producing such a file?- 与生产任何其他固件的方式相同。编写源文件,编译和链接。have so far programmed bootloader software- 什么/哪个软件? -
我想我要问的是编译链接后通常会生成一个可执行文件。但是,在这种情况下,会生成一个 .elf 文件,因为它会进入 MCU。这个 .elf 文件是否等同于 .exe 文件,如果将二进制文件传输到 MCU 并加载,程序就会运行?
-
没有。 .elf is ELF, .exe is executable for windows binary file is binary 你想要什么取决于“编程的引导加载程序软件”期望得到什么。它很可能需要hex file,但它取决于您编写的引导加载程序软件。以及您编写的软件使用什么协议。而且很可能您需要一些可以与您编写的引导加载程序一起使用的程序。
-
好吧,您必须与您的链接器进行认真的交谈,以说服它生成可以加载到闪存中的图像。是的,这很痛苦,所有这些领域、部分和部分,但必须完成:(
-
或者如果你使用 gcc 和 linux,只需
arm-none-eabi-objcopy -o ihex input.elf output.elf,即。 how to convert elf to hex。通常引导加载程序很简单,它们公开一个 api 来编程和擦除内存区域。因此,您需要在 PC 上安装一个能够理解 ex 的程序。 hex 文件格式并与您的引导加载程序通信。不过,您没有说您使用的是什么“引导加载程序软件”。
标签: c compilation stm32