blob: d1e6f377a7eff936cf27affae3baa2ddcfa9e36f [file] [log] [blame]
#!/bin/bash
# Copyright 2018 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
### run fastboot to flash zedboot to device
## usage: fx flash [-a|-b|-r] [-s <serial>] [--pave] <BOARD>
## <BOARD> Board to flash.
## -a Flash Zircon-A partition (default)
## -b Flash Zircon-B partition
## -r Flash Zircon-R partition
## -s Device you wish to flash to (only necessary if multiple
## devices in fastboot mode)
## --pave Pave device after flashing (recommended)
set -e
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/lib/image_build_vars.sh || exit $?
usage() {
fx-command-help
echo "Available boards:"
echo " vim2"
echo "Available devices:"
fastboot devices -l
exit 1
}
ZIRCONA="ZIRCON-A"
ZIRCONB="ZIRCON-B"
ZIRCONR="ZIRCON-R"
pave=false
partition=$ZIRCONA
device=
while [[ $# -ge 1 ]]; do
case "$1" in
-h|--help)
usage
;;
-a)
partition=$ZIRCONA
;;
-b)
partition=$ZIRCONB
;;
-r)
partition=$ZIRCONR
;;
--pave)
pave=true
;;
--nopave)
pave=false
;;
-s)
shift
device="$1"
;;
vim2)
board="$1"
;;
*)
break
esac
shift
done
case "${board}-${partition}" in
"vim2-${ZIRCONA}")
partition="boot"
;;
"vim2-${ZIRCONB}")
partition="misc"
;;
"vim2-${ZIRCONR}")
partition="recovery"
;;
*)
echo "Invalid board or partition"
usage
esac
num_devices=$(fastboot devices | wc -l)
if [[ "${num_devices}" -lt 1 ]]; then
echo "Please place device into fastboot mode!"
exit 1
elif [[ "${num_devices}" -gt 1 ]] && [[ -z "${device}" ]]; then
echo "More than one device detected, please provide -s <device>!"
usage
exit 1
fi
extra_args=()
if [[ ! -z "${device}" ]]; then
if [[ ! "$(fastboot devices -l)" =~ "${device}" ]]; then
echo "Device ${device} not found!"
usage
exit 1
fi
extra_args=("-s" "${device}")
fi
fastboot flash "${partition}" "${FUCHSIA_BUILD_DIR}/${IMAGE_ZIRCONR_ZBI}" "${extra_args[@]}"
fastboot reboot
if [[ "${pave}" == "true" ]]; then
fx-command-exec pave -1
fi