PlatformIO 不会在 VS Code 中创建 firmware.bin
PlatformIO will not create firmware.bin in VS Code
我下载了一些固件的更新版本,需要编译成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。
参考资料
post 编译的详细信息:
https://docs.platformio.org/en/latest/projectconf/advanced_scripting.html#before-pre-and-after-post-actions
脚本详情
https://community.platformio.org/t/add-t-none-or-t-binary/441/14
基本上您想将 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"))
我下载了一些固件的更新版本,需要编译成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。
参考资料
post 编译的详细信息: https://docs.platformio.org/en/latest/projectconf/advanced_scripting.html#before-pre-and-after-post-actions
脚本详情 https://community.platformio.org/t/add-t-none-or-t-binary/441/14
基本上您想将 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"))