From 60dc02682b98da8c23b3b14f9ab544d90f852f6b Mon Sep 17 00:00:00 2001 From: Valeriy Koval Date: Mon, 27 Apr 2015 18:59:40 +0300 Subject: [PATCH] Add GDB as alternative uploader to ststm32 platform // Resolve #175 --- platformio/builder/scripts/ststm32.py | 43 ++++++++++++++++++++------- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/platformio/builder/scripts/ststm32.py b/platformio/builder/scripts/ststm32.py index 7b4d80e3..496a72d3 100644 --- a/platformio/builder/scripts/ststm32.py +++ b/platformio/builder/scripts/ststm32.py @@ -6,25 +6,46 @@ """ import platform -from os.path import join +from os.path import isfile, join from SCons.Script import (COMMAND_LINE_TARGETS, AlwaysBuild, Default, - DefaultEnvironment, SConscript) + DefaultEnvironment, Exit, SConscript) env = DefaultEnvironment() SConscript(env.subst(join("$PIOBUILDER_DIR", "scripts", "basearm.py"))) -env.Replace( - UPLOADER=join("$PIOPACKAGES_DIR", "tool-stlink", "st-flash"), - UPLOADERFLAGS=[ - "write", # write in flash - "$SOURCES", # firmware path to flash - "0x08000000" # flash start adress - ], +if "gdb" in env['UPLOAD_PROTOCOL']: + if not isfile(join(env.subst("$PROJECT_DIR"), "upload.gdb")): + Exit( + "You are using GDB as firmware uploader. " + "Please specify upload commands in upload.gdb " + "file in project directory!" + ) + env.Replace( + UPLOADER=join( + "$PIOPACKAGES_DIR", "toolchain-gccarmnoneeabi", + "bin", "arm-none-eabi-gdb" + ), + UPLOADERFLAGS=[ + join("$BUILD_DIR", "firmware.elf"), + "-batch", + "-x", join("$PROJECT_DIR", "upload.gdb") + ], - UPLOADCMD="$UPLOADER $UPLOADERFLAGS" -) + UPLOADCMD="$UPLOADER $UPLOADERFLAGS" + ) +else: + env.Replace( + UPLOADER=join("$PIOPACKAGES_DIR", "tool-stlink", "st-flash"), + UPLOADERFLAGS=[ + "write", # write in flash + "$SOURCES", # firmware path to flash + "0x08000000" # flash start adress + ], + + UPLOADCMD="$UPLOADER $UPLOADERFLAGS" + ) env.Append(