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

标签 c compilation stm32

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

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

代码是使用 stm32CubeIDE 编写的,它在构建后生成一个 .elf 文件。在通过 UART 传输之前,我将向此二进制代码添加一个 header 。

非常感谢您的帮助,

哈利

最佳答案

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

这将使 IDE 将输出转换为易于解析的 HEX 文件。你可以找到the format description in Wikipedia .您可以在发送到引导加载程序之前对其进行解析。

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

关于c - 如何生成 stm32 代码的二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57017703/

相关文章:

c - Cortex M0 上无需禁用中断的同步机制

c - 错误 : selected processor does not support ARM mode `wfi'

C 指针 : difference between while(*s++) { ;} and while(*s) { s++;}

c - C 字符串中的子字符串替换

c# - 为什么编译器删除未使用的结构而不是类

java - OpenGL GLSL 代码在不该编译的时候编译

c - 具体的C变速操作。看看并告诉我它是关于什么的

c - 通过结构体传递字符串

c - X11,使用 XSendEvent(3) 发送事件

在c中使用sqrt()编译错误