Adding stm32 auto-upload scripts for Windows, Mac, and Linux (#184)

This commit is contained in:
Ben Lye 2018-08-16 09:29:47 +01:00 committed by GitHub
parent 1dc52773f4
commit 685de52538
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 234 additions and 8 deletions

View File

@ -16,7 +16,7 @@ multistm32f103c.pid.0=0x0004
multistm32f103c.build.variant=generic_stm32f103c multistm32f103c.build.variant=generic_stm32f103c
multistm32f103c.build.vect=VECT_TAB_ADDR=0x8000000 multistm32f103c.build.vect=VECT_TAB_ADDR=0x8000000
multistm32f103c.build.core=maple multistm32f103c.build.core=maple
multistm32f103c.build.board=MULTI_STM32_FLASH_FROM_TX=104 multistm32f103c.build.board=MULTI_STM32_FLASH_FROM_TX=108
multistm32f103c.upload.use_1200bps_touch=false multistm32f103c.upload.use_1200bps_touch=false
multistm32f103c.upload.file_type=bin multistm32f103c.upload.file_type=bin
multistm32f103c.upload.auto_reset=true multistm32f103c.upload.auto_reset=true
@ -37,15 +37,23 @@ multistm32f103c.bootloader.tool=serial_upload
#---------------------------- UPLOAD METHODS --------------------------- #---------------------------- UPLOAD METHODS ---------------------------
multistm32f103c.menu.upload_method.TxFlashMethod=Flash from Tx multistm32f103c.menu.upload_method.TxFlashMethod=Flash from Tx
multistm32f103c.menu.upload_method.TxFlashMethod.build.board=MULTI_STM32_FLASH_FROM_TX=107 multistm32f103c.menu.upload_method.TxFlashMethod.build.board=MULTI_STM32_FLASH_FROM_TX=108
multistm32f103c.menu.upload_method.TxFlashMethod.upload.tool=tx_upload multistm32f103c.menu.upload_method.TxFlashMethod.upload.tool=tx_upload
multistm32f103c.menu.upload_method.TxFlashMethod.build.upload_flags=-DSERIAL_USB -DGENERIC_BOOTLOADER multistm32f103c.menu.upload_method.TxFlashMethod.build.upload_flags=-DSERIAL_USB -DGENERIC_BOOTLOADER
multistm32f103c.menu.upload_method.TxFlashMethod.build.vect=VECT_TAB_ADDR=0x8002000 multistm32f103c.menu.upload_method.TxFlashMethod.build.vect=VECT_TAB_ADDR=0x8002000
multistm32f103c.menu.upload_method.TxFlashMethod.build.ldscript=ld/bootloader_20.ld multistm32f103c.menu.upload_method.TxFlashMethod.build.ldscript=ld/bootloader_20.ld
multistm32f103c.menu.upload_method.TxFlashMethod.bootloader.file=Multi4in1/StmMulti4in1.bin multistm32f103c.menu.upload_method.TxFlashMethod.bootloader.file=Multi4in1/StmMulti4in1.bin
multistm32f103c.menu.upload_method.AutoFlashMethod=Auto Detect (USB or Serial)
multistm32f103c.menu.upload_method.AutoFlashMethod.build.board=MULTI_STM32_WITH_BOOT=108
multistm32f103c.menu.upload_method.AutoFlashMethod.upload.tool=auto_upload
multistm32f103c.menu.upload_method.AutoFlashMethod.build.upload_flags=-DSERIAL_USB -DGENERIC_BOOTLOADER
multistm32f103c.menu.upload_method.AutoFlashMethod.build.vect=VECT_TAB_ADDR=0x8002000
multistm32f103c.menu.upload_method.AutoFlashMethod.build.ldscript=ld/bootloader_20.ld
multistm32f103c.menu.upload_method.AutoFlashMethod.bootloader.file=Multi4in1/StmMulti4in1.bin
multistm32f103c.menu.upload_method.DFUUploadMethod=Upload via USB multistm32f103c.menu.upload_method.DFUUploadMethod=Upload via USB
multistm32f103c.menu.upload_method.DFUUploadMethod.build.board=MULTI_STM32_NO_BOOT=107 multistm32f103c.menu.upload_method.DFUUploadMethod.build.board=MULTI_STM32_NO_BOOT=108
multistm32f103c.menu.upload_method.DFUUploadMethod.upload.protocol=maple_dfu multistm32f103c.menu.upload_method.DFUUploadMethod.upload.protocol=maple_dfu
multistm32f103c.menu.upload_method.DFUUploadMethod.upload.tool=maple_upload multistm32f103c.menu.upload_method.DFUUploadMethod.upload.tool=maple_upload
multistm32f103c.menu.upload_method.DFUUploadMethod.build.upload_flags=-DSERIAL_USB -DGENERIC_BOOTLOADER multistm32f103c.menu.upload_method.DFUUploadMethod.build.upload_flags=-DSERIAL_USB -DGENERIC_BOOTLOADER
@ -56,7 +64,7 @@ multistm32f103c.menu.upload_method.DFUUploadMethod.upload.altID=2
multistm32f103c.menu.upload_method.DFUUploadMethod.bootloader.file=Multi4in1/StmMulti4in1.bin multistm32f103c.menu.upload_method.DFUUploadMethod.bootloader.file=Multi4in1/StmMulti4in1.bin
multistm32f103c.menu.upload_method.serialIncBootloaderMethod=Upload via Serial inc. Bootloader (FTDI) multistm32f103c.menu.upload_method.serialIncBootloaderMethod=Upload via Serial inc. Bootloader (FTDI)
multistm32f103c.menu.upload_method.serialIncBootloaderMethod.build.board=MULTI_STM32_WITH_BOOT=107 multistm32f103c.menu.upload_method.serialIncBootloaderMethod.build.board=MULTI_STM32_WITH_BOOT=108
multistm32f103c.menu.upload_method.serialIncBootloaderMethod.upload.protocol=maple_serial multistm32f103c.menu.upload_method.serialIncBootloaderMethod.upload.protocol=maple_serial
multistm32f103c.menu.upload_method.serialIncBootloaderMethod.upload.tool=serial_upload_inc_bootloader multistm32f103c.menu.upload_method.serialIncBootloaderMethod.upload.tool=serial_upload_inc_bootloader
multistm32f103c.menu.upload_method.serialIncBootloaderMethod.build.upload_flags=-DSERIAL_USB -DGENERIC_BOOTLOADER multistm32f103c.menu.upload_method.serialIncBootloaderMethod.build.upload_flags=-DSERIAL_USB -DGENERIC_BOOTLOADER
@ -68,7 +76,7 @@ multistm32f103c.menu.upload_method.serialMethod=Upload via Serial (FTDI)
multistm32f103c.menu.upload_method.serialMethod.upload.protocol=maple_serial multistm32f103c.menu.upload_method.serialMethod.upload.protocol=maple_serial
multistm32f103c.menu.upload_method.serialMethod.upload.tool=serial_upload multistm32f103c.menu.upload_method.serialMethod.upload.tool=serial_upload
multistm32f103c.menu.upload_method.serialMethod.build.upload_flags=-DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG multistm32f103c.menu.upload_method.serialMethod.build.upload_flags=-DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG
multistm32f103c.menu.upload_method.serialMethod.build.board=MULTI_STM32_NO_BOOT=107 multistm32f103c.menu.upload_method.serialMethod.build.board=MULTI_STM32_NO_BOOT=108
multistm32f103c.menu.upload_method.serialMethod.bootloader.file=Multi4in1/StmMulti4in1.bin multistm32f103c.menu.upload_method.serialMethod.bootloader.file=Multi4in1/StmMulti4in1.bin
############################################################## ##############################################################

View File

@ -6,7 +6,7 @@
# https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification # https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification
name=Multi 4-in-1 STM32 name=Multi 4-in-1 STM32
version=1.0.7 version=1.0.8
compiler.warning_flags=-w -DDEBUG_LEVEL=DEBUG_NONE compiler.warning_flags=-w -DDEBUG_LEVEL=DEBUG_NONE
compiler.warning_flags.none=-w -DDEBUG_LEVEL=DEBUG_NONE compiler.warning_flags.none=-w -DDEBUG_LEVEL=DEBUG_NONE
@ -117,6 +117,17 @@ recipe.hooks.savehex.postsavehex.01.pattern.macosx="{runtime.platform.path}/tool
# Uploader tools # Uploader tools
# ------------------- # -------------------
# Automatically detect upload method (USB or serial)
tools.auto_upload.cmd=auto_upload
tools.auto_upload.cmd.windows=auto_upload.bat
tools.auto_upload.path={runtime.platform.path}/tools/win
tools.auto_upload.path.macosx={runtime.platform.path}/tools/macosx
tools.auto_upload.path.linux={runtime.platform.path}/tools/linux
tools.auto_upload.path.linux64={runtime.platform.path}/tools/linux64
tools.auto_upload.upload.params.verbose=-d
tools.auto_upload.upload.params.quiet=
tools.auto_upload.upload.pattern="{path}/{cmd}" {serial.port.file} "{build.path}/{build.project_name}.bin" "{runtime.platform.path}/bootloaders/{bootloader.file}"
# Upload using Maple bootloader over DFU # Upload using Maple bootloader over DFU
tools.maple_upload.cmd=maple_upload tools.maple_upload.cmd=maple_upload
tools.maple_upload.cmd.windows=maple_upload.bat tools.maple_upload.cmd.windows=maple_upload.bat

View File

@ -0,0 +1,45 @@
#!/bin/bash
#set -e
function leaf_status()
{
this_leaf_status=$(lsusb |grep "1eaf" | awk '{ print $NF}')
# Find the mode of the leaf bootloader
case $this_leaf_status in
"1eaf:0003")
echo "dfu"
;;
"1eaf:0004")
echo "ttyACMx"
;;
*)
#echo "$this_leaf_status"
echo "unknown"
;;
esac
}
# Get the directory where the script is running.
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
# Check to see if a maple compatible board is attached
LEAF_STATUS=$(leaf_status)
# Board not found, or no boot loader on board.
if [[ $(leaf_status) = "unknown" ]]
then
# No maple board detected
echo "Maple device not found. Attempting serial upload."
SERIAL_UPLOAD=${DIR}/serial_upload_inc_bootloader
echo "${SERIAL_UPLOAD}" $1 0x8000000 $2 $3
"${SERIAL_UPLOAD}" $1 0x8000000 $2 $3
else
# Maple board detected
echo "Maple device found. Attempting USB upload."
MAPLE_UPLOAD=${DIR}/maple_upload
echo "${MAPLE_UPLOAD}" $1 2 1eaf:0003 $2
"${MAPLE_UPLOAD}" $1 2 1eaf:0003 $2
fi

View File

@ -37,6 +37,8 @@ fi
"${RESET_UTIL}" ${dummy_port_fullpath} 750 "${RESET_UTIL}" ${dummy_port_fullpath} 750
# Give the board a chance to reset to DFU mode
sleep 0.5
#DFU_UTIL=$(dirname $0)/dfu-util/dfu-util #DFU_UTIL=$(dirname $0)/dfu-util/dfu-util
DFU_UTIL=/usr/bin/dfu-util DFU_UTIL=/usr/bin/dfu-util

View File

@ -1,5 +1,5 @@
ATTRS{idProduct}=="1001", ATTRS{idVendor}=="0110", MODE="664", GROUP="plugdev" ATTRS{idProduct}=="1001", ATTRS{idVendor}=="0110", MODE="664", GROUP="plugdev"
ATTRS{idProduct}=="1002", ATTRS{idVendor}=="0110", MODE="664", GROUP="plugdev" ATTRS{idProduct}=="1002", ATTRS{idVendor}=="0110", MODE="664", GROUP="plugdev"
ATTRS{idProduct}=="0003", ATTRS{idVendor}=="1eaf", MODE="664", GROUP="plugdev" SYMLINK+="maple" ATTRS{idProduct}=="0003", ATTRS{idVendor}=="1eaf", MODE="664", GROUP="plugdev" SYMLINK+="maple", ENV{ID_MM_DEVICE_IGNORE}="1"
ATTRS{idProduct}=="0004", ATTRS{idVendor}=="1eaf", MODE="664", GROUP="plugdev" SYMLINK+="maple" ATTRS{idProduct}=="0004", ATTRS{idVendor}=="1eaf", MODE="664", GROUP="plugdev" SYMLINK+="maple", ENV{ID_MM_DEVICE_IGNORE}="1"

View File

@ -0,0 +1,67 @@
#!/bin/bash
shopt -s extglob
function list_usb()
{
while IFS=: read key value; do
key="${key##+( )}"
value="${value##+( )}"
case "$key" in
"Product ID")
p="${value% *}"
;;
"Vendor ID")
v="${value%% *}"
;;
"Manufacturer")
m="${value}"
;;
"Location ID")
l="${value}"
printf "%s:%s %s (%s)\n" "$v" "$p" "$l" "$m"
;;
esac
done < <( system_profiler SPUSBDataType )
}
function leaf_status()
{
this_leaf_status=$(echo "$(list_usb)" | grep "1eaf" | awk '{ print $1}')
# Find the mode of the leaf bootloader
case $this_leaf_status in
"0x1eaf:0x0003")
echo "dfu"
;;
"0x1eaf:0x0004")
echo "ttyACMx"
;;
*)
# echo "$this_leaf_status"
echo "unknown"
;;
esac
}
# Get the directory where the script is running.
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
# Check to see if a maple compatible board is attached
LEAF_STATUS=$(leaf_status)
# Board not found, or no boot loader on board.
if [[ $(leaf_status) = "unknown" ]]
then
# No maple board detected
echo "Maple device not found. Attempting serial upload."
SERIAL_UPLOAD=${DIR}/serial_upload_inc_bootloader
echo "${SERIAL_UPLOAD}" $1 0x8000000 $2 $3
"${SERIAL_UPLOAD}" $1 0x8000000 $2 $3
else
# Maple board detected
echo "Maple device found. Attempting USB upload."
MAPLE_UPLOAD=${DIR}/maple_upload
echo "${MAPLE_UPLOAD}" $1 2 1eaf:0003 $2
"${MAPLE_UPLOAD}" $1 2 1eaf:0003 $2
fi

View File

@ -33,6 +33,9 @@ DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
${DIR}/upload-reset ${dummy_port_fullpath} 750 ${DIR}/upload-reset ${dummy_port_fullpath} 750
# Give the board a chance to reset to DFU mode
sleep 0.5
if [ $# -eq 5 ]; then if [ $# -eq 5 ]; then
dfuse_addr="--dfuse-address $5" dfuse_addr="--dfuse-address $5"
else else

View File

@ -0,0 +1,69 @@
@echo off
REM Script to automatically select upload method for stm32-based multi-protocol module.
set driverLetter=%~dp0
set driverLetter=%driverLetter:~0,2%
%driverLetter%
cd %~dp0
set comport=%1
set fwpath=%2
set fwpath=%fwpath:/=\%
set blpath=%3
set blpath=%blpath:/=\%
:MAPLE_CHECK
REM Look for a Maple USB device
ECHO.
ECHO Looking for Maple device ...
maple_find.exe
ECHO.
if %errorlevel% equ 0 (
GOTO USB_FLASH
) else (
GOTO FTDI_CHECK
)
:USB_FLASH
ECHO Attempting to flash module via Maple USB ...
ECHO java -jar maple_loader.jar %comport% 2 "1EAF:0003" "%fwpath%"
java -jar maple_loader.jar %comport% 2 "1EAF:0003" "%fwpath%"
ECHO.
ECHO Done.
ECHO.
GOTO :EOF
:FTDI_CHECK
REM Attempt to read from the STM module via the specified serial port
ECHO Probing serial port %comport% for STM32 in BOOT0 mode ...
stm32flash.exe -b 115200 %comport%
if %errorlevel% equ 0 (
ECHO Found module on %comport%
GOTO FTDI_FLASH
) ELSE (
ECHO Module in BOOT0 mode not found on %comport%
GOTO :EOF
)
:FTDI_FLASH
ECHO.
ECHO Flashing module via FTDI adapter on %comport%
ECHO.
ECHO Erasing ...
ECHO stm32flash.exe -o -b 115200 %comport%
stm32flash.exe -o -b 115200 %comport%
ECHO Writing bootloader ...
ECHO stm32flash.exe -v -g 0x8000000 -b 115200 -w %blpath% %comport%
stm32flash.exe -v -g 0x8000000 -b 115200 -w %blpath% %comport%
ECHO Writing Multi firmware ...
ECHO stm32flash.exe -v -s 8 -e 0 -g 0x8002000 -b 115200 -w %fwpath% %comport%
stm32flash.exe -v -s 8 -e 0 -g 0x8002000 -b 115200 -w %fwpath% %comport%
ECHO.
ECHO Done.
GOTO :EOF

Binary file not shown.

View File

@ -245,6 +245,27 @@
"version": "4.8.3-2014q1" "version": "4.8.3-2014q1"
}] }]
}, },
{
"name": "Multi 4-in-1 STM32 Board",
"architecture": "STM32F1",
"version": "1.0.8",
"category": "Contributed",
"help": {
"online": "https://github.com/pascallanger/DIY-Multiprotocol-TX-Module"
},
"url": "https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/raw/master/BootLoaders/Archives/package_multi_4in1_stm32_board_v1.0.8.tar.gz",
"archiveFileName": "package_multi_4in1_stm32_board_v1.0.8.tar.gz",
"checksum": "SHA-256:f8100272ec615074cf7962c2c8331014ebda78f3e4c17172b88b6dd3d83c4331",
"size": "10319134",
"boards": [{
"name": "Multi 4-in-1 (STM32F103C)"
}],
"toolsDependencies": [{
"packager": "arduino",
"name": "arm-none-eabi-gcc",
"version": "4.8.3-2014q1"
}]
},
{ {
"name": "Multi 4-in-1 OrangeRX Board - DEPRECATED, USE MULTI 4-IN-1 AVR BOARDS PACKAGE INSTEAD", "name": "Multi 4-in-1 OrangeRX Board - DEPRECATED, USE MULTI 4-IN-1 AVR BOARDS PACKAGE INSTEAD",
"architecture": "orangerx", "architecture": "orangerx",