我下载了一些固件的更新版本,需要将其编译成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。许多其他地方说platformio默认创建一个.bin文件,所以我不认为它是我忘记做的事情,但是它是什么呢?我是否需要编辑我的Platformio.ini文件,或者其他什么?
发布于 2020-08-02 10:12:18
我在为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.pyextra_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"))https://stackoverflow.com/questions/63063252
复制相似问题