Blame view
tools/mrvl_uart.sh
2.83 KB
d41ce506b Initial Release, ... |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
#!/bin/bash # ###################################################### # Copyright (C) 2016 Marvell International Ltd. # # SPDX-License-Identifier: GPL-2.0 # https://spdx.org/licenses # # Author: Konstantin Porotchkin kostap@marvell.com # # Version 0.3 # # UART recovery downloader for Armada SoCs # ###################################################### port=$1 file=$2 speed=$3 pattern_repeat=1500 default_baudrate=115200 tmpfile=/tmp/xmodem.pattern tools=( dd stty sx minicom ) case "$3" in 2) fast_baudrate=230400 prefix="\xF2" ;; 4) fast_baudrate=460800 prefix="\xF4" ;; 8) fast_baudrate=921600 prefix="\xF8" ;; *) fast_baudrate=$default_baudrate prefix="\xBB" esac if [[ -z "$port" || -z "$file" ]] then echo -e " Marvell recovery image downloader for Armada SoC family." echo -e "Command syntax:" echo -e "\t$(basename $0) <port> <file> [2|4|8]" echo -e "\tport - serial port the target board is connected to" echo -e "\tfile - recovery boot image for target download" echo -e "\t2|4|8 - times to increase the default serial port speed by" echo -e "For example - load the image over ttyUSB0 @ 460800 baud:" echo -e "$(basename $0) /dev/ttyUSB0 /tmp/flash-image.bin 4 " echo -e "=====WARNING=====" echo -e "- The speed-up option is not available in SoC families prior to A8K+" echo -e "- This utility is not compatible with Armada 37xx SoC family " fi # Sanity checks if [ -c "$port" ] then echo -e "Using device connected on serial port \"$port\"" else echo "Wrong serial port name!" exit 1 fi if [ -f "$file" ] then echo -e "Loading flash image file \"$file\"" else echo "File $file does not exist!" exit 1 fi # Verify required tools installation for tool in ${tools[@]} do toolname=`which $tool` if [ -z "$toolname" ] then echo -e "Missing installation of \"$tool\" --> Exiting" exit 1 fi done echo -e "Recovery will run at $fast_baudrate baud" echo -e "========================================" if [ -f "$tmpfile" ] then rm -f $tmpfile fi # Send the escape sequence to target board using default debug port speed stty -F $port raw ignbrk time 5 $default_baudrate counter=0 while [ $counter -lt $pattern_repeat ]; do echo -n -e "$prefix\x11\x22\x33\x44\x55\x66\x77" >> $tmpfile let counter=counter+1 done echo -en "Press the \"Reset\" button on the target board and " echo -en "the \"Enter\" key on the host keyboard simultaneously" read dd if=$tmpfile of=$port &>/dev/null # Speed up the binary image transfer stty -F $port raw ignbrk time 5 $fast_baudrate sx -vv $file > $port < $port #sx-at91 $port $file # Return the port to the default speed stty -F $port raw ignbrk time 5 $default_baudrate # Optional - fire up Minicom minicom -D $port -b $default_baudrate |