127a50c86SAndy Yan#!/bin/sh 2cd7ae718SJoseph Chenset -e 327a50c86SAndy YanBOARD=$1 4*b6255198SJoseph ChenSUBCMD=$1 527a50c86SAndy YanJOB=`sed -n "N;/processor/p" /proc/cpuinfo|wc -l` 6*b6255198SJoseph 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() 33*b6255198SJoseph 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######################################################################################################### 43*b6255198SJoseph Chenhelp() 44*b6255198SJoseph Chen{ 45*b6255198SJoseph Chen echo 46*b6255198SJoseph Chen echo "Usage: ./make.sh [board|subcmd] [O=<dir>]" 47*b6255198SJoseph Chen echo 48*b6255198SJoseph Chen echo "Example:" 49*b6255198SJoseph Chen echo 50*b6255198SJoseph Chen echo "1. Build:" 51*b6255198SJoseph Chen echo " ./make.sh evb-rk3399 ---- build for evb-rk3399_defconfig" 52*b6255198SJoseph Chen echo " ./make.sh evb-rk3399 O=rockdev ---- build for evb-rk3399_defconfig with output dir "./rockdev"" 53*b6255198SJoseph Chen echo " ./make.sh firefly-rk3288 ---- build for firefly-rk3288_defconfig" 54*b6255198SJoseph Chen echo " ./make.sh ---- build with exist .config" 55*b6255198SJoseph Chen echo 56*b6255198SJoseph Chen echo " After build, images of uboot, loader and trust are all generated." 57*b6255198SJoseph Chen echo 58*b6255198SJoseph Chen echo "2. Subcmd helper:" 59*b6255198SJoseph Chen echo " ./make.sh trust --- pack trust.img without rebuild project" 60*b6255198SJoseph Chen echo " ./make.sh loader --- pack loader bin without rebuild project" 61*b6255198SJoseph Chen echo " ./make.sh uboot --- pack uboot.img without rebuild project" 62*b6255198SJoseph Chen echo 63*b6255198SJoseph Chen echo "3. Debug helper:" 64*b6255198SJoseph Chen echo " ./make.sh elf --- dump elf file with -D(default)" 65*b6255198SJoseph Chen echo " ./make.sh elf-S --- dump elf file with -S" 66*b6255198SJoseph Chen echo " ./make.sh map --- cat u-boot.map" 67*b6255198SJoseph Chen echo " ./make.sh sym --- cat u-boot.sym" 68*b6255198SJoseph Chen} 6941cf5e5aSJoseph Chen 70cd7ae718SJoseph Chenprepare() 71cd7ae718SJoseph Chen{ 72*b6255198SJoseph Chen local absolute_path cmd dir count 7330b04afcSJoseph Chen 74*b6255198SJoseph Chen # Parse output directory 75*b6255198SJoseph Chen cmd=${OUTDIR%=*} 7630b04afcSJoseph Chen if [ "${cmd}" = 'O' ]; then 77*b6255198SJoseph Chen OUTDIR=${OUTDIR#*=} 7830b04afcSJoseph Chen OUTOPT=O=${OUTDIR} 7930b04afcSJoseph Chen else 80*b6255198SJoseph Chen case $BOARD in 81*b6255198SJoseph Chen ''|elf*|trust|loader|uboot|map|sym) 82*b6255198SJoseph Chen count=`find -name .config | wc -l` 83*b6255198SJoseph Chen dir=`find -name .config` 84*b6255198SJoseph Chen if [ $count -eq 1 ]; then 85*b6255198SJoseph Chen dir=${dir%/*} 86*b6255198SJoseph Chen OUTDIR=${dir#*/} 87*b6255198SJoseph Chen if [ $OUTDIR != '.' ]; then 88*b6255198SJoseph Chen OUTOPT=O=${OUTDIR} 89*b6255198SJoseph Chen fi 90*b6255198SJoseph Chen elif [ $count -eq 0 ]; then 91*b6255198SJoseph Chen echo 92*b6255198SJoseph Chen echo "Build failed, Can't find .config" 93*b6255198SJoseph Chen help 94*b6255198SJoseph Chen exit 1 95*b6255198SJoseph Chen else 96*b6255198SJoseph Chen echo 97*b6255198SJoseph Chen echo "Build failed, find $count '.config': " 98*b6255198SJoseph Chen echo "$dir" 99*b6255198SJoseph Chen echo "Please leave only one of them" 100*b6255198SJoseph Chen exit 1 101*b6255198SJoseph Chen fi 102*b6255198SJoseph Chen ;; 103*b6255198SJoseph Chen 104*b6255198SJoseph Chen *) 10530b04afcSJoseph Chen OUTDIR=. 106*b6255198SJoseph Chen ;; 107*b6255198SJoseph Chen esac 10830b04afcSJoseph Chen fi 109cd7ae718SJoseph Chen 110*b6255198SJoseph Chen # Parse help and make defconfig 111*b6255198SJoseph Chen case $BOARD in 112*b6255198SJoseph Chen #help 113*b6255198SJoseph Chen --help|-help|help|--h|-h) 114*b6255198SJoseph Chen help 115*b6255198SJoseph Chen exit 0 116*b6255198SJoseph Chen ;; 117*b6255198SJoseph Chen #subcmd 118*b6255198SJoseph Chen ''|elf*|trust|loader|uboot|map|sym) 119*b6255198SJoseph Chen ;; 120*b6255198SJoseph Chen 121*b6255198SJoseph Chen *) 122*b6255198SJoseph 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 131*b6255198SJoseph Chen else 132*b6255198SJoseph Chen echo "make for ${BOARD}_defconfig by -j${JOB}" 133*b6255198SJoseph Chen make ${BOARD}_defconfig ${OUTOPT} 134cd7ae718SJoseph Chen fi 135*b6255198SJoseph Chen ;; 136*b6255198SJoseph 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{ 183*b6255198SJoseph Chen local cmd=${SUBCMD%-*} elfopt=${SUBCMD#*-} 1840ff0e214SJoseph Chen 185*b6255198SJoseph Chen case $cmd in 186*b6255198SJoseph 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 191*b6255198SJoseph Chen # default 'cmd' without option, use '-D' 192*b6255198SJoseph Chen if [ "${cmd}" = 'elf' -a "${elfopt}" = 'elf' ]; then 193*b6255198SJoseph Chen elfopt=D 1940ff0e214SJoseph Chen fi 195*b6255198SJoseph Chen ${TOOLCHAIN_OBJDUMP} -${elfopt} ${OUTDIR}/u-boot | less 19607de173aSJoseph Chen exit 0 19707de173aSJoseph Chen fi 198*b6255198SJoseph Chen ;; 199*b6255198SJoseph Chen 200*b6255198SJoseph Chen map) 201*b6255198SJoseph Chen cat ${OUTDIR}/u-boot.map | less 202*b6255198SJoseph Chen exit 0 203*b6255198SJoseph Chen ;; 204*b6255198SJoseph Chen 205*b6255198SJoseph Chen sym) 206*b6255198SJoseph Chen cat ${OUTDIR}/u-boot.sym | less 207*b6255198SJoseph Chen exit 0 208*b6255198SJoseph Chen ;; 209*b6255198SJoseph Chen 210*b6255198SJoseph Chen trust) 211a43a18b2SJoseph Chen pack_trust_image 212a43a18b2SJoseph Chen exit 0 213*b6255198SJoseph Chen ;; 214*b6255198SJoseph Chen 215*b6255198SJoseph Chen loader) 216a43a18b2SJoseph Chen pack_loader_image 217a43a18b2SJoseph Chen exit 0 218*b6255198SJoseph Chen ;; 219*b6255198SJoseph Chen 220*b6255198SJoseph Chen uboot) 221fb90bd1dSJoseph Chen pack_uboot_image 222fb90bd1dSJoseph Chen exit 0 223*b6255198SJoseph Chen ;; 224*b6255198SJoseph Chen 225*b6255198SJoseph Chen *) 226*b6255198SJoseph Chen ;; 227*b6255198SJoseph 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{ 31280fb8d2cSShunqian Zheng if [ ! -f ${RKBIN}/RKBOOT/${RKCHIP}MINIALL.ini ]; then 31380fb8d2cSShunqian Zheng echo "pack loader failed! Can't find: ${RKBIN}/RKBOOT/${RKCHIP}MINIALL.ini" 31451441a28SJoseph Chen return 31551441a28SJoseph Chen fi 31651441a28SJoseph Chen 317cd7ae718SJoseph Chen cd ${RKBIN} 318fb90bd1dSJoseph Chen ${RKTOOLS}/boot_merger --replace tools/rk_tools/ ./ ${RKBIN}/RKBOOT/${RKCHIP}MINIALL.ini 319fb90bd1dSJoseph Chen cd - && mv ${RKBIN}/*_loader_*.bin ./ 32080fb8d2cSShunqian Zheng echo "pack loader okay! Input: ${RKBIN}/RKBOOT/${RKCHIP}MINIALL.ini" 321cd7ae718SJoseph Chen} 322cd7ae718SJoseph Chen 323cd7ae718SJoseph Chenpack_trust_image() 324cd7ae718SJoseph Chen{ 32541cf5e5aSJoseph Chen local TOS TOS_TA DARM_BASE TEE_LOAD_ADDR TEE_OFFSET=0x8400000 326cd7ae718SJoseph Chen 327cd7ae718SJoseph Chen # ARM64 uses trust_merger 328fa400ae5SJoseph Chen if grep -Eq ''^CONFIG_ARM64=y'|'^CONFIG_ARM64_BOOT_AARCH32=y'' ${OUTDIR}/.config ; then 32941cf5e5aSJoseph Chen if [ ! -f ${RKBIN}/RKTRUST/${RKCHIP}${PLATFORM_AARCH32}TRUST.ini ]; then 33041cf5e5aSJoseph Chen echo "pack trust failed! Can't find: ${RKBIN}/RKTRUST/${RKCHIP}${PLATFORM_AARCH32}TRUST.ini" 33151441a28SJoseph Chen return 33251441a28SJoseph Chen fi 33351441a28SJoseph Chen 334cd7ae718SJoseph Chen cd ${RKBIN} 335fb90bd1dSJoseph Chen ${RKTOOLS}/trust_merger ${PLATFORM_SHA} ${PLATFORM_RSA} ${PLATFORM_TRUST_IMG_SIZE} --replace tools/rk_tools/ ./ ${RKBIN}/RKTRUST/${RKCHIP}${PLATFORM_AARCH32}TRUST.ini 336e5e978b3SJoseph Chen 337fb90bd1dSJoseph Chen cd - && mv ${RKBIN}/trust.img ./trust.img 33841cf5e5aSJoseph Chen echo "pack trust okay! Input: ${RKBIN}/RKTRUST/${RKCHIP}${PLATFORM_AARCH32}TRUST.ini" 339cd7ae718SJoseph Chen # ARM uses loaderimage 340cd7ae718SJoseph Chen else 34180fb8d2cSShunqian Zheng if [ ! -f ${RKBIN}/RKTRUST/${RKCHIP}TOS.ini ]; then 34280fb8d2cSShunqian Zheng echo "pack trust failed! Can't find: ${RKBIN}/RKTRUST/${RKCHIP}TOS.ini" 34351441a28SJoseph Chen return 34451441a28SJoseph Chen fi 34551441a28SJoseph Chen 346cd7ae718SJoseph Chen # OP-TEE is 132M(0x8400000) offset from DRAM base. 347366bd23fSJoseph Chen DARM_BASE=`sed -n "/CONFIG_SYS_SDRAM_BASE=/s/CONFIG_SYS_SDRAM_BASE=//p" ${OUTDIR}/include/autoconf.mk|tr -d '\r'` 348cd7ae718SJoseph Chen TEE_LOAD_ADDR=$((DARM_BASE+TEE_OFFSET)) 349cd7ae718SJoseph Chen 350cd7ae718SJoseph Chen # Convert Dec to Hex 351cd7ae718SJoseph Chen TEE_LOAD_ADDR=$(echo "obase=16;${TEE_LOAD_ADDR}"|bc) 352cd7ae718SJoseph Chen 3530e90839aSJoseph Chen # Parse orignal path 35480fb8d2cSShunqian Zheng TOS=`sed -n "/TOS=/s/TOS=//p" ${RKBIN}/RKTRUST/${RKCHIP}TOS.ini|tr -d '\r'` 35580fb8d2cSShunqian Zheng TOS_TA=`sed -n "/TOSTA=/s/TOSTA=//p" ${RKBIN}/RKTRUST/${RKCHIP}TOS.ini|tr -d '\r'` 356cd7ae718SJoseph Chen 3570e90839aSJoseph Chen # replace "./tools/rk_tools/" with "./" to compatible legacy ini content of rkdevelop branch 3580e90839aSJoseph Chen TOS=$(echo ${TOS} | sed "s/tools\/rk_tools\//\.\//g") 3590e90839aSJoseph Chen TOS_TA=$(echo ${TOS_TA} | sed "s/tools\/rk_tools\//\.\//g") 3600e90839aSJoseph Chen 361a64486b5SJoseph Chen if [ $TOS_TA -a $TOS ]; then 362fb90bd1dSJoseph Chen ${RKTOOLS}/loaderimage --pack --trustos ${RKBIN}/${TOS} ./trust.img ${TEE_LOAD_ADDR} ${PLATFORM_TRUST_IMG_SIZE} 363fb90bd1dSJoseph Chen ${RKTOOLS}/loaderimage --pack --trustos ${RKBIN}/${TOS_TA} ./trust_with_ta.img ${TEE_LOAD_ADDR} ${PLATFORM_TRUST_IMG_SIZE} 364cd7ae718SJoseph Chen echo "Both trust.img and trust_with_ta.img are ready" 365cd7ae718SJoseph Chen elif [ $TOS ]; then 366fb90bd1dSJoseph Chen ${RKTOOLS}/loaderimage --pack --trustos ${RKBIN}/${TOS} ./trust.img ${TEE_LOAD_ADDR} ${PLATFORM_TRUST_IMG_SIZE} 367cd7ae718SJoseph Chen echo "trust.img is ready" 368cd7ae718SJoseph Chen elif [ $TOS_TA ]; then 369fb90bd1dSJoseph Chen ${RKTOOLS}/loaderimage --pack --trustos ${RKBIN}/${TOS_TA} ./trust.img ${TEE_LOAD_ADDR} ${PLATFORM_TRUST_IMG_SIZE} 370cd7ae718SJoseph Chen echo "trust.img with ta is ready" 371cd7ae718SJoseph Chen else 372a64486b5SJoseph Chen echo "Can't find any tee bin" 373a64486b5SJoseph Chen exit 1 374cd7ae718SJoseph Chen fi 37551441a28SJoseph Chen 37680fb8d2cSShunqian Zheng echo "pack trust okay! Input: ${RKBIN}/RKTRUST/${RKCHIP}TOS.ini" 377cd7ae718SJoseph Chen fi 378cd7ae718SJoseph Chen} 379cd7ae718SJoseph Chen 38030b04afcSJoseph Chenfinish() 38130b04afcSJoseph Chen{ 38230b04afcSJoseph Chen echo 38330b04afcSJoseph Chen if [ "$BOARD" = '' ]; then 384d443b7d5SJoseph Chen echo "Platform ${RKCHIP}${PLATFORM_AARCH32} is build OK, with exist .config" 38530b04afcSJoseph Chen else 386d443b7d5SJoseph Chen echo "Platform ${RKCHIP}${PLATFORM_AARCH32} is build OK, with new .config(make ${BOARD}_defconfig)" 38730b04afcSJoseph Chen fi 38830b04afcSJoseph Chen} 38930b04afcSJoseph Chen 390cd7ae718SJoseph Chenprepare 3917c2526e9SJoseph Chenselect_toolchain 39241cf5e5aSJoseph Chenfixup_platform_configure 3930ff0e214SJoseph Chensub_commands 394366bd23fSJoseph Chenmake CROSS_COMPILE=${TOOLCHAIN_GCC} all --jobs=${JOB} ${OUTOPT} 395cd7ae718SJoseph Chenpack_uboot_image 396d93242f2SJoseph Chenpack_loader_image 397cd7ae718SJoseph Chenpack_trust_image 39830b04afcSJoseph Chenfinish 399