diff --git a/BootLoaders/Boards/avr/platform.local.txt b/BootLoaders/Boards/avr/platform.local.txt index 1322d9b..65ae6a9 100644 --- a/BootLoaders/Boards/avr/platform.local.txt +++ b/BootLoaders/Boards/avr/platform.local.txt @@ -1,3 +1,16 @@ ## Save hex recipe.output.tmp_file={build.project_name}.hex -recipe.output.save_file=multifw.hex +recipe.output.save_file=multi-avr.hex + +## Copy hex +# Make a copy of the compiled binary with the version number in the file name +recipe.hooks.objcopy.postobjcopy.01.pattern.windows="{runtime.platform.path}/tools/win/do_version.bat" "{build.path}" "{build.project_name}" "{build.source.path}" {build.board} +recipe.hooks.objcopy.postobjcopy.01.pattern.linux="{runtime.platform.path}/tools/linux/do_version" "{build.path}" "{build.project_name}" "{build.source.path}" {build.board} +recipe.hooks.objcopy.postobjcopy.01.pattern.linux64="{runtime.platform.path}/tools/linux64/do_version" "{build.path}" "{build.project_name}" "{build.source.path}" {build.board} +recipe.hooks.objcopy.postobjcopy.01.pattern.macosx="{runtime.platform.path}/tools/macosx/do_version" "{build.path}" "{build.project_name}" "{build.source.path}" {build.board} + +# If we're exporting the hex file, rename it with the version number +recipe.hooks.savehex.postsavehex.01.pattern.windows="{runtime.platform.path}/tools/win/do_version.bat" "{build.path}" "{build.project_name}" "{build.source.path}" {build.board} EXPORT +recipe.hooks.savehex.postsavehex.01.pattern.linux="{runtime.platform.path}/tools/linux/do_version" "{build.path}" "{build.project_name}" "{build.source.path}" {build.board} EXPORT +recipe.hooks.savehex.postsavehex.01.pattern.linux64="{runtime.platform.path}/tools/linux64/do_version" "{build.path}" "{build.project_name}" "{build.source.path}" {build.board} EXPORT +recipe.hooks.savehex.postsavehex.01.pattern.macosx="{runtime.platform.path}/tools/macosx/do_version" "{build.path}" "{build.project_name}" "{build.source.path}" {build.board} EXPORT diff --git a/BootLoaders/Boards/avr/tools/linux/do_version b/BootLoaders/Boards/avr/tools/linux/do_version new file mode 100644 index 0000000..ba2a182 --- /dev/null +++ b/BootLoaders/Boards/avr/tools/linux/do_version @@ -0,0 +1,47 @@ +#!/bin/bash + +BUILD_PATH=$1 +PROJECT_NAME=$2 +SKETCH_PATH=$3 +MULTI_BOARD=$4 +EXPORT_FLAG=$5 + +MULTI_TYPE=avr + +if [ -e "$BUILD_PATH/sketch/Multiprotocol.h" ]; then + MAJOR_VERSION=$(grep "VERSION_MAJOR" "$BUILD_PATH/sketch/Multiprotocol.h" | awk -v N=3 '{print $N}') + MINOR_VERSION=$(grep "VERSION_MINOR" "$BUILD_PATH/sketch/Multiprotocol.h" | awk -v N=3 '{print $N}') + REVISION_VERSION=$(grep "VERSION_REVISION" "$BUILD_PATH/sketch/Multiprotocol.h" | awk -v N=3 '{print $N}') + PATCH_VERSION=$(grep "VERSION_PATCH" "$BUILD_PATH/sketch/Multiprotocol.h" | awk -v N=3 '{print $N}') + + MULTI_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$REVISION_VERSION.$PATCH_VERSION +else + MULTI_VERSION= +fi + +if [ -e "$BUILD_PATH/$PROJECT_NAME.hex" ]; then + cp "$BUILD_PATH/$PROJECT_NAME.hex" "$BUILD_PATH/multi-$MULTI_TYPE-$MULTI_VERSION.hex" +fi + +if [ -e "$BUILD_PATH/$PROJECT_NAME.bin" ]; then + cp "$BUILD_PATH/$PROJECT_NAME.bin" "$BUILD_PATH/multi-$MULTI_TYPE-$MULTI_VERSION.bin" +fi + +if [ $# -eq 5 ]; then + if [ $EXPORT_FLAG == "EXPORT" ]; then + + if [ -e "$BUILD_PATH/$PROJECT_NAME.hex" ]; then + cp "$BUILD_PATH/$PROJECT_NAME.hex" "$SKETCH_PATH/multi-$MULTI_TYPE-$MULTI_VERSION.hex" + fi + if [ -e "$BUILD_PATH/$PROJECT_NAME.bin" ]; then + cp "$BUILD_PATH/$PROJECT_NAME.bin" "$SKETCH_PATH/multi-$MULTI_TYPE-$MULTI_VERSION.bin" + fi + + if [ -e "$SKETCH_PATH/multi-$MULTI_TYPE.hex" ]; then + rm "$SKETCH_PATH/multi-$MULTI_TYPE.hex" + fi + if [ -e "$SKETCH_PATH/multi-$MULTI_TYPE.bin" ]; then + rm "$SKETCH_PATH/multi-$MULTI_TYPE.bin" + fi + fi +fi diff --git a/BootLoaders/Boards/avr/tools/linux64/do_version b/BootLoaders/Boards/avr/tools/linux64/do_version new file mode 100644 index 0000000..ba2a182 --- /dev/null +++ b/BootLoaders/Boards/avr/tools/linux64/do_version @@ -0,0 +1,47 @@ +#!/bin/bash + +BUILD_PATH=$1 +PROJECT_NAME=$2 +SKETCH_PATH=$3 +MULTI_BOARD=$4 +EXPORT_FLAG=$5 + +MULTI_TYPE=avr + +if [ -e "$BUILD_PATH/sketch/Multiprotocol.h" ]; then + MAJOR_VERSION=$(grep "VERSION_MAJOR" "$BUILD_PATH/sketch/Multiprotocol.h" | awk -v N=3 '{print $N}') + MINOR_VERSION=$(grep "VERSION_MINOR" "$BUILD_PATH/sketch/Multiprotocol.h" | awk -v N=3 '{print $N}') + REVISION_VERSION=$(grep "VERSION_REVISION" "$BUILD_PATH/sketch/Multiprotocol.h" | awk -v N=3 '{print $N}') + PATCH_VERSION=$(grep "VERSION_PATCH" "$BUILD_PATH/sketch/Multiprotocol.h" | awk -v N=3 '{print $N}') + + MULTI_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$REVISION_VERSION.$PATCH_VERSION +else + MULTI_VERSION= +fi + +if [ -e "$BUILD_PATH/$PROJECT_NAME.hex" ]; then + cp "$BUILD_PATH/$PROJECT_NAME.hex" "$BUILD_PATH/multi-$MULTI_TYPE-$MULTI_VERSION.hex" +fi + +if [ -e "$BUILD_PATH/$PROJECT_NAME.bin" ]; then + cp "$BUILD_PATH/$PROJECT_NAME.bin" "$BUILD_PATH/multi-$MULTI_TYPE-$MULTI_VERSION.bin" +fi + +if [ $# -eq 5 ]; then + if [ $EXPORT_FLAG == "EXPORT" ]; then + + if [ -e "$BUILD_PATH/$PROJECT_NAME.hex" ]; then + cp "$BUILD_PATH/$PROJECT_NAME.hex" "$SKETCH_PATH/multi-$MULTI_TYPE-$MULTI_VERSION.hex" + fi + if [ -e "$BUILD_PATH/$PROJECT_NAME.bin" ]; then + cp "$BUILD_PATH/$PROJECT_NAME.bin" "$SKETCH_PATH/multi-$MULTI_TYPE-$MULTI_VERSION.bin" + fi + + if [ -e "$SKETCH_PATH/multi-$MULTI_TYPE.hex" ]; then + rm "$SKETCH_PATH/multi-$MULTI_TYPE.hex" + fi + if [ -e "$SKETCH_PATH/multi-$MULTI_TYPE.bin" ]; then + rm "$SKETCH_PATH/multi-$MULTI_TYPE.bin" + fi + fi +fi diff --git a/BootLoaders/Boards/avr/tools/macosx/do_version b/BootLoaders/Boards/avr/tools/macosx/do_version new file mode 100644 index 0000000..ba2a182 --- /dev/null +++ b/BootLoaders/Boards/avr/tools/macosx/do_version @@ -0,0 +1,47 @@ +#!/bin/bash + +BUILD_PATH=$1 +PROJECT_NAME=$2 +SKETCH_PATH=$3 +MULTI_BOARD=$4 +EXPORT_FLAG=$5 + +MULTI_TYPE=avr + +if [ -e "$BUILD_PATH/sketch/Multiprotocol.h" ]; then + MAJOR_VERSION=$(grep "VERSION_MAJOR" "$BUILD_PATH/sketch/Multiprotocol.h" | awk -v N=3 '{print $N}') + MINOR_VERSION=$(grep "VERSION_MINOR" "$BUILD_PATH/sketch/Multiprotocol.h" | awk -v N=3 '{print $N}') + REVISION_VERSION=$(grep "VERSION_REVISION" "$BUILD_PATH/sketch/Multiprotocol.h" | awk -v N=3 '{print $N}') + PATCH_VERSION=$(grep "VERSION_PATCH" "$BUILD_PATH/sketch/Multiprotocol.h" | awk -v N=3 '{print $N}') + + MULTI_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$REVISION_VERSION.$PATCH_VERSION +else + MULTI_VERSION= +fi + +if [ -e "$BUILD_PATH/$PROJECT_NAME.hex" ]; then + cp "$BUILD_PATH/$PROJECT_NAME.hex" "$BUILD_PATH/multi-$MULTI_TYPE-$MULTI_VERSION.hex" +fi + +if [ -e "$BUILD_PATH/$PROJECT_NAME.bin" ]; then + cp "$BUILD_PATH/$PROJECT_NAME.bin" "$BUILD_PATH/multi-$MULTI_TYPE-$MULTI_VERSION.bin" +fi + +if [ $# -eq 5 ]; then + if [ $EXPORT_FLAG == "EXPORT" ]; then + + if [ -e "$BUILD_PATH/$PROJECT_NAME.hex" ]; then + cp "$BUILD_PATH/$PROJECT_NAME.hex" "$SKETCH_PATH/multi-$MULTI_TYPE-$MULTI_VERSION.hex" + fi + if [ -e "$BUILD_PATH/$PROJECT_NAME.bin" ]; then + cp "$BUILD_PATH/$PROJECT_NAME.bin" "$SKETCH_PATH/multi-$MULTI_TYPE-$MULTI_VERSION.bin" + fi + + if [ -e "$SKETCH_PATH/multi-$MULTI_TYPE.hex" ]; then + rm "$SKETCH_PATH/multi-$MULTI_TYPE.hex" + fi + if [ -e "$SKETCH_PATH/multi-$MULTI_TYPE.bin" ]; then + rm "$SKETCH_PATH/multi-$MULTI_TYPE.bin" + fi + fi +fi diff --git a/BootLoaders/Boards/avr/tools/win/do_version.bat b/BootLoaders/Boards/avr/tools/win/do_version.bat new file mode 100644 index 0000000..4cda254 --- /dev/null +++ b/BootLoaders/Boards/avr/tools/win/do_version.bat @@ -0,0 +1,54 @@ +@ECHO OFF +SETLOCAL EnableDelayedExpansion + +SET BUILD_PATH=%1 +SET PROJECT_NAME=%2 +SET SKETCH_PATH=%3 +SET MULTI_BOARD=%4 +SET EXPORT_FLAG=%5 + +REM ECHO Multi board: %MULTI_BOARD% + +SET MULTI_TYPE=avr + +IF EXIST "%1\sketch\Multiprotocol.h" ( + REM ECHO Getting Multi-MODULE firmware version from "%1\sketch\Multiprotocol.h" + FOR /F "tokens=* usebackq skip=2" %%A in (`find "#define VERSION_MAJOR" "%1\sketch\Multiprotocol.h"`) DO FOR /F "tokens=3" %%i in ("%%A") do SET MAJOR_VERSION=%%i + FOR /F "tokens=* usebackq skip=2" %%B in (`find "#define VERSION_MINOR" "%1\sketch\Multiprotocol.h"`) DO FOR /F "tokens=3" %%i in ("%%B") do SET MINOR_VERSION=%%i + FOR /F "tokens=* usebackq skip=2" %%C in (`find "#define VERSION_REVISION" "%1\sketch\Multiprotocol.h"`) DO FOR /F "tokens=3" %%i in ("%%C") do SET REVISION_VERSION=%%i + FOR /F "tokens=* usebackq skip=2" %%D in (`find "#define VERSION_PATCH_LEVEL" "%1\sketch\Multiprotocol.h"`) DO FOR /F "tokens=3" %%i in ("%%D") do SET PATCH_VERSION=%%i + SET MULTI_VER=!MAJOR_VERSION!.!MINOR_VERSION!.!REVISION_VERSION!.!PATCH_VERSION! +) ELSE ( + SET MULTI_VER= +) + +REM ECHO Multi-MODULE firmware version: %MULTI_VER% + +REM Copy the compiled file to the sketch folder with the version number in the file name +IF EXIST "%BUILD_PATH%\%PROJECT_NAME%.hex" ( + REM ECHO COPY "%BUILD_PATH%\%PROJECT_NAME%.hex" "%SKETCH_PATH%\multi-%MULTI_TYPE%-%MULTI_VER%.hex" /Y + COPY "%BUILD_PATH%\%PROJECT_NAME%.hex" "%BUILD_PATH%\multi-%MULTI_TYPE%-%MULTI_VER%.hex" /Y >NUL +) + +IF EXIST "%BUILD_PATH%\%PROJECT_NAME%.bin" ( + REM ECHO COPY "%BUILD_PATH%\%PROJECT_NAME%.bin" "%SKETCH_PATH%\multi-%MULTI_TYPE%-%MULTI_VER%.bin" /Y + COPY "%BUILD_PATH%\%PROJECT_NAME%.bin" "%BUILD_PATH%\multi-%MULTI_TYPE%-%MULTI_VER%.bin" /Y >NUL +) + +IF "%EXPORT_FLAG%"=="EXPORT" ( +REM Copy the compiled file to the sketch folder with the version number in the file name + IF EXIST "%BUILD_PATH%\%PROJECT_NAME%.hex" ( + COPY "%BUILD_PATH%\%PROJECT_NAME%.hex" "%SKETCH_PATH%\multi-%MULTI_TYPE%-%MULTI_VER%.hex" /Y >NUL + ) + + IF EXIST "%BUILD_PATH%\%PROJECT_NAME%.bin" ( + COPY "%BUILD_PATH%\%PROJECT_NAME%.bin" "%SKETCH_PATH%\multi-%MULTI_TYPE%-%MULTI_VER%.bin" /Y >NUL + ) + + IF EXIST "%SKETCH_PATH%\multi-%MULTI_TYPE%.bin" ( + DEL "%SKETCH_PATH%\multi-%MULTI_TYPE%.bin" >NUL + ) + IF EXIST "%SKETCH_PATH%\multi-%MULTI_TYPE%.hex" ( + DEL "%SKETCH_PATH%\multi-%MULTI_TYPE%.hex" >NUL + ) +) diff --git a/BootLoaders/Boards/stm32/platform.txt b/BootLoaders/Boards/stm32/platform.txt index 230f0a5..75cf2c6 100644 --- a/BootLoaders/Boards/stm32/platform.txt +++ b/BootLoaders/Boards/stm32/platform.txt @@ -103,7 +103,20 @@ recipe.size.regex.data=^(?:\.data|\.bss|\.noinit)\s+([0-9]+).* ## Save Compiled Binary recipe.output.tmp_file={build.project_name}.bin #recipe.output.save_file={build.project_name}.{build.variant}.bin -recipe.output.save_file=multifw.bin +recipe.output.save_file=multi-stm.bin + +## Copy hex +# Make a copy of the compiled binary with the version number in the file name +recipe.hooks.objcopy.postobjcopy.01.pattern.windows="{runtime.platform.path}/tools/win/do_version.bat" "{build.path}" "{build.project_name}" "{build.source.path}" {build.board} +recipe.hooks.objcopy.postobjcopy.01.pattern.linux="{runtime.platform.path}/tools/linux/do_version" "{build.path}" "{build.project_name}" "{build.source.path}" {build.board} +recipe.hooks.objcopy.postobjcopy.01.pattern.linux64="{runtime.platform.path}/tools/linux64/do_version" "{build.path}" "{build.project_name}" "{build.source.path}" {build.board} +recipe.hooks.objcopy.postobjcopy.01.pattern.macosx="{runtime.platform.path}/tools/macosx/do_version" "{build.path}" "{build.project_name}" "{build.source.path}" {build.board} + +# If we're exporting the hex file, rename it with the version number +recipe.hooks.savehex.postsavehex.01.pattern.windows="{runtime.platform.path}/tools/win/do_version.bat" "{build.path}" "{build.project_name}" "{build.source.path}" {build.board} EXPORT +recipe.hooks.savehex.postsavehex.01.pattern.linux="{runtime.platform.path}/tools/linux/do_version" "{build.path}" "{build.project_name}" "{build.source.path}" {build.board} EXPORT +recipe.hooks.savehex.postsavehex.01.pattern.linux64="{runtime.platform.path}/tools/linux64/do_version" "{build.path}" "{build.project_name}" "{build.source.path}" {build.board} EXPORT +recipe.hooks.savehex.postsavehex.01.pattern.macosx="{runtime.platform.path}/tools/macosx/do_version" "{build.path}" "{build.project_name}" "{build.source.path}" {build.board} EXPORT # Uploader tools # ------------------- diff --git a/BootLoaders/Boards/stm32/tools/linux/do_version b/BootLoaders/Boards/stm32/tools/linux/do_version new file mode 100644 index 0000000..b469a5c --- /dev/null +++ b/BootLoaders/Boards/stm32/tools/linux/do_version @@ -0,0 +1,47 @@ +#!/bin/bash + +BUILD_PATH=$1 +PROJECT_NAME=$2 +SKETCH_PATH=$3 +MULTI_BOARD=$4 +EXPORT_FLAG=$5 + +MULTI_TYPE=stm + +if [ -e "$BUILD_PATH/sketch/Multiprotocol.h" ]; then + MAJOR_VERSION=$(grep "VERSION_MAJOR" "$BUILD_PATH/sketch/Multiprotocol.h" | awk -v N=3 '{print $N}') + MINOR_VERSION=$(grep "VERSION_MINOR" "$BUILD_PATH/sketch/Multiprotocol.h" | awk -v N=3 '{print $N}') + REVISION_VERSION=$(grep "VERSION_REVISION" "$BUILD_PATH/sketch/Multiprotocol.h" | awk -v N=3 '{print $N}') + PATCH_VERSION=$(grep "VERSION_PATCH" "$BUILD_PATH/sketch/Multiprotocol.h" | awk -v N=3 '{print $N}') + + MULTI_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$REVISION_VERSION.$PATCH_VERSION +else + MULTI_VERSION= +fi + +if [ -e "$BUILD_PATH/$PROJECT_NAME.hex" ]; then + cp "$BUILD_PATH/$PROJECT_NAME.hex" "$BUILD_PATH/multi-$MULTI_TYPE-$MULTI_VERSION.hex" +fi + +if [ -e "$BUILD_PATH/$PROJECT_NAME.bin" ]; then + cp "$BUILD_PATH/$PROJECT_NAME.bin" "$BUILD_PATH/multi-$MULTI_TYPE-$MULTI_VERSION.bin" +fi + +if [ $# -eq 5 ]; then + if [ $EXPORT_FLAG == "EXPORT" ]; then + + if [ -e "$BUILD_PATH/$PROJECT_NAME.hex" ]; then + cp "$BUILD_PATH/$PROJECT_NAME.hex" "$SKETCH_PATH/multi-$MULTI_TYPE-$MULTI_VERSION.hex" + fi + if [ -e "$BUILD_PATH/$PROJECT_NAME.bin" ]; then + cp "$BUILD_PATH/$PROJECT_NAME.bin" "$SKETCH_PATH/multi-$MULTI_TYPE-$MULTI_VERSION.bin" + fi + + if [ -e "$SKETCH_PATH/multi-$MULTI_TYPE.hex" ]; then + rm "$SKETCH_PATH/multi-$MULTI_TYPE.hex" + fi + if [ -e "$SKETCH_PATH/multi-$MULTI_TYPE.bin" ]; then + rm "$SKETCH_PATH/multi-$MULTI_TYPE.bin" + fi + fi +fi diff --git a/BootLoaders/Boards/stm32/tools/linux/maple_upload b/BootLoaders/Boards/stm32/tools/linux/maple_upload index 50d2ae5..8afaa65 100644 --- a/BootLoaders/Boards/stm32/tools/linux/maple_upload +++ b/BootLoaders/Boards/stm32/tools/linux/maple_upload @@ -2,23 +2,32 @@ #set -e - - if [ $# -lt 4 ]; then echo "Usage: $0 $# " >&2 exit 1 fi + dummy_port="$1"; altID="$2"; usbID="$3"; binfile="$4"; dummy_port_fullpath="/dev/$1" + if [ $# -eq 5 ]; then dfuse_addr="--dfuse-address $5" else dfuse_addr="" fi - # Get the directory where the script is running. DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) +# Get the right upload-reset tool +uname -m | grep "x86_64" 2>&1 1>/dev/null +if [ $? -eq 0 ]; then + # Do 64-bit stuff + RESET_UTIL=${DIR}/../linux64/upload-reset +else + # Do 32-bit stuff + RESET_UTIL=${DIR}/upload-reset +fi + # ----------------- IMPORTANT ----------------- # The 2nd parameter to upload-reset is the delay after resetting before it exits # This value is in milliseonds @@ -26,7 +35,7 @@ DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) # 750ms to 1500ms seems to work on my Mac -"${DIR}/upload-reset" ${dummy_port_fullpath} 750 +"${RESET_UTIL}" ${dummy_port_fullpath} 750 #DFU_UTIL=$(dirname $0)/dfu-util/dfu-util diff --git a/BootLoaders/Boards/stm32/tools/linux/serial_upload b/BootLoaders/Boards/stm32/tools/linux/serial_upload index 755444a..c540e5d 100644 --- a/BootLoaders/Boards/stm32/tools/linux/serial_upload +++ b/BootLoaders/Boards/stm32/tools/linux/serial_upload @@ -1,2 +1,13 @@ #!/bin/bash -$(dirname $0)/stm32flash/stm32flash -g 0x8000000 -b 115200 -w "$4" /dev/"$1" +port=$1 +addr=$2 +file=$3 + +uname -m | grep "x86_64" 2>&1 1>/dev/null +if [ $? -eq 0 ]; then + # Do 64-bit stuff + $(dirname $0)/../linux64/stm32flash/stm32flash -g $addr -b 57600 -w "$file" /dev/"$port" +else + # Do 32-bit stuff + $(dirname $0)/stm32flash/stm32flash -g $addr -b 57600 -w "$file" /dev/"$port" +fi diff --git a/BootLoaders/Boards/stm32/tools/linux64/do_version b/BootLoaders/Boards/stm32/tools/linux64/do_version new file mode 100644 index 0000000..b469a5c --- /dev/null +++ b/BootLoaders/Boards/stm32/tools/linux64/do_version @@ -0,0 +1,47 @@ +#!/bin/bash + +BUILD_PATH=$1 +PROJECT_NAME=$2 +SKETCH_PATH=$3 +MULTI_BOARD=$4 +EXPORT_FLAG=$5 + +MULTI_TYPE=stm + +if [ -e "$BUILD_PATH/sketch/Multiprotocol.h" ]; then + MAJOR_VERSION=$(grep "VERSION_MAJOR" "$BUILD_PATH/sketch/Multiprotocol.h" | awk -v N=3 '{print $N}') + MINOR_VERSION=$(grep "VERSION_MINOR" "$BUILD_PATH/sketch/Multiprotocol.h" | awk -v N=3 '{print $N}') + REVISION_VERSION=$(grep "VERSION_REVISION" "$BUILD_PATH/sketch/Multiprotocol.h" | awk -v N=3 '{print $N}') + PATCH_VERSION=$(grep "VERSION_PATCH" "$BUILD_PATH/sketch/Multiprotocol.h" | awk -v N=3 '{print $N}') + + MULTI_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$REVISION_VERSION.$PATCH_VERSION +else + MULTI_VERSION= +fi + +if [ -e "$BUILD_PATH/$PROJECT_NAME.hex" ]; then + cp "$BUILD_PATH/$PROJECT_NAME.hex" "$BUILD_PATH/multi-$MULTI_TYPE-$MULTI_VERSION.hex" +fi + +if [ -e "$BUILD_PATH/$PROJECT_NAME.bin" ]; then + cp "$BUILD_PATH/$PROJECT_NAME.bin" "$BUILD_PATH/multi-$MULTI_TYPE-$MULTI_VERSION.bin" +fi + +if [ $# -eq 5 ]; then + if [ $EXPORT_FLAG == "EXPORT" ]; then + + if [ -e "$BUILD_PATH/$PROJECT_NAME.hex" ]; then + cp "$BUILD_PATH/$PROJECT_NAME.hex" "$SKETCH_PATH/multi-$MULTI_TYPE-$MULTI_VERSION.hex" + fi + if [ -e "$BUILD_PATH/$PROJECT_NAME.bin" ]; then + cp "$BUILD_PATH/$PROJECT_NAME.bin" "$SKETCH_PATH/multi-$MULTI_TYPE-$MULTI_VERSION.bin" + fi + + if [ -e "$SKETCH_PATH/multi-$MULTI_TYPE.hex" ]; then + rm "$SKETCH_PATH/multi-$MULTI_TYPE.hex" + fi + if [ -e "$SKETCH_PATH/multi-$MULTI_TYPE.bin" ]; then + rm "$SKETCH_PATH/multi-$MULTI_TYPE.bin" + fi + fi +fi diff --git a/BootLoaders/Boards/stm32/tools/linux64/serial_upload b/BootLoaders/Boards/stm32/tools/linux64/serial_upload index 755444a..c540e5d 100644 --- a/BootLoaders/Boards/stm32/tools/linux64/serial_upload +++ b/BootLoaders/Boards/stm32/tools/linux64/serial_upload @@ -1,2 +1,13 @@ #!/bin/bash -$(dirname $0)/stm32flash/stm32flash -g 0x8000000 -b 115200 -w "$4" /dev/"$1" +port=$1 +addr=$2 +file=$3 + +uname -m | grep "x86_64" 2>&1 1>/dev/null +if [ $? -eq 0 ]; then + # Do 64-bit stuff + $(dirname $0)/../linux64/stm32flash/stm32flash -g $addr -b 57600 -w "$file" /dev/"$port" +else + # Do 32-bit stuff + $(dirname $0)/stm32flash/stm32flash -g $addr -b 57600 -w "$file" /dev/"$port" +fi diff --git a/BootLoaders/Boards/stm32/tools/linux64/upload-reset b/BootLoaders/Boards/stm32/tools/linux64/upload-reset index 26985b8..77563d6 100644 Binary files a/BootLoaders/Boards/stm32/tools/linux64/upload-reset and b/BootLoaders/Boards/stm32/tools/linux64/upload-reset differ diff --git a/BootLoaders/Boards/stm32/tools/macosx/do_version b/BootLoaders/Boards/stm32/tools/macosx/do_version new file mode 100644 index 0000000..b469a5c --- /dev/null +++ b/BootLoaders/Boards/stm32/tools/macosx/do_version @@ -0,0 +1,47 @@ +#!/bin/bash + +BUILD_PATH=$1 +PROJECT_NAME=$2 +SKETCH_PATH=$3 +MULTI_BOARD=$4 +EXPORT_FLAG=$5 + +MULTI_TYPE=stm + +if [ -e "$BUILD_PATH/sketch/Multiprotocol.h" ]; then + MAJOR_VERSION=$(grep "VERSION_MAJOR" "$BUILD_PATH/sketch/Multiprotocol.h" | awk -v N=3 '{print $N}') + MINOR_VERSION=$(grep "VERSION_MINOR" "$BUILD_PATH/sketch/Multiprotocol.h" | awk -v N=3 '{print $N}') + REVISION_VERSION=$(grep "VERSION_REVISION" "$BUILD_PATH/sketch/Multiprotocol.h" | awk -v N=3 '{print $N}') + PATCH_VERSION=$(grep "VERSION_PATCH" "$BUILD_PATH/sketch/Multiprotocol.h" | awk -v N=3 '{print $N}') + + MULTI_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$REVISION_VERSION.$PATCH_VERSION +else + MULTI_VERSION= +fi + +if [ -e "$BUILD_PATH/$PROJECT_NAME.hex" ]; then + cp "$BUILD_PATH/$PROJECT_NAME.hex" "$BUILD_PATH/multi-$MULTI_TYPE-$MULTI_VERSION.hex" +fi + +if [ -e "$BUILD_PATH/$PROJECT_NAME.bin" ]; then + cp "$BUILD_PATH/$PROJECT_NAME.bin" "$BUILD_PATH/multi-$MULTI_TYPE-$MULTI_VERSION.bin" +fi + +if [ $# -eq 5 ]; then + if [ $EXPORT_FLAG == "EXPORT" ]; then + + if [ -e "$BUILD_PATH/$PROJECT_NAME.hex" ]; then + cp "$BUILD_PATH/$PROJECT_NAME.hex" "$SKETCH_PATH/multi-$MULTI_TYPE-$MULTI_VERSION.hex" + fi + if [ -e "$BUILD_PATH/$PROJECT_NAME.bin" ]; then + cp "$BUILD_PATH/$PROJECT_NAME.bin" "$SKETCH_PATH/multi-$MULTI_TYPE-$MULTI_VERSION.bin" + fi + + if [ -e "$SKETCH_PATH/multi-$MULTI_TYPE.hex" ]; then + rm "$SKETCH_PATH/multi-$MULTI_TYPE.hex" + fi + if [ -e "$SKETCH_PATH/multi-$MULTI_TYPE.bin" ]; then + rm "$SKETCH_PATH/multi-$MULTI_TYPE.bin" + fi + fi +fi diff --git a/BootLoaders/Boards/stm32/tools/win/do_version.bat b/BootLoaders/Boards/stm32/tools/win/do_version.bat new file mode 100644 index 0000000..cf6b92f --- /dev/null +++ b/BootLoaders/Boards/stm32/tools/win/do_version.bat @@ -0,0 +1,54 @@ +@ECHO OFF +SETLOCAL EnableDelayedExpansion + +SET BUILD_PATH=%1 +SET PROJECT_NAME=%2 +SET SKETCH_PATH=%3 +SET MULTI_BOARD=%4 +SET EXPORT_FLAG=%5 + +REM ECHO Multi board: %MULTI_BOARD% + +SET MULTI_TYPE=stm + +IF EXIST "%1\sketch\Multiprotocol.h" ( + REM ECHO Getting Multi-MODULE firmware version from "%1\sketch\Multiprotocol.h" + FOR /F "tokens=* usebackq skip=2" %%A in (`find "#define VERSION_MAJOR" "%1\sketch\Multiprotocol.h"`) DO FOR /F "tokens=3" %%i in ("%%A") do SET MAJOR_VERSION=%%i + FOR /F "tokens=* usebackq skip=2" %%B in (`find "#define VERSION_MINOR" "%1\sketch\Multiprotocol.h"`) DO FOR /F "tokens=3" %%i in ("%%B") do SET MINOR_VERSION=%%i + FOR /F "tokens=* usebackq skip=2" %%C in (`find "#define VERSION_REVISION" "%1\sketch\Multiprotocol.h"`) DO FOR /F "tokens=3" %%i in ("%%C") do SET REVISION_VERSION=%%i + FOR /F "tokens=* usebackq skip=2" %%D in (`find "#define VERSION_PATCH_LEVEL" "%1\sketch\Multiprotocol.h"`) DO FOR /F "tokens=3" %%i in ("%%D") do SET PATCH_VERSION=%%i + SET MULTI_VER=!MAJOR_VERSION!.!MINOR_VERSION!.!REVISION_VERSION!.!PATCH_VERSION! +) ELSE ( + SET MULTI_VER= +) + +REM ECHO Multi-MODULE firmware version: %MULTI_VER% + +REM Copy the compiled file to the sketch folder with the version number in the file name +IF EXIST "%BUILD_PATH%\%PROJECT_NAME%.hex" ( + REM ECHO COPY "%BUILD_PATH%\%PROJECT_NAME%.hex" "%SKETCH_PATH%\multi-%MULTI_TYPE%-%MULTI_VER%.hex" /Y + COPY "%BUILD_PATH%\%PROJECT_NAME%.hex" "%BUILD_PATH%\multi-%MULTI_TYPE%-%MULTI_VER%.hex" /Y >NUL +) + +IF EXIST "%BUILD_PATH%\%PROJECT_NAME%.bin" ( + REM ECHO COPY "%BUILD_PATH%\%PROJECT_NAME%.bin" "%SKETCH_PATH%\multi-%MULTI_TYPE%-%MULTI_VER%.bin" /Y + COPY "%BUILD_PATH%\%PROJECT_NAME%.bin" "%BUILD_PATH%\multi-%MULTI_TYPE%-%MULTI_VER%.bin" /Y >NUL +) + +IF "%EXPORT_FLAG%"=="EXPORT" ( +REM Copy the compiled file to the sketch folder with the version number in the file name + IF EXIST "%BUILD_PATH%\%PROJECT_NAME%.hex" ( + COPY "%BUILD_PATH%\%PROJECT_NAME%.hex" "%SKETCH_PATH%\multi-%MULTI_TYPE%-%MULTI_VER%.hex" /Y >NUL + ) + + IF EXIST "%BUILD_PATH%\%PROJECT_NAME%.bin" ( + COPY "%BUILD_PATH%\%PROJECT_NAME%.bin" "%SKETCH_PATH%\multi-%MULTI_TYPE%-%MULTI_VER%.bin" /Y >NUL + ) + + IF EXIST "%SKETCH_PATH%\multi-%MULTI_TYPE%.bin" ( + DEL "%SKETCH_PATH%\multi-%MULTI_TYPE%.bin" >NUL + ) + IF EXIST "%SKETCH_PATH%\multi-%MULTI_TYPE%.hex" ( + DEL "%SKETCH_PATH%\multi-%MULTI_TYPE%.hex" >NUL + ) +) diff --git a/BootLoaders/Boards/stm32/tools/win/get_version.bat b/BootLoaders/Boards/stm32/tools/win/get_version.bat deleted file mode 100644 index 9babfbe..0000000 --- a/BootLoaders/Boards/stm32/tools/win/get_version.bat +++ /dev/null @@ -1,9 +0,0 @@ -@ECHO OFF - -FOR /F "tokens=* usebackq skip=2" %%A in (`find "#define VERSION_MAJOR" "%1\sketch\Multiprotocol.h"`) DO FOR /F "tokens=3" %%i in ("%%A") do SET MAJOR_VERSION=%%i -FOR /F "tokens=* usebackq skip=2" %%B in (`find "#define VERSION_MINOR" "%1\sketch\Multiprotocol.h"`) DO FOR /F "tokens=3" %%i in ("%%B") do SET MINOR_VERSION=%%i -FOR /F "tokens=* usebackq skip=2" %%C in (`find "#define VERSION_REVISION" "%1\sketch\Multiprotocol.h"`) DO FOR /F "tokens=3" %%i in ("%%C") do SET REVISION_VERSION=%%i -FOR /F "tokens=* usebackq skip=2" %%D in (`find "#define VERSION_PATCH_LEVEL" "%1\sketch\Multiprotocol.h"`) DO FOR /F "tokens=3" %%i in ("%%D") do SET PATCH_VERSION=%%i - -SET MULTI_VER=%MAJOR_VERSION%.%MINOR_VERSION%.%REVISION_VERSION%.%PATCH_VERSION% -ECHO %MULTI_VER%