我使用 STM32CubeIDE 进行项目构建,但尝试执行构建后步骤作为将应用程序校验和/crc 放入 .hex 文件的方法。我读到以下命令应该与 STM32CubeIDE 构建器一起使用。
首先将.elf转换为.bin arm-none-eabi-objcopy -O 二进制 main.elf main.tmp.bin
校验和完成后,然后将 .bin 转换为 .hex...
arm-none-eabi-objcopy -I 二进制 -O ihex
--更改地址0x08020000 main.bin hex2.tmp
我是否缺少路径变量或其他什么?
是的,您可以将这部分纳入 CubeIDE 的构建过程,但有一些注意事项。
首先,您不能只在 Windows 命令提示符窗口中键入这些命令(例如用于测试)。您的
PATH
环境变量将不包括存储 GNU 工具的目录。您需要手动将正确的路径添加到您的 PATH
。您可以通过打开项目的 Properties
窗口并转到 C/C++ Build -> Environment
来查看 CubeIDE 使用哪些目录。
接下来,请注意 CubeIDE 已经可以为您的程序自动生成
.bin
文件。转到 Properties -> C/C++ Build -> Settings -> [Tool settings] -> MCU Post build outputs
,您可以选择 Convert to binary file
:
最后,您可以在
Properties -> C/C++ Build -> Settings -> [Build steps]
输入一个用户定义的构建后步骤。
这将是调用生成并插入 CRC 的任何命令的地方。 CubeIDE 将使用正确的路径,因此您无需在此处指定它。
我认为没有办法添加另一个构建后步骤,但是
.bin
文件应该可以用于编程。如果您真的需要一个.hex
文件,您可能需要制作一个执行CRC和最终objcopy
的脚本来实现这一点,并将该脚本称为构建后步骤。
我假设您使用的是 Windows 系统并尝试将 .elf 文件转换为十六进制。 我使用以下命令执行此操作:
arm-none-eabi-objcopy -O ihex LSM1x0A_SDK_LoRaWAN_Sigfox.elf "LSM1x0A_SDK_LoRaWAN_Sigfox.hex"
另外,如果需要执行python脚本那么可以组合多个命令,如下:
arm-none-eabi-objcopy -O ihex LSM1x0A_SDK_LoRaWAN_Sigfox.elf "LSM1x0A_SDK_LoRaWAN_Sigfox.hex" & cd D:/cf_firmwares/LRWN_dev/LSM1x0A_dev/Projects/NUCLEO-WL55CC/Applications/LoRaWAN_Sigfox/LSM100A/STM32CubeIDE/Release & ls & python D:/cf_firmwares/LRWN_dev/LSM1x0A_dev/Utilities/1_SJITools/1_FW_Merge_Tool/main.py
上面的命令,我尝试了以下内容:
观察:
希望这会有所帮助