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