错误的脚本
百度可以搜索到若干文章,如果不信,官网文档中也是这样的代码:
Import("env")
env.AddPostAction(
"$BUILD_DIR/${PROGNAME}.elf",
env.VerboseAction(" ".join([
"$OBJCOPY", "-O", "ihex", "-R", ".eeprom",
"$BUILD_DIR/${PROGNAME}.elf", "$BUILD_DIR/${PROGNAME}.hex"
]), "Building $BUILD_DIR/${PROGNAME}.hex")
)
HEX生成出错
使用后处理Python脚本自动执行编译指令,PlatformIO生成hex失败,错误信息如下:
以上内容可知似乎是该指令执行时候语法错误。
解决方式
gcc交叉编译工具并不很熟悉,那就百度吧,百度再次理所当然地失望,那就谷歌吧,问题解决!
使用新的脚本,唯一的变化就是指令语法加了'':
Import("env")
# # Custom HEX from ELF
env.AddPostAction(
"$BUILD_DIR/${PROGNAME}.elf",
env.VerboseAction(" ".join([
"$OBJCOPY", "-O", "ihex", "-R", ".eeprom",
'"$BUILD_DIR/${PROGNAME}.elf"', '"$BUILD_DIR/${PROGNAME}.hex"' # 加个单引号
]), "Building $BUILD_DIR/${PROGNAME}.hex")
)
CLI中使用
pio run -e nucleo_h743zi -v
nucleo_h743zi有所不同,错误的话会有提示……
可以查看到展开后的完整指令是,路径要加单引号'':
arm-none-eabi-objcopy -O ihex -R .eeprom E:\02_svns\myprojects\9. Arduino\02_Devlop\01_First_A_STM32_FreeRT_Pjt\.pio\build\nucleo_h743zi/firmware.elf E:\02_svns\myprojects\9. Arduino\02_Devlop\01_First_A_STM32_FreeRT_Pjt\.pio\build\nucleo_h743zi/firmware.hex
参考链接:
Can't generate hex file using post process - #3 by ksimpson - PlatformIO Community
其他
打开终端
【pio run -e nucleo_h743zi -v】