blob: 6c2acaea311c3f11351dff98f48fb288237a10a5 [file] [log] [blame]
#!/usr/bin/env bash
# Copyright 2017 The Fuchsia Authors
#
# Use of this source code is governed by a MIT-style
# license that can be found in the LICENSE file or at
# https://opensource.org/licenses/MIT
set -eo pipefail
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
MKBOOTIMG="${DIR}/../third_party/tools/android/mkbootimg"
MEMBASE=0x00000000
KERNEL_OFFSET=0x1080000
USE_LZ4=0
BOOT_PART=boot
BUILD_DIR=build-arm64
CMDLINE=
function HELP {
echo "help:"
echo "-b <board> : Board to flash"
echo "-c <cmd line> : Extra command line options"
echo "-m : Add mexec option to command line"
echo "-o <dir> : Build directory"
echo "-M : RAM Start address"
echo "-K : Kernel offset"
echo "-z : Use LZ4"
echo "-P : Boot partition name"
echo "-h for help"
exit 1
}
while getopts "b:c:d:mo:M:K:P:zh" FLAG; do
case $FLAG in
b) BOARD="${OPTARG}";;
c) CMDLINE+=" ${OPTARG}";;
d) RAMDISK="${OPTARG}";;
m) CMDLINE+=" netsvc.netboot=true";;
o) BUILD_DIR="${OPTARG}";;
M) MEMBASE="${OPTARG}";;
K) KERNEL_OFFSET="${OPTARG}";;
P) BOOT_PART="${OPTARG}";;
z) USE_LZ4=1;;
h) HELP;;
\?)
echo unrecognized option
HELP
;;
esac
done
shift $((OPTIND-1))
if [[ -z "${BOARD}" ]]; then
echo must specify a board to flash
HELP
fi
BOOTDATA_BIN="${BUILD_DIR}/${BOARD}-zircon-bootimage.bin"
ZBOOTDATA_BIN="${BUILD_DIR}/z${BOARD}-zircon-bootimage.bin"
OUT_IMAGE="${BUILD_DIR}/${BOARD}-boot.img"
if [[ ${USE_LZ4} == 1 ]]; then
lz4 -c ${BOOTDATA_BIN} > ${ZBOOTDATA_BIN}
else
gzip -c ${BOOTDATA_BIN} > ${ZBOOTDATA_BIN}
fi
$MKBOOTIMG \
--kernel "${ZBOOTDATA_BIN}" \
--kernel_offset $KERNEL_OFFSET \
--base $MEMBASE \
--cmdline "${CMDLINE}" \
-o "${OUT_IMAGE}"
fastboot flash "${BOOT_PART}" "${OUT_IMAGE}"
fastboot reboot