mirror of
				https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
				synced 2025-10-31 03:14:16 +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." |