make.sh: support "./make trust-all" command

support parse "ADDR" and "OUTPUT" from *TOS.ini

Change-Id: Ie98d858c832eecd7736cf3b4a020dfc91b10241c
Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
This commit is contained in:
Joseph Chen 2019-04-11 09:37:28 +08:00 committed by Jianhong Chen
parent cd2acdbee7
commit 69cce37bfc
1 changed files with 91 additions and 46 deletions

137
make.sh
View File

@ -78,7 +78,7 @@ help()
echo " ./make.sh [board|subcmd] [O=<dir>]"
echo
echo " - board: board name of defconfig"
echo " - subcmd: loader|loader-all|trust|uboot|elf|map|sym|<addr>|"
echo " - subcmd: loader|loader-all|trust|trust-all|uboot|elf|map|sym|<addr>|"
echo " - O=<dir>: 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
}