我下载了一些固件的更新版本,需要将其编译成 firmware.bin
文件(firmware.hex
不起作用)。大多数在线教程都说要使用 PlatformIO 来实现此目的,但每当我构建固件时,一切都会按计划进行,编译时没有任何错误,并表示它成功了。但是,在大多数 YouTube 视频或在线文档中,最后几行包含类似
Archiving .pio\build\mega2560\libFrameworkArduino.a
Archiving .pio\build\mega2560\lib9e6\libU8glib-HAL_ID1932.a
Linking .pio\build\mega2560\firmware.elf
Building .pio\build\mega2560\firmware.hex
Checking size .pio\build\mega2560\firmware.elf
Building .pio\build\mega2560\firmware.bin
RAM: [====== ] 60.6% (used 4963 bytes from 8192 bytes)
Flash: [====== ] 63.7% (used 161682 bytes from 253952 bytes)
================================================ [SUCCESS] Took 222.23 seconds ================================================
虽然我的看起来像这样:
Archiving .pio\build\mega2560\libFrameworkArduino.a
Archiving .pio\build\mega2560\lib9e6\libU8glib-HAL_ID1932.a
Linking .pio\build\mega2560\firmware.elf
Building .pio\build\mega2560\firmware.hex
Checking size .pio\build\mega2560\firmware.elf
RAM: [====== ] 60.6% (used 4963 bytes from 8192 bytes)
Flash: [====== ] 63.7% (used 161682 bytes from 253952 bytes)
================================================ [SUCCESS] Took 222.23 seconds ================================================
果然,有 firmware.elf
和 firmware.hex
,但没有 firmware.bin
。 Many other places说 platformio 默认创建一个 .bin
文件,所以我不认为这是我忘记做的事情,但那是什么?我需要编辑 Platformio.ini
文件或其他文件吗?
最佳答案
我在构建 arduino 时遇到了同样的问题。我找到的解决方案是在工作区添加一个 extra_script.py
文件来编译 bin。
引用文献
基本上,您希望将 extra_scripts
行添加到 platformio.ini
文件中
; you env might be different to might platform, board and framework be
[env:nanoatmega328]
platform = atmelavr
board = nanoatmega328
framework = arduino
extra_scripts = post:extra_script.py
extra_script.py
文件与 platformio.ini
位于同一文件夹中
from os.path import join
Import("env", "projenv")
# Custom BIN from ELF
env.AddPostAction(
"$BUILD_DIR/${PROGNAME}.elf",
env.VerboseAction(" ".join([
"$OBJCOPY",
"-O",
"binary",
"$TARGET",
"$BUILD_DIR/${PROGNAME}.bin"
]), "Building $TARGET"))
关于visual-studio-code - PlatformIO不会在VS Code中创建firmware.bin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63063252/