127a50c86SAndy Yan#!/bin/sh 2cd7ae718SJoseph Chenset -e 327a50c86SAndy YanBOARD=$1 4b6255198SJoseph ChenSUBCMD=$1 527a50c86SAndy YanJOB=`sed -n "N;/processor/p" /proc/cpuinfo|wc -l` 6b6255198SJoseph ChenSUPPORT_LIST=`ls configs/*[r,p][x,v,k][0-9][0-9]*_defconfig` 727a50c86SAndy Yan 8fb90bd1dSJoseph Chen########################################### User can modify ############################################# 9fb90bd1dSJoseph Chen# User's rkbin tool relative path 10bc98b3c8SJoseph ChenRKBIN_TOOLS=../rkbin/tools 11bc98b3c8SJoseph Chen 12fb90bd1dSJoseph Chen# User's GCC toolchain and relative path 13fb90bd1dSJoseph ChenOBJ_ARM32=arm-linux-gnueabihf-objdump 14fb90bd1dSJoseph ChenOBJ_ARM64=aarch64-linux-gnu-objdump 15d8540eacSJoseph ChenGCC_ARM32=arm-linux-gnueabihf- 16d8540eacSJoseph ChenGCC_ARM64=aarch64-linux-gnu- 17d8540eacSJoseph ChenTOOLCHAIN_ARM32=../prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin 18d8540eacSJoseph ChenTOOLCHAIN_ARM64=../prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin 19fb90bd1dSJoseph Chen 20fb90bd1dSJoseph Chen########################################### User not touch ############################################# 21d443b7d5SJoseph Chen# Declare global INI file searching index name for every chip, update in fixup_platform_configure() 22d443b7d5SJoseph ChenRKCHIP= 23d443b7d5SJoseph Chen 24fb90bd1dSJoseph Chen# Declare global rkbin RKTOOLS and rkbin repository path, updated in prepare() 25fb90bd1dSJoseph ChenRKTOOLS= 26fb90bd1dSJoseph ChenRKBIN= 27fb90bd1dSJoseph Chen 28fb90bd1dSJoseph Chen# Declare global toolchain path for CROSS_COMPILE, updated in select_toolchain() 29fb90bd1dSJoseph ChenTOOLCHAIN_GCC= 30fb90bd1dSJoseph ChenTOOLCHAIN_OBJDUMP= 31fb90bd1dSJoseph Chen 32fb90bd1dSJoseph Chen# Declare global default output dir and cmd, update in prepare() 33b6255198SJoseph ChenOUTDIR=$2 34fb90bd1dSJoseph ChenOUTOPT= 35bc98b3c8SJoseph Chen 3641cf5e5aSJoseph Chen# Declare global plaform configure, updated in fixup_platform_configure() 3741cf5e5aSJoseph ChenPLATFORM_RSA= 3841cf5e5aSJoseph ChenPLATFORM_SHA= 3941cf5e5aSJoseph ChenPLATFORM_UBOOT_IMG_SIZE= 4041cf5e5aSJoseph ChenPLATFORM_TRUST_IMG_SIZE= 4141cf5e5aSJoseph ChenPLATFORM_AARCH32= 42fb90bd1dSJoseph Chen######################################################################################################### 43b6255198SJoseph Chenhelp() 44b6255198SJoseph Chen{ 45b6255198SJoseph Chen echo 46b6255198SJoseph Chen echo "Usage: ./make.sh [board|subcmd] [O=<dir>]" 47b6255198SJoseph Chen echo 48b6255198SJoseph Chen echo "Example:" 49b6255198SJoseph Chen echo 50b6255198SJoseph Chen echo "1. Build:" 51b6255198SJoseph Chen echo " ./make.sh evb-rk3399 ---- build for evb-rk3399_defconfig" 52b6255198SJoseph Chen echo " ./make.sh evb-rk3399 O=rockdev ---- build for evb-rk3399_defconfig with output dir "./rockdev"" 53b6255198SJoseph Chen echo " ./make.sh firefly-rk3288 ---- build for firefly-rk3288_defconfig" 54b6255198SJoseph Chen echo " ./make.sh ---- build with exist .config" 55b6255198SJoseph Chen echo 56b6255198SJoseph Chen echo " After build, images of uboot, loader and trust are all generated." 57b6255198SJoseph Chen echo 58b6255198SJoseph Chen echo "2. Subcmd helper:" 59b6255198SJoseph Chen echo " ./make.sh trust --- pack trust.img without rebuild project" 60b6255198SJoseph Chen echo " ./make.sh loader --- pack loader bin without rebuild project" 61b6255198SJoseph Chen echo " ./make.sh uboot --- pack uboot.img without rebuild project" 62b6255198SJoseph Chen echo 63b6255198SJoseph Chen echo "3. Debug helper:" 64b6255198SJoseph Chen echo " ./make.sh elf --- dump elf file with -D(default)" 65b6255198SJoseph Chen echo " ./make.sh elf-S --- dump elf file with -S" 66b6255198SJoseph Chen echo " ./make.sh map --- cat u-boot.map" 67b6255198SJoseph Chen echo " ./make.sh sym --- cat u-boot.sym" 68b6255198SJoseph Chen} 6941cf5e5aSJoseph Chen 70cd7ae718SJoseph Chenprepare() 71cd7ae718SJoseph Chen{ 72b6255198SJoseph Chen local absolute_path cmd dir count 7330b04afcSJoseph Chen 74b6255198SJoseph Chen # Parse output directory 75b6255198SJoseph Chen cmd=${OUTDIR%=*} 7630b04afcSJoseph Chen if [ "${cmd}" = 'O' ]; then 77b6255198SJoseph Chen OUTDIR=${OUTDIR#*=} 7830b04afcSJoseph Chen OUTOPT=O=${OUTDIR} 7930b04afcSJoseph Chen else 80b6255198SJoseph Chen case $BOARD in 81b6255198SJoseph Chen ''|elf*|trust|loader|uboot|map|sym) 82b6255198SJoseph Chen count=`find -name .config | wc -l` 83b6255198SJoseph Chen dir=`find -name .config` 84b6255198SJoseph Chen if [ $count -eq 1 ]; then 85b6255198SJoseph Chen dir=${dir%/*} 86b6255198SJoseph Chen OUTDIR=${dir#*/} 87b6255198SJoseph Chen if [ $OUTDIR != '.' ]; then 88b6255198SJoseph Chen OUTOPT=O=${OUTDIR} 89b6255198SJoseph Chen fi 90b6255198SJoseph Chen elif [ $count -eq 0 ]; then 91b6255198SJoseph Chen echo 92b6255198SJoseph Chen echo "Build failed, Can't find .config" 93b6255198SJoseph Chen help 94b6255198SJoseph Chen exit 1 95b6255198SJoseph Chen else 96b6255198SJoseph Chen echo 97b6255198SJoseph Chen echo "Build failed, find $count '.config': " 98b6255198SJoseph Chen echo "$dir" 99b6255198SJoseph Chen echo "Please leave only one of them" 100b6255198SJoseph Chen exit 1 101b6255198SJoseph Chen fi 102b6255198SJoseph Chen ;; 103b6255198SJoseph Chen 104b6255198SJoseph Chen *) 10530b04afcSJoseph Chen OUTDIR=. 106b6255198SJoseph Chen ;; 107b6255198SJoseph Chen esac 10830b04afcSJoseph Chen fi 109cd7ae718SJoseph Chen 110b6255198SJoseph Chen # Parse help and make defconfig 111b6255198SJoseph Chen case $BOARD in 112b6255198SJoseph Chen #help 113b6255198SJoseph Chen --help|-help|help|--h|-h) 114b6255198SJoseph Chen help 115b6255198SJoseph Chen exit 0 116b6255198SJoseph Chen ;; 117b6255198SJoseph Chen #subcmd 118b6255198SJoseph Chen ''|elf*|trust|loader|uboot|map|sym) 119b6255198SJoseph Chen ;; 120b6255198SJoseph Chen 121b6255198SJoseph Chen *) 122b6255198SJoseph Chen if [ ! -f configs/${BOARD}_defconfig ]; then 12330b04afcSJoseph Chen echo 124cd7ae718SJoseph Chen echo "Can't find: configs/${BOARD}_defconfig" 1257c19369dSJoseph Chen echo 12630b04afcSJoseph Chen echo "******** Rockchip Support List *************" 12730b04afcSJoseph Chen echo "${SUPPORT_LIST}" 1287c19369dSJoseph Chen echo "********************************************" 1297c19369dSJoseph Chen echo 130cd7ae718SJoseph Chen exit 1 131b6255198SJoseph Chen else 132b6255198SJoseph Chen echo "make for ${BOARD}_defconfig by -j${JOB}" 133b6255198SJoseph Chen make ${BOARD}_defconfig ${OUTOPT} 134cd7ae718SJoseph Chen fi 135b6255198SJoseph Chen ;; 136b6255198SJoseph Chen esac 137cd7ae718SJoseph Chen 138fb90bd1dSJoseph Chen # Initialize RKBIN and RKTOOLS 139bc98b3c8SJoseph Chen if [ -d ${RKBIN_TOOLS} ]; then 140bc98b3c8SJoseph Chen absolute_path=$(cd `dirname ${RKBIN_TOOLS}`; pwd) 141bc98b3c8SJoseph Chen RKBIN=${absolute_path} 142fb90bd1dSJoseph Chen RKTOOLS=${absolute_path}/tools 143cd7ae718SJoseph Chen else 144cd7ae718SJoseph Chen echo 145fb90bd1dSJoseph Chen echo "Can't find '../rkbin/' repository, please download it before pack image!" 146cd7ae718SJoseph Chen echo "How to obtain? 3 ways:" 147fb90bd1dSJoseph Chen echo " 1. Login your Rockchip gerrit account: \"Projects\" -> \"List\" -> search \"rk/rkbin\" repository" 148fb90bd1dSJoseph Chen echo " 2. Github repository: https://github.com/rockchip-linux/rkbin" 149fb90bd1dSJoseph Chen echo " 3. Download full release SDK repository" 150cd7ae718SJoseph Chen exit 1 151cd7ae718SJoseph Chen fi 15230b04afcSJoseph Chen} 1537c2526e9SJoseph Chen 15427a50c86SAndy Yanselect_toolchain() 15527a50c86SAndy Yan{ 156bc98b3c8SJoseph Chen local absolute_path 157bc98b3c8SJoseph Chen 158366bd23fSJoseph Chen if grep -q '^CONFIG_ARM64=y' ${OUTDIR}/.config ; then 159bc98b3c8SJoseph Chen if [ -d ${TOOLCHAIN_ARM64} ]; then 160bc98b3c8SJoseph Chen absolute_path=$(cd `dirname ${TOOLCHAIN_ARM64}`; pwd) 161bc98b3c8SJoseph Chen TOOLCHAIN_GCC=${absolute_path}/bin/${GCC_ARM64} 1620ff0e214SJoseph Chen TOOLCHAIN_OBJDUMP=${absolute_path}/bin/${OBJ_ARM64} 163bc98b3c8SJoseph Chen else 164366bd23fSJoseph Chen echo "Can't find toolchain: ${TOOLCHAIN_ARM64}" 165bc98b3c8SJoseph Chen exit 1 16627a50c86SAndy Yan fi 16727a50c86SAndy Yan else 168bc98b3c8SJoseph Chen if [ -d ${TOOLCHAIN_ARM32} ]; then 169bc98b3c8SJoseph Chen absolute_path=$(cd `dirname ${TOOLCHAIN_ARM32}`; pwd) 170bc98b3c8SJoseph Chen TOOLCHAIN_GCC=${absolute_path}/bin/${GCC_ARM32} 1710ff0e214SJoseph Chen TOOLCHAIN_OBJDUMP=${absolute_path}/bin/${OBJ_ARM32} 172bc98b3c8SJoseph Chen else 173366bd23fSJoseph Chen echo "Can't find toolchain: ${TOOLCHAIN_ARM32}" 174bc98b3c8SJoseph Chen exit 1 17527a50c86SAndy Yan fi 17627a50c86SAndy Yan fi 177bc98b3c8SJoseph Chen 178bc98b3c8SJoseph Chen echo "toolchain: ${TOOLCHAIN_GCC}" 179bc98b3c8SJoseph Chen} 180bc98b3c8SJoseph Chen 1810ff0e214SJoseph Chensub_commands() 1820ff0e214SJoseph Chen{ 183b6255198SJoseph Chen local cmd=${SUBCMD%-*} elfopt=${SUBCMD#*-} 1840ff0e214SJoseph Chen 185b6255198SJoseph Chen case $cmd in 186b6255198SJoseph Chen elf) 187366bd23fSJoseph Chen if [ ! -f ${OUTDIR}/u-boot ]; then 188366bd23fSJoseph Chen echo "Can't find elf file: ${OUTDIR}/u-boot" 1890ff0e214SJoseph Chen exit 1 1900ff0e214SJoseph Chen else 191b6255198SJoseph Chen # default 'cmd' without option, use '-D' 192b6255198SJoseph Chen if [ "${cmd}" = 'elf' -a "${elfopt}" = 'elf' ]; then 193b6255198SJoseph Chen elfopt=D 1940ff0e214SJoseph Chen fi 195b6255198SJoseph Chen ${TOOLCHAIN_OBJDUMP} -${elfopt} ${OUTDIR}/u-boot | less 19607de173aSJoseph Chen exit 0 19707de173aSJoseph Chen fi 198b6255198SJoseph Chen ;; 199b6255198SJoseph Chen 200b6255198SJoseph Chen map) 201b6255198SJoseph Chen cat ${OUTDIR}/u-boot.map | less 202b6255198SJoseph Chen exit 0 203b6255198SJoseph Chen ;; 204b6255198SJoseph Chen 205b6255198SJoseph Chen sym) 206b6255198SJoseph Chen cat ${OUTDIR}/u-boot.sym | less 207b6255198SJoseph Chen exit 0 208b6255198SJoseph Chen ;; 209b6255198SJoseph Chen 210b6255198SJoseph Chen trust) 211a43a18b2SJoseph Chen pack_trust_image 212a43a18b2SJoseph Chen exit 0 213b6255198SJoseph Chen ;; 214b6255198SJoseph Chen 215b6255198SJoseph Chen loader) 216a43a18b2SJoseph Chen pack_loader_image 217a43a18b2SJoseph Chen exit 0 218b6255198SJoseph Chen ;; 219b6255198SJoseph Chen 220b6255198SJoseph Chen uboot) 221fb90bd1dSJoseph Chen pack_uboot_image 222fb90bd1dSJoseph Chen exit 0 223b6255198SJoseph Chen ;; 224b6255198SJoseph Chen 225b6255198SJoseph Chen *) 226b6255198SJoseph Chen ;; 227b6255198SJoseph Chen esac 2280ff0e214SJoseph Chen} 2290ff0e214SJoseph Chen 230fb90bd1dSJoseph Chen# Support platform special configure 231fb90bd1dSJoseph Chen# 1. fixup chip name; 232fb90bd1dSJoseph Chen# 2. fixup pack mode; 233fb90bd1dSJoseph Chen# 3. fixup image size 234fb90bd1dSJoseph Chen# 4. fixup ARM64 cpu boot with AArch32 23541cf5e5aSJoseph Chenfixup_platform_configure() 236bc98b3c8SJoseph Chen{ 237d443b7d5SJoseph Chen local count plat 238d443b7d5SJoseph Chen 239d443b7d5SJoseph Chen# <1> Get RKCHIP for searching trust/loader ini files 240d443b7d5SJoseph Chen count=`grep -c '^CONFIG_ROCKCHIP_[R,P][X,V,K][0-9][0-9]' ${OUTDIR}/.config` 241d443b7d5SJoseph Chen RKCHIP=`grep '^CONFIG_ROCKCHIP_[R,P][X,V,K][0-9][0-9]' ${OUTDIR}/.config` 242d443b7d5SJoseph Chen 243d443b7d5SJoseph Chen if [ $count -eq 1 ]; then 244d443b7d5SJoseph Chen RKCHIP=${RKCHIP%=*} 245d443b7d5SJoseph Chen RKCHIP=${RKCHIP##*_} 246d443b7d5SJoseph Chen elif [ $count -gt 1 ]; then 247d443b7d5SJoseph Chen # Is RK3126 ? 248d443b7d5SJoseph Chen plat=`grep '^CONFIG_ROCKCHIP_[R,P][X,V,K][0-9][0-9]' ${OUTDIR}/.config | sed -n "/CONFIG_ROCKCHIP_RK3126=y/p"` 249d443b7d5SJoseph Chen if [ "$plat" = 'CONFIG_ROCKCHIP_RK3126=y' ]; then 250d443b7d5SJoseph Chen RKCHIP=RK3126 251d443b7d5SJoseph Chen fi 252d443b7d5SJoseph Chen # Is RK3326 ? 253d443b7d5SJoseph Chen plat=`grep '^CONFIG_ROCKCHIP_[R,P][X,V,K][0-9][0-9]' ${OUTDIR}/.config | sed -n "/CONFIG_ROCKCHIP_RK3326=y/p"` 254d443b7d5SJoseph Chen if [ "$plat" = 'CONFIG_ROCKCHIP_RK3326=y' ]; then 255d443b7d5SJoseph Chen RKCHIP=RK3326 256d443b7d5SJoseph Chen fi 257d443b7d5SJoseph Chen else 258d443b7d5SJoseph Chen echo "Can't get Rockchip SoC definition in .config" 259d443b7d5SJoseph Chen exit 1 260bc98b3c8SJoseph Chen fi 26141cf5e5aSJoseph Chen 26241cf5e5aSJoseph Chen# <2> Fixup rsa/sha pack mode for platforms 26341cf5e5aSJoseph Chen # RK3308/PX30/RK3326 use RSA-PKCS1 V2.1, it's pack magic is "3" 26441cf5e5aSJoseph Chen if [ $RKCHIP = "PX30" -o $RKCHIP = "RK3326" -o $RKCHIP = "RK3308" ]; then 26541cf5e5aSJoseph Chen PLATFORM_RSA="--rsa 3" 26641cf5e5aSJoseph Chen # RK3368 use rk big endian SHA256, it's pack magic is "2" 26741cf5e5aSJoseph Chen elif [ $RKCHIP = "RK3368" ]; then 26841cf5e5aSJoseph Chen PLATFORM_SHA="--sha 2" 26941cf5e5aSJoseph Chen # other platforms use default configure 27041cf5e5aSJoseph Chen fi 27141cf5e5aSJoseph Chen 27241cf5e5aSJoseph Chen# <3> Fixup images size pack for platforms 27341cf5e5aSJoseph Chen if [ $RKCHIP = "RK3308" ]; then 27441cf5e5aSJoseph Chen if grep -q '^CONFIG_ARM64_BOOT_AARCH32=y' ${OUTDIR}/.config ; then 27541cf5e5aSJoseph Chen PLATFORM_UBOOT_IMG_SIZE="--size 512 2" 27641cf5e5aSJoseph Chen PLATFORM_TRUST_IMG_SIZE="--size 512 2" 27741cf5e5aSJoseph Chen else 27841cf5e5aSJoseph Chen PLATFORM_UBOOT_IMG_SIZE="--size 1024 2" 27941cf5e5aSJoseph Chen PLATFORM_TRUST_IMG_SIZE="--size 1024 2" 28041cf5e5aSJoseph Chen fi 28141cf5e5aSJoseph Chen fi 28241cf5e5aSJoseph Chen 28341cf5e5aSJoseph Chen# <4> Fixup PLATFORM_AARCH32 for ARM64 cpu platforms 28441cf5e5aSJoseph Chen if [ $RKCHIP = "RK3308" ]; then 28541cf5e5aSJoseph Chen if grep -q '^CONFIG_ARM64_BOOT_AARCH32=y' ${OUTDIR}/.config ; then 28641cf5e5aSJoseph Chen PLATFORM_AARCH32="AARCH32" 28741cf5e5aSJoseph Chen fi 28841cf5e5aSJoseph Chen fi 28927a50c86SAndy Yan} 290de9a6cd2SJoseph Chen 291cd7ae718SJoseph Chenpack_uboot_image() 292de9a6cd2SJoseph Chen{ 293cd7ae718SJoseph Chen local UBOOT_LOAD_ADDR 294de9a6cd2SJoseph Chen 295366bd23fSJoseph Chen UBOOT_LOAD_ADDR=`sed -n "/CONFIG_SYS_TEXT_BASE=/s/CONFIG_SYS_TEXT_BASE=//p" ${OUTDIR}/include/autoconf.mk|tr -d '\r'` 296fb90bd1dSJoseph Chen ${RKTOOLS}/loaderimage --pack --uboot ${OUTDIR}/u-boot.bin uboot.img ${UBOOT_LOAD_ADDR} ${PLATFORM_UBOOT_IMG_SIZE} 2977c19369dSJoseph Chen 298fb90bd1dSJoseph Chen # Delete u-boot.img and u-boot-dtb.img, which makes users not be confused with final uboot.img 2997c19369dSJoseph Chen if [ -f ${OUTDIR}/u-boot.img ]; then 3007c19369dSJoseph Chen rm ${OUTDIR}/u-boot.img 3017c19369dSJoseph Chen fi 3027c19369dSJoseph Chen 3037c19369dSJoseph Chen if [ -f ${OUTDIR}/u-boot-dtb.img ]; then 3047c19369dSJoseph Chen rm ${OUTDIR}/u-boot-dtb.img 3057c19369dSJoseph Chen fi 3067c19369dSJoseph Chen 307366bd23fSJoseph Chen echo "pack uboot okay! Input: ${OUTDIR}/u-boot.bin" 308de9a6cd2SJoseph Chen} 309de9a6cd2SJoseph Chen 310cd7ae718SJoseph Chenpack_loader_image() 311cd7ae718SJoseph Chen{ 312*d9d90a73SJoseph Chen local files ini 313*d9d90a73SJoseph Chen 31480fb8d2cSShunqian Zheng if [ ! -f ${RKBIN}/RKBOOT/${RKCHIP}MINIALL.ini ]; then 31580fb8d2cSShunqian Zheng echo "pack loader failed! Can't find: ${RKBIN}/RKBOOT/${RKCHIP}MINIALL.ini" 31651441a28SJoseph Chen return 31751441a28SJoseph Chen fi 31851441a28SJoseph Chen 319cd7ae718SJoseph Chen cd ${RKBIN} 320*d9d90a73SJoseph Chen files=`ls ${RKBIN}/RKBOOT/${RKCHIP}MINIALL*.ini` 321*d9d90a73SJoseph Chen for ini in $files 322*d9d90a73SJoseph Chen do 323*d9d90a73SJoseph Chen if [ -f "$ini" ]; then 324*d9d90a73SJoseph Chen ${RKTOOLS}/boot_merger --replace tools/rk_tools/ ./ $ini 325*d9d90a73SJoseph Chen echo "pack loader okay! Input: $ini" 326*d9d90a73SJoseph Chen fi 327*d9d90a73SJoseph Chen done 328*d9d90a73SJoseph Chen 329fb90bd1dSJoseph Chen cd - && mv ${RKBIN}/*_loader_*.bin ./ 330cd7ae718SJoseph Chen} 331cd7ae718SJoseph Chen 332cd7ae718SJoseph Chenpack_trust_image() 333cd7ae718SJoseph Chen{ 33441cf5e5aSJoseph Chen local TOS TOS_TA DARM_BASE TEE_LOAD_ADDR TEE_OFFSET=0x8400000 335cd7ae718SJoseph Chen 336cd7ae718SJoseph Chen # ARM64 uses trust_merger 337fa400ae5SJoseph Chen if grep -Eq ''^CONFIG_ARM64=y'|'^CONFIG_ARM64_BOOT_AARCH32=y'' ${OUTDIR}/.config ; then 33841cf5e5aSJoseph Chen if [ ! -f ${RKBIN}/RKTRUST/${RKCHIP}${PLATFORM_AARCH32}TRUST.ini ]; then 33941cf5e5aSJoseph Chen echo "pack trust failed! Can't find: ${RKBIN}/RKTRUST/${RKCHIP}${PLATFORM_AARCH32}TRUST.ini" 34051441a28SJoseph Chen return 34151441a28SJoseph Chen fi 34251441a28SJoseph Chen 343cd7ae718SJoseph Chen cd ${RKBIN} 344fb90bd1dSJoseph Chen ${RKTOOLS}/trust_merger ${PLATFORM_SHA} ${PLATFORM_RSA} ${PLATFORM_TRUST_IMG_SIZE} --replace tools/rk_tools/ ./ ${RKBIN}/RKTRUST/${RKCHIP}${PLATFORM_AARCH32}TRUST.ini 345e5e978b3SJoseph Chen 346fb90bd1dSJoseph Chen cd - && mv ${RKBIN}/trust.img ./trust.img 34741cf5e5aSJoseph Chen echo "pack trust okay! Input: ${RKBIN}/RKTRUST/${RKCHIP}${PLATFORM_AARCH32}TRUST.ini" 348cd7ae718SJoseph Chen # ARM uses loaderimage 349cd7ae718SJoseph Chen else 35080fb8d2cSShunqian Zheng if [ ! -f ${RKBIN}/RKTRUST/${RKCHIP}TOS.ini ]; then 35180fb8d2cSShunqian Zheng echo "pack trust failed! Can't find: ${RKBIN}/RKTRUST/${RKCHIP}TOS.ini" 35251441a28SJoseph Chen return 35351441a28SJoseph Chen fi 35451441a28SJoseph Chen 355cd7ae718SJoseph Chen # OP-TEE is 132M(0x8400000) offset from DRAM base. 356366bd23fSJoseph Chen DARM_BASE=`sed -n "/CONFIG_SYS_SDRAM_BASE=/s/CONFIG_SYS_SDRAM_BASE=//p" ${OUTDIR}/include/autoconf.mk|tr -d '\r'` 357cd7ae718SJoseph Chen TEE_LOAD_ADDR=$((DARM_BASE+TEE_OFFSET)) 358cd7ae718SJoseph Chen 359cd7ae718SJoseph Chen # Convert Dec to Hex 360cd7ae718SJoseph Chen TEE_LOAD_ADDR=$(echo "obase=16;${TEE_LOAD_ADDR}"|bc) 361cd7ae718SJoseph Chen 3620e90839aSJoseph Chen # Parse orignal path 36380fb8d2cSShunqian Zheng TOS=`sed -n "/TOS=/s/TOS=//p" ${RKBIN}/RKTRUST/${RKCHIP}TOS.ini|tr -d '\r'` 36480fb8d2cSShunqian Zheng TOS_TA=`sed -n "/TOSTA=/s/TOSTA=//p" ${RKBIN}/RKTRUST/${RKCHIP}TOS.ini|tr -d '\r'` 365cd7ae718SJoseph Chen 3660e90839aSJoseph Chen # replace "./tools/rk_tools/" with "./" to compatible legacy ini content of rkdevelop branch 3670e90839aSJoseph Chen TOS=$(echo ${TOS} | sed "s/tools\/rk_tools\//\.\//g") 3680e90839aSJoseph Chen TOS_TA=$(echo ${TOS_TA} | sed "s/tools\/rk_tools\//\.\//g") 3690e90839aSJoseph Chen 370a64486b5SJoseph Chen if [ $TOS_TA -a $TOS ]; then 371fb90bd1dSJoseph Chen ${RKTOOLS}/loaderimage --pack --trustos ${RKBIN}/${TOS} ./trust.img ${TEE_LOAD_ADDR} ${PLATFORM_TRUST_IMG_SIZE} 372fb90bd1dSJoseph Chen ${RKTOOLS}/loaderimage --pack --trustos ${RKBIN}/${TOS_TA} ./trust_with_ta.img ${TEE_LOAD_ADDR} ${PLATFORM_TRUST_IMG_SIZE} 373cd7ae718SJoseph Chen echo "Both trust.img and trust_with_ta.img are ready" 374cd7ae718SJoseph Chen elif [ $TOS ]; then 375fb90bd1dSJoseph Chen ${RKTOOLS}/loaderimage --pack --trustos ${RKBIN}/${TOS} ./trust.img ${TEE_LOAD_ADDR} ${PLATFORM_TRUST_IMG_SIZE} 376cd7ae718SJoseph Chen echo "trust.img is ready" 377cd7ae718SJoseph Chen elif [ $TOS_TA ]; then 378fb90bd1dSJoseph Chen ${RKTOOLS}/loaderimage --pack --trustos ${RKBIN}/${TOS_TA} ./trust.img ${TEE_LOAD_ADDR} ${PLATFORM_TRUST_IMG_SIZE} 379cd7ae718SJoseph Chen echo "trust.img with ta is ready" 380cd7ae718SJoseph Chen else 381a64486b5SJoseph Chen echo "Can't find any tee bin" 382a64486b5SJoseph Chen exit 1 383cd7ae718SJoseph Chen fi 38451441a28SJoseph Chen 38580fb8d2cSShunqian Zheng echo "pack trust okay! Input: ${RKBIN}/RKTRUST/${RKCHIP}TOS.ini" 386cd7ae718SJoseph Chen fi 387cd7ae718SJoseph Chen} 388cd7ae718SJoseph Chen 38930b04afcSJoseph Chenfinish() 39030b04afcSJoseph Chen{ 39130b04afcSJoseph Chen echo 39230b04afcSJoseph Chen if [ "$BOARD" = '' ]; then 393d443b7d5SJoseph Chen echo "Platform ${RKCHIP}${PLATFORM_AARCH32} is build OK, with exist .config" 39430b04afcSJoseph Chen else 395d443b7d5SJoseph Chen echo "Platform ${RKCHIP}${PLATFORM_AARCH32} is build OK, with new .config(make ${BOARD}_defconfig)" 39630b04afcSJoseph Chen fi 39730b04afcSJoseph Chen} 39830b04afcSJoseph Chen 399cd7ae718SJoseph Chenprepare 4007c2526e9SJoseph Chenselect_toolchain 40141cf5e5aSJoseph Chenfixup_platform_configure 4020ff0e214SJoseph Chensub_commands 403366bd23fSJoseph Chenmake CROSS_COMPILE=${TOOLCHAIN_GCC} all --jobs=${JOB} ${OUTOPT} 404cd7ae718SJoseph Chenpack_uboot_image 405d93242f2SJoseph Chenpack_loader_image 406cd7ae718SJoseph Chenpack_trust_image 40730b04afcSJoseph Chenfinish 408