Blame view

tools/mrvl_uart.sh 2.83 KB
eee4835d2   Konstantin Porotchkin   tools: Add Marvel...
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
  #!/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]"
ceb328180   Andreas Färber   tools/mrvl_uart.s...
50
      echo -e "\tport  - serial port the target board is connected to"
eee4835d2   Konstantin Porotchkin   tools: Add Marvel...
51
52
53
54
55
56
      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====="
ceb328180   Andreas Färber   tools/mrvl_uart.s...
57
      echo -e "- The speed-up option is not available in SoC families prior to A8K+"
eee4835d2   Konstantin Porotchkin   tools: Add Marvel...
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
      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
ceb328180   Andreas Färber   tools/mrvl_uart.s...
116
  # Return the port to the default speed
eee4835d2   Konstantin Porotchkin   tools: Add Marvel...
117
118
119
  stty -F $port raw ignbrk time 5 $default_baudrate
  
  # Optional - fire up Minicom
3e00c48ef   Andreas Färber   tools/mrvl_uart.s...
120
  minicom -D $port -b $default_baudrate
eee4835d2   Konstantin Porotchkin   tools: Add Marvel...
121