diff --git a/make.sh b/make.sh index cad6f3ae4c..707b92cb27 100755 --- a/make.sh +++ b/make.sh @@ -78,7 +78,7 @@ help() echo " ./make.sh [board|subcmd] [O=]" echo echo " - board: board name of defconfig" - echo " - subcmd: loader|loader-all|trust|uboot|elf|map|sym||" + echo " - subcmd: loader|loader-all|trust|trust-all|uboot|elf|map|sym||" echo " - O=: assigned output directory" echo echo "Example:" @@ -92,10 +92,11 @@ help() echo " After build, Images of uboot, loader and trust are all generated." echo echo "2. Pack helper:" - echo " ./make.sh trust --- pack trust.img" echo " ./make.sh uboot --- pack uboot.img" + echo " ./make.sh trust --- pack trust.img" + echo " ./make.sh trust-all --- pack trust img (all supported)" echo " ./make.sh loader --- pack loader bin" - echo " ./make.sh loader-all --- pack loader bin (all supported loaders)" + echo " ./make.sh loader-all --- pack loader bin (all supported)" echo echo "3. Debug helper:" echo " ./make.sh elf --- dump elf file with -D(default)" @@ -119,7 +120,7 @@ prepare() else case $BOARD in # Parse from exit .config - ''|elf*|loader*|debug*|trust|uboot|map|sym) + ''|elf*|loader*|debug*|trust*|uboot|map|sym) count=`find -name .config | wc -l` dir=`find -name .config` # Good, find only one .config @@ -159,7 +160,7 @@ prepare() ;; #Subcmd - ''|elf*|loader*|debug*|trust|uboot|map|sym) + ''|elf*|loader*|debug*|trust*|uboot|map|sym) ;; *) @@ -261,7 +262,7 @@ sub_commands() ;; trust) - pack_trust_image + pack_trust_image ${opt} exit 0 ;; @@ -271,7 +272,7 @@ sub_commands() ;; uboot) - pack_uboot_image + pack_uboot_image ${opt} exit 0 ;; @@ -569,55 +570,99 @@ pack_loader_image() cd - && mv ${RKBIN}/*_loader_*.bin ./ } +__pack_32bit_trust_image() +{ + local ini=$1 TOS TOS_TA DARM_BASE TEE_LOAD_ADDR TEE_OUTPUT TEE_OFFSET + + if [ ! -f ${ini} ]; then + echo "pack trust failed! Can't find: ${ini}" + return + fi + + # Parse orignal path + TOS=`sed -n "/TOS=/s/TOS=//p" ${ini} |tr -d '\r'` + TOS_TA=`sed -n "/TOSTA=/s/TOSTA=//p" ${ini} |tr -d '\r'` + + # Parse address and output name + TEE_OUTPUT=`sed -n "/OUTPUT=/s/OUTPUT=//p" ${ini} |tr -d '\r'` + if [ "$TEE_OUTPUT" = "" ]; then + TEE_OUTPUT="./trust.img" + fi + TEE_OFFSET=`sed -n "/ADDR=/s/ADDR=//p" ${ini} |tr -d '\r'` + if [ "$TEE_OFFSET" = "" ]; then + TEE_OFFSET=0x8400000 + fi + + # OP-TEE is 132M(0x8400000) offset from DRAM base. + DARM_BASE=`sed -n "/CONFIG_SYS_SDRAM_BASE=/s/CONFIG_SYS_SDRAM_BASE=//p" ${OUTDIR}/include/autoconf.mk|tr -d '\r'` + TEE_LOAD_ADDR=$((DARM_BASE+TEE_OFFSET)) + + # Convert Dec to Hex + TEE_LOAD_ADDR=$(echo "obase=16;${TEE_LOAD_ADDR}"|bc) + + # Replace "./tools/rk_tools/" with "./" to compatible legacy ini content of rkdevelop branch + TOS=$(echo ${TOS} | sed "s/tools\/rk_tools\//\.\//g") + TOS_TA=$(echo ${TOS_TA} | sed "s/tools\/rk_tools\//\.\//g") + + if [ $TOS_TA ]; then + ${RKTOOLS}/loaderimage --pack --trustos ${RKBIN}/${TOS_TA} ${TEE_OUTPUT} ${TEE_LOAD_ADDR} ${PLATFORM_TRUST_IMG_SIZE} + elif [ $TOS ]; then + ${RKTOOLS}/loaderimage --pack --trustos ${RKBIN}/${TOS} ${TEE_OUTPUT} ${TEE_LOAD_ADDR} ${PLATFORM_TRUST_IMG_SIZE} + else + echo "Can't find any tee bin" + exit 1 + fi + + echo "pack trust okay! Input: ${ini}" + echo +} + +__pack_64bit_trust_image() +{ + local ini=$1 + + if [ ! -f ${ini} ]; then + echo "pack trust failed! Can't find: ${ini}" + return + fi + + cd ${RKBIN} + ${RKTOOLS}/trust_merger ${PLATFORM_SHA} ${PLATFORM_RSA} ${PLATFORM_TRUST_IMG_SIZE} ${BIN_PATH_FIXUP} \ + ${PACK_IGNORE_BL32} ${ini} + + cd - && mv ${RKBIN}/trust*.img ./ + echo "pack trust okay! Input: ${ini}" + echo +} + pack_trust_image() { - local TOS TOS_TA DARM_BASE TEE_LOAD_ADDR TEE_OFFSET=0x8400000 + local mode=$1 files ini # ARM64 uses trust_merger if grep -Eq ''^CONFIG_ARM64=y'|'^CONFIG_ARM64_BOOT_AARCH32=y'' ${OUTDIR}/.config ; then - if [ ! -f ${RKBIN}/RKTRUST/${RKCHIP_TRUST}${PLATFORM_AARCH32}TRUST.ini ]; then - echo "pack trust failed! Can't find: ${RKBIN}/RKTRUST/${RKCHIP_TRUST}${PLATFORM_AARCH32}TRUST.ini" - return + ini=${RKBIN}/RKTRUST/${RKCHIP_TRUST}${PLATFORM_AARCH32}TRUST.ini + if [ "${mode}" = 'all' ]; then + files=`ls ${RKBIN}/RKTRUST/${RKCHIP_TRUST}${PLATFORM_AARCH32}TRUST*.ini` + for ini in $files + do + __pack_64bit_trust_image ${ini} + done + else + __pack_64bit_trust_image ${ini} fi - - cd ${RKBIN} - ${RKTOOLS}/trust_merger ${PLATFORM_SHA} ${PLATFORM_RSA} ${PLATFORM_TRUST_IMG_SIZE} ${BIN_PATH_FIXUP} \ - ${PACK_IGNORE_BL32} ${RKBIN}/RKTRUST/${RKCHIP_TRUST}${PLATFORM_AARCH32}TRUST.ini - - cd - && mv ${RKBIN}/trust.img ./trust.img - echo "pack trust okay! Input: ${RKBIN}/RKTRUST/${RKCHIP_TRUST}${PLATFORM_AARCH32}TRUST.ini" # ARM uses loaderimage else - if [ ! -f ${RKBIN}/RKTRUST/${RKCHIP_TRUST}TOS.ini ]; then - echo "pack trust failed! Can't find: ${RKBIN}/RKTRUST/${RKCHIP_TRUST}TOS.ini" - return - fi - - # OP-TEE is 132M(0x8400000) offset from DRAM base. - DARM_BASE=`sed -n "/CONFIG_SYS_SDRAM_BASE=/s/CONFIG_SYS_SDRAM_BASE=//p" ${OUTDIR}/include/autoconf.mk|tr -d '\r'` - TEE_LOAD_ADDR=$((DARM_BASE+TEE_OFFSET)) - - # Convert Dec to Hex - TEE_LOAD_ADDR=$(echo "obase=16;${TEE_LOAD_ADDR}"|bc) - - # Parse orignal path - TOS=`sed -n "/TOS=/s/TOS=//p" ${RKBIN}/RKTRUST/${RKCHIP_TRUST}TOS.ini|tr -d '\r'` - TOS_TA=`sed -n "/TOSTA=/s/TOSTA=//p" ${RKBIN}/RKTRUST/${RKCHIP_TRUST}TOS.ini|tr -d '\r'` - - # replace "./tools/rk_tools/" with "./" to compatible legacy ini content of rkdevelop branch - TOS=$(echo ${TOS} | sed "s/tools\/rk_tools\//\.\//g") - TOS_TA=$(echo ${TOS_TA} | sed "s/tools\/rk_tools\//\.\//g") - - if [ $TOS_TA ]; then - ${RKTOOLS}/loaderimage --pack --trustos ${RKBIN}/${TOS_TA} ./trust.img ${TEE_LOAD_ADDR} ${PLATFORM_TRUST_IMG_SIZE} - elif [ $TOS ]; then - ${RKTOOLS}/loaderimage --pack --trustos ${RKBIN}/${TOS} ./trust.img ${TEE_LOAD_ADDR} ${PLATFORM_TRUST_IMG_SIZE} + ini=${RKBIN}/RKTRUST/${RKCHIP_TRUST}TOS.ini + if [ "${mode}" = 'all' ]; then + files=`ls ${RKBIN}/RKTRUST/${RKCHIP_TRUST}TOS*.ini` + for ini in $files + do + __pack_32bit_trust_image ${ini} + done else - echo "Can't find any tee bin" - exit 1 + __pack_32bit_trust_image ${ini} fi - - echo "pack trust okay! Input: ${RKBIN}/RKTRUST/${RKCHIP_TRUST}TOS.ini" fi }