#!/bin/bash function select_uboot() { local cfg_name=$1 cd ${MAIN_FOLDER} for file in `ls -d ${BL33_DEFCFG1}/* ${BL33_DEFCFG2}/* ${BL33_DEFCFG3}/* ${BL33_DEFCFG4}/*`; do temp_file=`basename $file` #echo $temp_file temp_file=${temp_file%_*} if [ "$cfg_name" == "$temp_file" ]; then if [ "1" == "${CONFIG_CHOICE_BUILD}" ]; then if [ "2015" == "${CONFIG_BUILD_VERSION}" ]; then bl33_path=${UBOOT_FOLDER}/${UBOOT_VERSION1} elif [ "2019" == "${CONFIG_BUILD_VERSION}" ]; then bl33_path=${UBOOT_FOLDER}/${UBOOT_VERSION2} elif [ "2023" == "${CONFIG_BUILD_VERSION}" ]; then bl33_path=${UBOOT_FOLDER}/${UBOOT_VERSION3} elif [ "2025" == "${CONFIG_BUILD_VERSION}" ]; then bl33_path=${UBOOT_FOLDER}/${UBOOT_VERSION4} else echo "input parameter error" exit 1 fi else if [ "${BL33_DEFCFG1}" == "$(dirname $file)" ]; then bl33_path=${UBOOT_FOLDER}/${UBOOT_VERSION1} elif [ "${BL33_DEFCFG2}" == "$(dirname $file)" ]; then bl33_path=${UBOOT_FOLDER}/${UBOOT_VERSION2} elif [ "${BL33_DEFCFG3}" == "$(dirname $file)" ]; then bl33_path=${UBOOT_FOLDER}/${UBOOT_VERSION3} elif [ "${BL33_DEFCFG4}" == "$(dirname $file)" ]; then bl33_path=${UBOOT_FOLDER}/${UBOOT_VERSION4} else echo "not found defconfig" exit 1 fi fi echo "select bl33: ${bl33_path}" BL33_BUILD_FOLDER=${bl33_path}/build/ SOURCE_FILE=("${BL33_BUILD_FOLDER}.config") CONFIG_FILE=("${BL33_BUILD_FOLDER}include/autoconf.mk") UBOOT_SRC_FOLDER=${bl33_path} break fi done export BL33_BUILD_FOLDER SOURCE_FILE CONFIG_FILE UBOOT_SRC_FOLDER } function pre_build_uboot() { select_uboot $1 cd ${UBOOT_SRC_FOLDER} echo -n "Compile config: " echo "$1" SOCNAME=$1 echo "SOCNAME:${SOCNAME}" export ${SOCNAME} if [ -z ${SKIP_BL33_CLEAN} ]; then make distclean # &> /dev/null make $1'_config' # &> /dev/null fi if [ $? != 0 ] then echo "Pre-build failed! exit!" cd ${MAIN_FOLDER} exit -1 fi cd ${MAIN_FOLDER} } function build_uboot() { echo "Build uboot...Please Wait...$1...$2...$3...$4...$5...$6...$7...$8" mkdir -p ${FIP_BUILD_FOLDER} cd ${UBOOT_SRC_FOLDER} if [[ "${SCRIPT_ARG_CHIPSET_VARIANT}" =~ "nocs" ]] || [[ "${CONFIG_CHIPSET_VARIANT}" =~ "nocs" ]]; then CONFIG_CHIP_NOCS=1 echo "### ${CONFIG_CHIP_NOCS} ###" fi set -e if [ "${CONFIG_MDUMP_COMPRESS}" = "1" ]; then CONFIG_MDUMP_COMPRESS=1 echo "### BL33 CONFIG_MDUMP_COMPRESS = 1 ###" make -j SYSTEMMODE=$1 AVBMODE=$2 BOOTCTRLMODE=$3 FASTBOOTMODE=$4 AVB2RECOVERY=$5 TESTKEY=$6 GPTMODE=$7 JUMPBL33=$8 CHIPMODE=${CONFIG_CHIP_NOCS} \ CONFIG_MDUMP_COMPRESS=${CONFIG_MDUMP_COMPRESS} \ CONFIG_TEE_TYPE=${CONFIG_TEE_TYPE} # &> /dev/null else echo "### BL33 CONFIG_MDUMP_COMPRESS = 0 ### CONFIG_TEE_TYPE ${CONFIG_TEE_TYPE}" make -j SYSTEMMODE=$1 AVBMODE=$2 BOOTCTRLMODE=$3 FASTBOOTMODE=$4 AVB2RECOVERY=$5 TESTKEY=$6 GPTMODE=$7 JUMPBL33=$8 CHIPMODE=${CONFIG_CHIP_NOCS} \ CONFIG_TEE_TYPE=${CONFIG_TEE_TYPE} # &> /dev/null fi set +e if [ "y" == "${CONFIG_AB_UPDATE}" ]; then cp ./build/board/amlogic/${SOCNAME}/firmware/acs.bin ../../${BUILD_PATH}/acs.bin -f fip_bl33_size=`stat -c %s ./build/u-boot.bin` dd if=/dev/zero of=./build/fip.tmp bs=2097120 count=1 dd if=./build/u-boot.bin of=./build/fip.tmp bs=${fip_bl33_size} count=1 conv=notrunc # sha fip ab openssl dgst -sha256 -binary ./build/fip.tmp > ./build/u-boot.bin.sha256 dd if=./build/u-boot.bin.sha256 of=./build/fip.tmp bs=1 count=32 oflag=append conv=notrunc cp ./build/fip.tmp ../../build/fip-bl33.bin -f # sign fip ab ../../fip/stool/signing-tool-c1/sign-boot-c1.sh --sign-kernel -i ./build/fip.tmp \ -k ./board/amlogic/common/ab_mode/aml-key/kernelkey.pem -a ./board/amlogic/common/ab_mode/aml-key/kernelaeskey \ --iv ./board/amlogic/common/ab_mode/aml-key/kernelaesiv -o ./build/fip-bl33.bin.encrypt cp ./build/fip-bl33.bin.encrypt ../../build/ -f #cp ./build/fip-bl33.bin.encrypt ../../${BUILD_PATH}/fip-bl33.bin -f # build pre bl33 set -e make distclean make ${SOCNAME}_defconfig make -j SYSTEMMODE=$1 AVBMODE=$2 BOOTCTRLMODE=$3 FASTBOOTMODE=$4 AVB2RECOVERY=$5 TESTKEY=$6 CHIPMODE=${CONFIG_CHIP_NOCS} \ ABUPDATE=${CONFIG_AB_UPDATE} \ CONFIG_TEE_TYPE=${CONFIG_TEE_TYPE} # &> /dev/null set +e if [ $? != 0 ]; then echo "Pre bl33 failed! exit!" cd ${MAIN_FOLDER} exit 1 fi cp ./build/u-boot.bin ../../${FIP_BUILD_FOLDER}bl33.bin fi SOC_GROUP=`echo ${SOCNAME} | cut -d '_' -f 1` skiped=("c1" "c2" "c3" "g12a" "g12b" "sm1" "t5w") if [[ "${skiped[@]}" =~ "${SOC_GROUP}" ]]; then echo "" echo "The soc(${SOC_GROUP}) does not support bl33z, skip." echo "" elif [ "${CONFIG_SUPPORT_BL33Z}" = "1" ]; then echo "" set -e echo "ramdump enable, build bl33z.bin for soc [${SOCNAME}] ..." if [ -f "./bl33z/Makefile" ]; then set -e if [ "${CONFIG_AML_AARCH32:-0}" = "1" ]; then BL33Z_ARCH=aarch32 echo "AArch32 build. (CONFIG_AML_AARCH32 is defined)" else BL33Z_ARCH=aarch64 echo "AArch64 build" fi make -C bl33z/ PLAT="${SOCNAME}" AARCH="${BL33Z_ARCH}" distclean make -C bl33z/ PLAT="${SOCNAME}" AARCH="${BL33Z_ARCH}" set +e if [ -f "./bl33z/build/bl33z.bin" -a -f "./build/u-boot.bin" ]; then # place bl33z at end of u-boot.bin, _end align(4096) END_LENS=$(stat -c%s "./build/u-boot.bin") END_ALIGN=4096 BL33Z_LOAD=$(( ( (END_LENS + END_ALIGN - 1) / END_ALIGN ) * END_ALIGN )) echo "uboot.bin size:$END_LENS, align:$END_ALIGN, new uboot size:$BL33Z_LOAD" dd if=/dev/zero of=u-boot.tmp bs=$BL33Z_LOAD count=1 dd if=./build/u-boot.bin of=u-boot.tmp conv=notrunc &> /dev/null cat ./bl33z/build/bl33z.bin >> u-boot.tmp cp -rf u-boot.tmp build/u-boot.bin rm -rf u-boot.tmp echo "Append bl33z.bin to the end of uboot.bin OK." else echo "Error: build bl33z.bin failed... abort" fi else echo "Error: bl33z proj is not exist... abort" fi set +e echo "" fi ret=$? cd ${MAIN_FOLDER} if [ 0 -ne $ret ]; then echo "Error: U-boot build failed... abort" exit -1 fi } function uboot_config_list() { echo " ******Amlogic Configs******" for file in `ls -d ${BL33_DEFCFG1}/* ${BL33_DEFCFG2}/* ${BL33_DEFCFG3}/* ${BL33_DEFCFG4}/*`; do temp_file=`basename $file` #echo "$temp_file" temp_file=${temp_file%_*} echo " ${temp_file}" done customer_folder1="${BL33_PATH1}/customer/board/defconfigs" customer_folder2="${BL33_PATH2}/customer/board/defconfigs" if [ -e ${customer_folder1} ]; then echo " ******Customer Configs******" for file in ${customer_folder1}/*; do temp_file=`basename $file` temp_file=${temp_file%_*} echo " ${temp_file}" done fi if [ -e ${customer_folder2} ]; then for file in ${customer_folder2}/*; do temp_file=`basename $file` temp_file=${temp_file%_*} echo " ${temp_file}" done fi echo " ***************************" } function copy_bl33() { if [ "y" != "${CONFIG_AB_UPDATE}" ]; then cp ${BL33_BUILD_FOLDER}/u-boot.bin ${FIP_BUILD_FOLDER}bl33.bin -f fi # remove src link to prevent android "File system loop detected" issue #cd ${UBOOT_SRC_FOLDER}/build/ #rm source cd ${MAIN_FOLDER} }