Bash程序  |  77行  |  2.35 KB

#!/bin/bash

INSTALLER_DIR="`dirname ${0}`"
ECHO_PREFIX="=== "

# for cases that don't run "lunch hikey960-userdebug"
if [ -z "${ANDROID_BUILD_TOP}" ]; then
    ANDROID_BUILD_TOP=${INSTALLER_DIR}/../../../../../
    ANDROID_PRODUCT_OUT="${ANDROID_BUILD_TOP}/out/target/product/hikey960"
fi

if [ ! -d "${ANDROID_PRODUCT_OUT}" ]; then
    echo ${ECHO_PREFIX}"error in locating out directory, check if it exist"
    exit
fi

echo ${ECHO_PREFIX}"android out dir:${ANDROID_PRODUCT_OUT}"

function check_partition_table_version () {
	fastboot erase reserved
	if [ $? -eq 0 ]
	then
		IS_PTABLE_1MB_ALIGNED=true
	else
		IS_PTABLE_1MB_ALIGNED=false
	fi
}

function flashing_atf_uefi () {
	fastboot flash ptable "${INSTALLER_DIR}"/prm_ptable.img
	fastboot flash xloader "${INSTALLER_DIR}"/hisi-sec_xloader.img
	fastboot reboot-bootloader

	fastboot flash fastboot "${INSTALLER_DIR}"/l-loader.bin
	fastboot flash fip "${INSTALLER_DIR}"/fip.bin
	fastboot flash nvme "${INSTALLER_DIR}"/hisi-nvme.img
	fastboot flash fw_lpm3   "${INSTALLER_DIR}"/hisi-lpm3.img
	fastboot flash trustfirmware   "${INSTALLER_DIR}"/hisi-bl31.bin
	fastboot reboot-bootloader

	fastboot flash ptable "${INSTALLER_DIR}"/prm_ptable.img
	fastboot flash xloader "${INSTALLER_DIR}"/hisi-sec_xloader.img
	fastboot flash fastboot "${INSTALLER_DIR}"/l-loader.bin
	fastboot flash fip "${INSTALLER_DIR}"/fip.bin

	fastboot flash boot "${ANDROID_PRODUCT_OUT}"/boot.img
	fastboot flash system "${ANDROID_PRODUCT_OUT}"/system.img
	fastboot flash vendor "${ANDROID_PRODUCT_OUT}"/vendor.img
	fastboot flash cache "${ANDROID_PRODUCT_OUT}"/cache.img
	fastboot flash userdata "${ANDROID_PRODUCT_OUT}"/userdata.img
}

function upgrading_ptable_1mb_aligned () {
	fastboot flash xloader "${INSTALLER_DIR}"/hisi-sec_xloader.img
	fastboot flash ptable "${INSTALLER_DIR}"/hisi-ptable.img
	fastboot flash fastboot "${INSTALLER_DIR}"/hisi-fastboot.img
	fastboot reboot-bootloader
}

echo ${ECHO_PREFIX}"Checking partition table version..."
check_partition_table_version

if [ "${IS_PTABLE_1MB_ALIGNED}" == "true" ]
then
	echo ${ECHO_PREFIX}"Partition table is 1MB aligned. Flashing ATF/UEFI..."
	flashing_atf_uefi
else
	echo ${ECHO_PREFIX}"Partition table is 512KB aligned."
	echo ${ECHO_PREFIX}"Upgrading to 1MB aligned version..."
	upgrading_ptable_1mb_aligned
	echo ${ECHO_PREFIX}"Flasing ATF/UEFI..."
	flashing_atf_uefi
	echo ${ECHO_PREFIX}"Done"
fi

fastboot reboot