1#!/usr/bin/env bash
2
3# Copyright 2017 The Fuchsia Authors
4#
5# Use of this source code is governed by a MIT-style
6# license that can be found in the LICENSE file or at
7# https://opensource.org/licenses/MIT
8
9set -eo pipefail
10
11DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
12MKBOOTIMG="${DIR}/../third_party/tools/android/mkbootimg"
13
14MEMBASE=0x00000000
15KERNEL_OFFSET=0x1080000
16USE_LZ4=0
17BOOT_PART=boot
18
19BUILD_DIR=build-arm64
20CMDLINE=
21
22function HELP {
23    echo "help:"
24    echo "-b <board>     : Board to flash"
25    echo "-c <cmd line>  : Extra command line options"
26    echo "-m             : Add mexec option to command line"
27    echo "-o <dir>       : Build directory"
28    echo "-M             : RAM Start address"
29    echo "-K             : Kernel offset"
30    echo "-z             : Use LZ4"
31    echo "-P             : Boot partition name"
32    echo "-h for help"
33    exit 1
34}
35
36while getopts "b:c:d:mo:M:K:P:zh" FLAG; do
37    case $FLAG in
38        b) BOARD="${OPTARG}";;
39        c) CMDLINE+=" ${OPTARG}";;
40        d) RAMDISK="${OPTARG}";;
41        m) CMDLINE+=" netsvc.netboot=true";;
42        o) BUILD_DIR="${OPTARG}";;
43        M) MEMBASE="${OPTARG}";;
44        K) KERNEL_OFFSET="${OPTARG}";;
45        P) BOOT_PART="${OPTARG}";;
46        z) USE_LZ4=1;;
47        h) HELP;;
48        \?)
49            echo unrecognized option
50            HELP
51            ;;
52    esac
53done
54shift $((OPTIND-1))
55
56if [[ -z "${BOARD}" ]]; then
57    echo must specify a board to flash
58    HELP
59fi
60
61BOOTDATA_BIN="${BUILD_DIR}/${BOARD}-zircon-bootimage.bin"
62ZBOOTDATA_BIN="${BUILD_DIR}/z${BOARD}-zircon-bootimage.bin"
63OUT_IMAGE="${BUILD_DIR}/${BOARD}-boot.img"
64
65if [[ ${USE_LZ4} == 1 ]]; then
66    lz4 -c ${BOOTDATA_BIN} > ${ZBOOTDATA_BIN}
67else
68    gzip -c ${BOOTDATA_BIN} > ${ZBOOTDATA_BIN}
69fi
70
71$MKBOOTIMG \
72--kernel "${ZBOOTDATA_BIN}" \
73--kernel_offset $KERNEL_OFFSET \
74--base $MEMBASE \
75--cmdline "${CMDLINE}" \
76-o "${OUT_IMAGE}"
77
78fastboot flash "${BOOT_PART}" "${OUT_IMAGE}"
79fastboot reboot
80