mirror of
				https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
				synced 2025-11-03 22:31:04 +00:00 
			
		
		
		
	
		
			
	
	
		
			113 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			113 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								#!/bin/bash
							 | 
						||
| 
								 | 
							
								# Translates the windows Arduino IDE upload call - something like..
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# upload_router ttyUSB0 1 1EAF:0003 /tmp/build9114565021046468906.tmp/STM32_Blink.cpp maple_dfu 0
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# to the linux dfu-util equivalent of the form...
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# dfu-util -D ./STM32_Blink.cpp.bin -d 1eaf:0003 --intf 0 --alt 1
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								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
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DEVICE="$3"
							 | 
						||
| 
								 | 
							
								# Lowercase the 1eaf device name, since in Windows land everybody shouts.
							 | 
						||
| 
								 | 
							
								DEVICE=${DEVICE,,}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								BINFILE="$4.bin"
							 | 
						||
| 
								 | 
							
								INTERFACE="$6"
							 | 
						||
| 
								 | 
							
								ALT_INTERFACE="$2"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# You will need the usb-reset code, see https://github.com/rogerclarkmelbourne/Arduino_STM32/wiki/Using-a-generic-stm32-board-on-linux-with-Maple-bootloader
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								USBRESET=$(which usb-reset) || USBRESET="./usb-reset"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Check to see if a maple compatible board is attached
							 | 
						||
| 
								 | 
							
								LEAF_STATUS=$(leaf_status)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Borard not found, or no boot loader on board.
							 | 
						||
| 
								 | 
							
								if [[ $(leaf_status) = "unknown" ]]
							 | 
						||
| 
								 | 
							
								then
							 | 
						||
| 
								 | 
							
								   echo "STM32 Maple Bootloader compatible board not found."
							 | 
						||
| 
								 | 
							
								   sleep 5
							 | 
						||
| 
								 | 
							
								   exit 1
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# We got this far, so we need to get the board in bootloader mode. 
							 | 
						||
| 
								 | 
							
								# After the timeout period, the board goes back in to serial mode, we need it in dfu mode, which happens for the first few seconds at power on 
							 | 
						||
| 
								 | 
							
								# so we ask the user to unplug and re-plug the board. 
							 | 
						||
| 
								 | 
							
								echo -e "\n\rSTM32 Maple board is in $LEAF_STATUS mode."
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								echo "Please unplug and replug the USB cable to the Maple device."
							 | 
						||
| 
								 | 
							
								sleep 2
							 | 
						||
| 
								 | 
							
								# On unplugging the board will be "unknown"
							 | 
						||
| 
								 | 
							
								while [[ $(leaf_status) != "unknown" ]]
							 | 
						||
| 
								 | 
							
								do
							 | 
						||
| 
								 | 
							
								   echo -n "."
							 | 
						||
| 
								 | 
							
								   sleep 1
							 | 
						||
| 
								 | 
							
								done
							 | 
						||
| 
								 | 
							
								# On re-plugging the board will be "dfu"
							 | 
						||
| 
								 | 
							
								while [[ $(leaf_status) != "dfu" ]]
							 | 
						||
| 
								 | 
							
								do
							 | 
						||
| 
								 | 
							
								   echo -n "."
							 | 
						||
| 
								 | 
							
								   sleep 1
							 | 
						||
| 
								 | 
							
								done
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								echo -e "\n\rProgramming STM32 device with dfu-util"
							 | 
						||
| 
								 | 
							
								until dfu-util  -D "$BINFILE" -d "$DEVICE" --intf "$INTERFACE" --alt "$ALT_INTERFACE" 2>&1
							 | 
						||
| 
								 | 
							
								do
							 | 
						||
| 
								 | 
							
								    echo -n "."
							 | 
						||
| 
								 | 
							
								    sleep 1
							 | 
						||
| 
								 | 
							
								done
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								echo -e "\n\rUnplug and replug the USB cable to the STM32 board again please...."
							 | 
						||
| 
								 | 
							
								while [[  $(leaf_status) != "unknown" ]]
							 | 
						||
| 
								 | 
							
								do
							 | 
						||
| 
								 | 
							
								    echo -n "."
							 | 
						||
| 
								 | 
							
								    sleep 1
							 | 
						||
| 
								 | 
							
								done
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								echo -e "\n\rReconnecting"
							 | 
						||
| 
								 | 
							
								while [[ $(leaf_status) = "unknown" ]]
							 | 
						||
| 
								 | 
							
								do
							 | 
						||
| 
								 | 
							
								    echo -n "."
							 | 
						||
| 
								 | 
							
								    sleep 1
							 | 
						||
| 
								 | 
							
								done
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								echo -e "\n\rWaiting for bootloader to exit."
							 | 
						||
| 
								 | 
							
								for i in {1..6}
							 | 
						||
| 
								 | 
							
								do
							 | 
						||
| 
								 | 
							
								    echo -n "."
							 | 
						||
| 
								 | 
							
								    sleep 1
							 | 
						||
| 
								 | 
							
								done
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								"$USBRESET" "/dev/bus/usb/$(lsusb |grep "1eaf" |awk '{print $2,$4}'|sed 's/\://g'|sed 's/ /\//g')" >/dev/null 2>&1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								while [[ $(leaf_status) = "unknown" ]]
							 | 
						||
| 
								 | 
							
								do
							 | 
						||
| 
								 | 
							
								    echo -n "."
							 | 
						||
| 
								 | 
							
								    sleep 1
							 | 
						||
| 
								 | 
							
								done
							 | 
						||
| 
								 | 
							
								THIS_TTY=$(find /dev/ttyACM* -cmin -2)
							 | 
						||
| 
								 | 
							
								echo -e "\n\rSTM32 Maple board serial port re-created..."
							 | 
						||
| 
								 | 
							
								echo -e "\n\rSerial port is $THIS_TTY Please allow 15 seconds before attempting to read from serial port."
							 |