1de440615SJoseph Chen#!/bin/bash 2f7bec228SJoseph Chen# 3f7bec228SJoseph Chen# Copyright (c) 2019 Fuzhou Rockchip Electronics Co., Ltd 4f7bec228SJoseph Chen# 5f7bec228SJoseph Chen# SPDX-License-Identifier: GPL-2.0 6f7bec228SJoseph Chen# 7f7bec228SJoseph Chen 8cd7ae718SJoseph Chenset -e 927a50c86SAndy YanJOB=`sed -n "N;/processor/p" /proc/cpuinfo|wc -l` 10b6255198SJoseph ChenSUPPORT_LIST=`ls configs/*[r,p][x,v,k][0-9][0-9]*_defconfig` 11b42d2103SJoseph ChenCMD_ARGS=$1 1227a50c86SAndy Yan 130583701dSJoseph Chen# @LOADER: map to $RKCHIP_LOADER for loader ini 140583701dSJoseph Chen# @TRUST: map to $RKCHIP_TRUST for trust ini 150583701dSJoseph Chen# @LABEL: map to $RKCHIP_LEBEL for verbose message 160583701dSJoseph Chen# @-: default state/value 170583701dSJoseph ChenCHIP_TYPE_FIXUP_TABLE=( 180583701dSJoseph Chen # CONFIG_XXX RKCHIP LOADER TRUST LABEL 190583701dSJoseph Chen "CONFIG_ROCKCHIP_RK3368 RK3368H - - -" 200583701dSJoseph Chen "CONFIG_ROCKCHIP_RV1108 RV110X - - -" 210583701dSJoseph Chen "CONFIG_ROCKCHIP_PX3SE PX3SE - - -" 220583701dSJoseph Chen "CONFIG_ROCKCHIP_RK3126 RK3126 - - -" 230583701dSJoseph Chen "CONFIG_ROCKCHIP_RK3326 RK3326 - - -" 240583701dSJoseph Chen "CONFIG_ROCKCHIP_RK3128X RK3128X - - -" 250583701dSJoseph Chen "CONFIG_ROCKCHIP_PX5 PX5 - - -" 260583701dSJoseph Chen "CONFIG_ROCKCHIP_RK3399PRO RK3399PRO - - -" 270583701dSJoseph Chen "CONFIG_ROCKCHIP_RK1806 RK1806 - - -" 280583701dSJoseph Chen "CONFIG_TARGET_GVA_RK3229 RK322X RK322XAT - -" 290583701dSJoseph Chen "CONFIG_COPROCESSOR_RK1808 RKNPU-LION RKNPULION RKNPULION -" 300583701dSJoseph Chen) 310583701dSJoseph Chen 320583701dSJoseph Chen# <*> Fixup rsa/sha pack mode for platforms 330583701dSJoseph Chen# RSA: RK3308/PX30/RK3326/RK1808 use RSA-PKCS1 V2.1, it's pack magic is "3", and others use default configure. 340583701dSJoseph Chen# SHA: RK3368 use rk big endian SHA256, it's pack magic is "2", and others use default configure. 350583701dSJoseph Chen# <*> Fixup images size pack for platforms 360583701dSJoseph Chen# <*> Fixup verbose message about AARCH32 37de440615SJoseph Chen# 380583701dSJoseph Chen# @RSA: rsa mode 390583701dSJoseph Chen# @SHA: sha mode 400583701dSJoseph Chen# @A64-KB: arm64 platform image size: [uboot,trust] 410583701dSJoseph Chen# @A64-NUM: arm64 platform image number of total: [uboot,trust] 420583701dSJoseph Chen# @A32-KB: arm32 platform image size: [uboot,trust] 430583701dSJoseph Chen# @A32-NUM: arm32 platform image number of total: [uboot,trust] 440583701dSJoseph Chen# @LOADER: map to $RKCHIP_LOADER for loader ini 450583701dSJoseph Chen# @TRUST: map to $RKCHIP_TRUST for trust ini 460583701dSJoseph Chen# @-: default state/value 470583701dSJoseph ChenCHIP_CFG_FIXUP_TABLE=( 480583701dSJoseph Chen # CONFIG_XXX RSA SHA A64-KB A64-NUM A32-KB A32-NUM LOAER TRUST 490583701dSJoseph Chen "CONFIG_ROCKCHIP_RK3368 - 2 -,- -,- -,- -,- - -" 500583701dSJoseph Chen "CONFIG_ROCKCHIP_RK3036 - - 512,512 1,1 -,- -,- - -" 510583701dSJoseph Chen "CONFIG_ROCKCHIP_PX30 3 - -,- -,- -,- -,- - -" 520583701dSJoseph Chen "CONFIG_ROCKCHIP_RK3326 3 - -,- -,- -,- -,- AARCH32 -" 530583701dSJoseph Chen "CONFIG_ROCKCHIP_RK3308 3 - 1024,1024 2,2 512,512 2,2 - AARCH32" 540583701dSJoseph Chen "CONFIG_ROCKCHIP_RK1808 3 - 1024,1024 2,2 -,- -,- - -" 552e566761SJoseph Chen "CONFIG_ROCKCHIP_RV1126 3 - -,- -,- -,- -,- - -" 56de440615SJoseph Chen) 57de440615SJoseph Chen 58fb90bd1dSJoseph Chen########################################### User can modify ############################################# 59fb90bd1dSJoseph Chen# User's rkbin tool relative path 60bc98b3c8SJoseph ChenRKBIN_TOOLS=../rkbin/tools 61bc98b3c8SJoseph Chen 62fb90bd1dSJoseph Chen# User's GCC toolchain and relative path 6353ea5791SJoseph ChenADDR2LINE_ARM32=arm-linux-gnueabihf-addr2line 6453ea5791SJoseph ChenADDR2LINE_ARM64=aarch64-linux-gnu-addr2line 65fb90bd1dSJoseph ChenOBJ_ARM32=arm-linux-gnueabihf-objdump 66fb90bd1dSJoseph ChenOBJ_ARM64=aarch64-linux-gnu-objdump 67b42d2103SJoseph ChenNM_ARM32=arm-linux-gnueabihf-nm 68b42d2103SJoseph ChenNM_ARM64=aarch64-linux-gnu-nm 69d8540eacSJoseph ChenGCC_ARM32=arm-linux-gnueabihf- 70d8540eacSJoseph ChenGCC_ARM64=aarch64-linux-gnu- 71d8540eacSJoseph ChenTOOLCHAIN_ARM32=../prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin 72d8540eacSJoseph ChenTOOLCHAIN_ARM64=../prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin 73fb90bd1dSJoseph Chen 74fb90bd1dSJoseph Chen########################################### User not touch ############################################# 75de440615SJoseph Chen# Declare global INI file searching index name for every chip, update in select_chip_info() 760583701dSJoseph ChenRKCHIP="-" 770583701dSJoseph ChenRKCHIP_LABEL="-" 780583701dSJoseph ChenRKCHIP_LOADER="-" 790583701dSJoseph ChenRKCHIP_TRUST="-" 80d443b7d5SJoseph Chen 81b768b915SJoseph ChenINI_TRUST= 82b768b915SJoseph ChenINI_LOADER= 83b768b915SJoseph Chen 8423ba6841SJoseph Chen# Declare rkbin repository path, updated in prepare() 85fb90bd1dSJoseph ChenRKBIN= 86fb90bd1dSJoseph Chen 87fb90bd1dSJoseph Chen# Declare global toolchain path for CROSS_COMPILE, updated in select_toolchain() 88fb90bd1dSJoseph ChenTOOLCHAIN_GCC= 89b42d2103SJoseph ChenTOOLCHAIN_NM= 90fb90bd1dSJoseph ChenTOOLCHAIN_OBJDUMP= 9153ea5791SJoseph ChenTOOLCHAIN_ADDR2LINE= 92fb90bd1dSJoseph Chen 9341cf5e5aSJoseph Chen# Declare global plaform configure, updated in fixup_platform_configure() 94b42d2103SJoseph ChenPLAT_RSA= 95b42d2103SJoseph ChenPLAT_SHA= 96b42d2103SJoseph ChenPLAT_UBOOT_SIZE= 97b42d2103SJoseph ChenPLAT_TRUST_SIZE= 98b42d2103SJoseph ChenPLAT_TYPE="RKFW" # default 99b42d2103SJoseph Chen 100b42d2103SJoseph ChenSRCTREE=`pwd` 101ae33e311SJoseph ChenSCRIPT_FIT="${SRCTREE}/scripts/fit.sh" 102b42d2103SJoseph ChenSCRIPT_ATF="${SRCTREE}/scripts/atf.sh" 103b42d2103SJoseph ChenSCRIPT_TOS="${SRCTREE}/scripts/tos.sh" 104b42d2103SJoseph ChenSCRIPT_SPL="${SRCTREE}/scripts/spl.sh" 105b42d2103SJoseph ChenSCRIPT_UBOOT="${SRCTREE}/scripts/uboot.sh" 106b42d2103SJoseph ChenSCRIPT_LOADER="${SRCTREE}/scripts/loader.sh" 107aa8ddc58SJoseph Chen 108fb90bd1dSJoseph Chen######################################################################################################### 1097c3ca500SJoseph Chenfunction help() 110b6255198SJoseph Chen{ 111b6255198SJoseph Chen echo 1126a764259SJoseph Chen echo "Usage:" 113b768b915SJoseph Chen echo " ./make.sh [board|sub-command]" 1146a764259SJoseph Chen echo 1156a764259SJoseph Chen echo " - board: board name of defconfig" 116b42d2103SJoseph Chen echo " - sub-command: elf*|loader|trust|uboot|--spl|--tpl|itb|map|sym|<addr>" 117b42d2103SJoseph Chen echo " - ini: ini file to pack trust/loader" 118f3d60245SJoseph Chen echo 119f3d60245SJoseph Chen echo "Output:" 120f3d60245SJoseph Chen echo " When board built okay, there are uboot/trust/loader images in current directory" 121b6255198SJoseph Chen echo 122b6255198SJoseph Chen echo "Example:" 123b6255198SJoseph Chen echo 124d6821889SJoseph Chen echo "1. Build:" 125fc99e044SJoseph Chen echo " ./make.sh evb-rk3399 --- build for evb-rk3399_defconfig" 126fc99e044SJoseph Chen echo " ./make.sh firefly-rk3288 --- build for firefly-rk3288_defconfig" 127622ccf34SJoseph Chen echo " ./make.sh EXT_DTB=rk-kernel.dtb --- build with exist .config and external dtb" 128fc99e044SJoseph Chen echo " ./make.sh --- build with exist .config" 129398d3e80SJoseph Chen echo " ./make.sh env --- build envtools" 130b6255198SJoseph Chen echo 131d6821889SJoseph Chen echo "2. Pack:" 1326a764259SJoseph Chen echo " ./make.sh uboot --- pack uboot.img" 13369cce37bSJoseph Chen echo " ./make.sh trust --- pack trust.img" 134f3d60245SJoseph Chen echo " ./make.sh trust <ini> --- pack trust img with assigned ini file" 1356a764259SJoseph Chen echo " ./make.sh loader --- pack loader bin" 136f3d60245SJoseph Chen echo " ./make.sh loader <ini> --- pack loader img with assigned ini file" 137b42d2103SJoseph Chen echo " ./make.sh --spl --- pack loader with u-boot-spl.bin" 138b42d2103SJoseph Chen echo " ./make.sh --tpl --- pack loader with u-boot-tpl.bin" 139b42d2103SJoseph Chen echo " ./make.sh --tpl --spl --- pack loader with u-boot-tpl.bin and u-boot-spl.bin" 140b6255198SJoseph Chen echo 141d6821889SJoseph Chen echo "3. Debug:" 142b6255198SJoseph Chen echo " ./make.sh elf --- dump elf file with -D(default)" 143b6255198SJoseph Chen echo " ./make.sh elf-S --- dump elf file with -S" 1446a764259SJoseph Chen echo " ./make.sh elf-d --- dump elf file with -d" 145f3d60245SJoseph Chen echo " ./make.sh elf-* --- dump elf file with -*" 146b42d2103SJoseph Chen echo " ./make.sh <no reloc_addr> --- unwind address(no relocated)" 147b42d2103SJoseph Chen echo " ./make.sh <reloc_addr-reloc_off> --- unwind address(relocated)" 148b6255198SJoseph Chen echo " ./make.sh map --- cat u-boot.map" 149b6255198SJoseph Chen echo " ./make.sh sym --- cat u-boot.sym" 150b6255198SJoseph Chen} 15141cf5e5aSJoseph Chen 1527c3ca500SJoseph Chenfunction prepare() 153cd7ae718SJoseph Chen{ 154bc98b3c8SJoseph Chen if [ -d ${RKBIN_TOOLS} ]; then 155bc98b3c8SJoseph Chen absolute_path=$(cd `dirname ${RKBIN_TOOLS}`; pwd) 156bc98b3c8SJoseph Chen RKBIN=${absolute_path} 157cd7ae718SJoseph Chen else 158b768b915SJoseph Chen echo "ERROR: No ../rkbin repository" 159cd7ae718SJoseph Chen exit 1 160cd7ae718SJoseph Chen fi 16169b6e590SJoseph Chen 1627c3ca500SJoseph Chen if grep -Eq ''^CONFIG_ARM64=y'|'^CONFIG_ARM64_BOOT_AARCH32=y'' .config ; then 1637c3ca500SJoseph Chen ARM64_TRUSTZONE="y" 1647c3ca500SJoseph Chen fi 1657c3ca500SJoseph Chen 16669b6e590SJoseph Chen if grep -q '^CONFIG_ROCKCHIP_FIT_IMAGE_PACK=y' .config ; then 167b42d2103SJoseph Chen PLAT_TYPE="FIT" 168b768b915SJoseph Chen fi 169b768b915SJoseph Chen} 170b768b915SJoseph Chen 171b768b915SJoseph Chenfunction process_args() 172b768b915SJoseph Chen{ 173b768b915SJoseph Chen while [ $# -gt 0 ]; do 174b768b915SJoseph Chen case $1 in 175b42d2103SJoseph Chen *help|--h|-h) 176b768b915SJoseph Chen help 177b768b915SJoseph Chen exit 0 178b768b915SJoseph Chen ;; 179b42d2103SJoseph Chen # '': build with exist .config 180b42d2103SJoseph Chen # loader|trust|uboot: pack image 181b42d2103SJoseph Chen # debug*|map|sym|elf*|nm: debug command 182b42d2103SJoseph Chen # env: build env tool 183b42d2103SJoseph Chen # itb: pack itb image 184b42d2103SJoseph Chen # fit: pack non-secure uboot.img && boot.img 185b42d2103SJoseph Chen ''|loader|trust|uboot|debug*|itb|env|fit|map|sym|elf*|nm) 186b42b4e11SJoseph Chen if [ "$2" == "spl" -o "$2" == "tpl" ]; then 187b42d2103SJoseph Chen ARG_TSPL=$2 188b768b915SJoseph Chen shift 1 189b768b915SJoseph Chen fi 190b768b915SJoseph Chen shift 1 191b768b915SJoseph Chen ;; 192b42d2103SJoseph Chen # trust/loader ini files for packing trust.img/loader.img 193b42d2103SJoseph Chen *.ini|*.INI) 194b768b915SJoseph Chen if [ ! -f $1 ]; then 195b768b915SJoseph Chen echo "ERROR: No $1" 196b768b915SJoseph Chen fi 197b768b915SJoseph Chen if grep -q 'CODE471_OPTION' $1 ; then 198b768b915SJoseph Chen ARG_INI_LOADER=$1 199b768b915SJoseph Chen elif grep -Eq ''BL31_OPTION'|'TOS'' $1 ; then 200b768b915SJoseph Chen ARG_INI_TRUST=$1 201b768b915SJoseph Chen fi 202b768b915SJoseph Chen shift 1 203b768b915SJoseph Chen ;; 204b42d2103SJoseph Chen --sz-trust) # set trust size 205b42d2103SJoseph Chen ARG_TRUST_SIZE="--size $2 $3" 206b42d2103SJoseph Chen shift 3 207b42d2103SJoseph Chen ;; 208b42d2103SJoseph Chen --sz-uboot) # set uboot size 209b42d2103SJoseph Chen ARG_UBOOT_SIZE="--size $2 $3" 210b42d2103SJoseph Chen shift 3 211b42d2103SJoseph Chen ;; 212b42d2103SJoseph Chen --no-pack) # FIT: build but not pack image 213b42d2103SJoseph Chen ARG_NO_PACK="y" 214b42d2103SJoseph Chen shift 1 215b42d2103SJoseph Chen ;; 216b42d2103SJoseph Chen --no-uboot) # FIT: pack uboot.img without u-boot 217b42d2103SJoseph Chen ARG_NO_UBOOT="y" 218b42d2103SJoseph Chen shift 1 219b42d2103SJoseph Chen ;; 220a505e63bSJoseph Chen --idblock) # pack idblock.bin 221a505e63bSJoseph Chen shift 1 222a505e63bSJoseph Chen ;; 223b42d2103SJoseph Chen --tpl|tpl) # use tpl file 224b42d2103SJoseph Chen ARG_TPL_BIN="tpl/u-boot-tpl.bin" 225b42d2103SJoseph Chen shift 1 226b42d2103SJoseph Chen ;; 227b42d2103SJoseph Chen --spl|spl*) # use spl file 228b42d2103SJoseph Chen ARG_SPL_BIN="spl/u-boot-spl.bin" 229b42d2103SJoseph Chen shift 1 230b42d2103SJoseph Chen ;; 231b768b915SJoseph Chen *) 232b42d2103SJoseph Chen #1. FIT scripts args 233ae33e311SJoseph Chen NUM=$(${SCRIPT_FIT} --arg-check $1) 234b42b4e11SJoseph Chen if [ ${NUM} -ne 0 ]; then 235b42b4e11SJoseph Chen [ ${NUM} -eq 1 ] && ARG_LIST_FIT="${ARG_LIST_FIT} $1" 236b42b4e11SJoseph Chen [ ${NUM} -eq 2 ] && ARG_LIST_FIT="${ARG_LIST_FIT} $1 $2" 2371ff581bbSJoseph Chen shift ${NUM} 2381ff581bbSJoseph Chen continue 239b42d2103SJoseph Chen #2. unwind function address 2401ff581bbSJoseph Chen elif [ -z $(echo $1 | sed 's/[0-9,a-f,A-F,x,X,-]//g') ]; then 241b768b915SJoseph Chen ARG_FUNCADDR=$1 242b42d2103SJoseph Chen #3. make defconfig 243b768b915SJoseph Chen else 244b768b915SJoseph Chen ARG_BOARD=$1 245124e8c09SJoseph Chen if [ ! -f configs/${ARG_BOARD}_defconfig -a ! -f configs/${ARG_BOARD}.config ]; then 246b768b915SJoseph Chen echo -e "\n${SUPPORT_LIST}\n" 247b768b915SJoseph Chen echo "ERROR: No configs/${ARG_BOARD}_defconfig" 248b768b915SJoseph Chen exit 1 249124e8c09SJoseph Chen elif [ -f configs/${ARG_BOARD}.config ]; then 2501df865f3SJoseph Chen BASE1_DEFCONFIG=`sed -n "/CONFIG_BASE_DEFCONFIG=/s/CONFIG_BASE_DEFCONFIG=//p" configs/${ARG_BOARD}.config |tr -d '\r' | tr -d '"'` 2511df865f3SJoseph Chen BASE0_DEFCONFIG=`sed -n "/CONFIG_BASE_DEFCONFIG=/s/CONFIG_BASE_DEFCONFIG=//p" configs/${BASE1_DEFCONFIG} |tr -d '\r' | tr -d '"'` 2521df865f3SJoseph Chen MAKE_CMD="make ${BASE0_DEFCONFIG} ${BASE1_DEFCONFIG} ${ARG_BOARD}.config -j${JOB}" 253124e8c09SJoseph Chen echo "## ${MAKE_CMD}" 2541df865f3SJoseph Chen make ${BASE0_DEFCONFIG} ${BASE1_DEFCONFIG} ${ARG_BOARD}.config ${OPTION} 255b768b915SJoseph Chen else 256124e8c09SJoseph Chen MAKE_CMD="make ${ARG_BOARD}_defconfig -j${JOB}" 257124e8c09SJoseph Chen echo "## ${MAKE_CMD}" 258124e8c09SJoseph Chen make ${ARG_BOARD}_defconfig ${OPTION} 259b768b915SJoseph Chen fi 260b768b915SJoseph Chen fi 261b768b915SJoseph Chen shift 1 262b768b915SJoseph Chen ;; 263b768b915SJoseph Chen esac 264b768b915SJoseph Chen done 265b768b915SJoseph Chen 266b768b915SJoseph Chen if [ ! -f .config ]; then 267b768b915SJoseph Chen echo 268b768b915SJoseph Chen echo "ERROR: No .config" 269b768b915SJoseph Chen help 270b768b915SJoseph Chen exit 1 27169b6e590SJoseph Chen fi 27230b04afcSJoseph Chen} 2737c2526e9SJoseph Chen 2747c3ca500SJoseph Chenfunction select_toolchain() 27527a50c86SAndy Yan{ 276d6821889SJoseph Chen if grep -q '^CONFIG_ARM64=y' .config ; then 277bc98b3c8SJoseph Chen if [ -d ${TOOLCHAIN_ARM64} ]; then 278bc98b3c8SJoseph Chen absolute_path=$(cd `dirname ${TOOLCHAIN_ARM64}`; pwd) 279b42d2103SJoseph Chen TOOLCHAIN_NM=${absolute_path}/bin/${NM_ARM64} 280bc98b3c8SJoseph Chen TOOLCHAIN_GCC=${absolute_path}/bin/${GCC_ARM64} 2810ff0e214SJoseph Chen TOOLCHAIN_OBJDUMP=${absolute_path}/bin/${OBJ_ARM64} 28253ea5791SJoseph Chen TOOLCHAIN_ADDR2LINE=${absolute_path}/bin/${ADDR2LINE_ARM64} 283bc98b3c8SJoseph Chen else 2847c3ca500SJoseph Chen echo "ERROR: No toolchain: ${TOOLCHAIN_ARM64}" 285bc98b3c8SJoseph Chen exit 1 28627a50c86SAndy Yan fi 28727a50c86SAndy Yan else 288bc98b3c8SJoseph Chen if [ -d ${TOOLCHAIN_ARM32} ]; then 289bc98b3c8SJoseph Chen absolute_path=$(cd `dirname ${TOOLCHAIN_ARM32}`; pwd) 290b42d2103SJoseph Chen TOOLCHAIN_NM=${absolute_path}/bin/${NM_ARM32} 291bc98b3c8SJoseph Chen TOOLCHAIN_GCC=${absolute_path}/bin/${GCC_ARM32} 2920ff0e214SJoseph Chen TOOLCHAIN_OBJDUMP=${absolute_path}/bin/${OBJ_ARM32} 29353ea5791SJoseph Chen TOOLCHAIN_ADDR2LINE=${absolute_path}/bin/${ADDR2LINE_ARM32} 294bc98b3c8SJoseph Chen else 2957c3ca500SJoseph Chen echo "ERROR: No toolchain: ${TOOLCHAIN_ARM32}" 296bc98b3c8SJoseph Chen exit 1 29727a50c86SAndy Yan fi 29827a50c86SAndy Yan fi 299bc98b3c8SJoseph Chen} 300bc98b3c8SJoseph Chen 301b42b4e11SJoseph Chen# 302de440615SJoseph Chen# We select chip info to do: 303de440615SJoseph Chen# 1. RKCHIP: fixup platform configure 304de440615SJoseph Chen# 2. RKCHIP_LOADER: search ini file to pack loader 305de440615SJoseph Chen# 3. RKCHIP_TRUST: search ini file to pack trust 306de440615SJoseph Chen# 4. RKCHIP_LABEL: show build message 307de440615SJoseph Chen# 3087c3ca500SJoseph Chenfunction select_chip_info() 309bc98b3c8SJoseph Chen{ 310de440615SJoseph Chen # Read RKCHIP firstly from .config 311596700d7SShunqian Zheng # The regular expression that matching: 312596700d7SShunqian Zheng # - PX30, PX3SE 313596700d7SShunqian Zheng # - RK????, RK????X 314596700d7SShunqian Zheng # - RV???? 315b42d2103SJoseph Chen CHIP_PATTERN='^CONFIG_ROCKCHIP_[R,P][X,V,K][0-9ESX]{1,5}' 316b42d2103SJoseph Chen RKCHIP=`egrep -o ${CHIP_PATTERN} .config` 317d443b7d5SJoseph Chen 3180583701dSJoseph Chen # default 319d443b7d5SJoseph Chen RKCHIP=${RKCHIP##*_} 320b42b4e11SJoseph Chen # fixup ? 3217c3ca500SJoseph Chen for item in "${CHIP_TYPE_FIXUP_TABLE[@]}" 322de440615SJoseph Chen do 323b42d2103SJoseph Chen CONFIG_ROCKCHIP_XXX=`echo ${item} | awk '{ print $1 }'` 324b42d2103SJoseph Chen if grep -q "^${CONFIG_ROCKCHIP_XXX}=y" .config ; then 325b42b4e11SJoseph Chen RKCHIP=`echo ${item} | awk '{ print $2 }'` 326b42b4e11SJoseph Chen RKCHIP_LOADER=`echo ${item} | awk '{ print $3 }'` 327b42b4e11SJoseph Chen RKCHIP_TRUST=`echo ${item} | awk '{ print $4 }'` 328b42b4e11SJoseph Chen RKCHIP_LABEL=`echo ${item} | awk '{ print $5 }'` 329de440615SJoseph Chen fi 3300583701dSJoseph Chen done 3310583701dSJoseph Chen 332b42b4e11SJoseph Chen if [ "${RKCHIP_LOADER}" == "-" ]; then 3330583701dSJoseph Chen RKCHIP_LOADER=${RKCHIP} 334de440615SJoseph Chen fi 335b42b4e11SJoseph Chen if [ "${RKCHIP_TRUST}" == "-" ]; then 3360583701dSJoseph Chen RKCHIP_TRUST=${RKCHIP} 3370583701dSJoseph Chen fi 338b42b4e11SJoseph Chen if [ "${RKCHIP_LABEL}" == "-" ]; then 3390583701dSJoseph Chen RKCHIP_LABEL=${RKCHIP} 3400583701dSJoseph Chen fi 3410583701dSJoseph Chen} 3420583701dSJoseph Chen 34307d90e77SJoseph Chen# Priority: default < CHIP_CFG_FIXUP_TABLE() < make.sh args 3440583701dSJoseph Chenfunction fixup_platform_configure() 3450583701dSJoseph Chen{ 346b42d2103SJoseph Chen U_KB="-" U_NUM="-" T_KB="-" T_NUM="-" SHA="-" RSA="-" 3470583701dSJoseph Chen 3487c3ca500SJoseph Chen for item in "${CHIP_CFG_FIXUP_TABLE[@]}" 3490583701dSJoseph Chen do 350b42b4e11SJoseph Chen config_xxx=`echo ${item} | awk '{ print $1 }'` 3517c3ca500SJoseph Chen if grep -q "^${config_xxx}=y" .config ; then 3520583701dSJoseph Chen # <*> Fixup rsa/sha pack mode for platforms 353b42d2103SJoseph Chen RSA=`echo ${item} | awk '{ print $2 }'` 354b42d2103SJoseph Chen SHA=`echo ${item} | awk '{ print $3 }'` 3550583701dSJoseph Chen 3560583701dSJoseph Chen # <*> Fixup images size pack for platforms, and ini file 35789d0489dSJoseph Chen if grep -q '^CONFIG_ARM64=y' .config ; then 358b42d2103SJoseph Chen U_KB=`echo ${item} | awk '{ print $4 }' | awk -F "," '{ print $1 }'` 359b42d2103SJoseph Chen T_KB=`echo ${item} | awk '{ print $4 }' | awk -F "," '{ print $2 }'` 360b42d2103SJoseph Chen U_NUM=`echo ${item} | awk '{ print $5 }' | awk -F "," '{ print $1 }'` 361b42d2103SJoseph Chen T_NUM=`echo ${item} | awk '{ print $5 }' | awk -F "," '{ print $2 }'` 36289d0489dSJoseph Chen else 363b42d2103SJoseph Chen U_KB=`echo ${item} | awk '{ print $6 }' | awk -F "," '{ print $1 }'` 364b42d2103SJoseph Chen T_KB=`echo ${item} | awk '{ print $6 }' | awk -F "," '{ print $2 }'` 365b42d2103SJoseph Chen U_NUM=`echo ${item} | awk '{ print $7 }' | awk -F "," '{ print $1 }'` 366b42d2103SJoseph Chen T_NUM=`echo ${item} | awk '{ print $7 }' | awk -F "," '{ print $2 }'` 36789d0489dSJoseph Chen # AArch32 36889d0489dSJoseph Chen if grep -q '^CONFIG_ARM64_BOOT_AARCH32=y' .config ; then 369b42b4e11SJoseph Chen PADDING=`echo ${item} | awk '{ print $8 }'` 370b42b4e11SJoseph Chen if [ "${PADDING}" != "-" ]; then 371b42b4e11SJoseph Chen RKCHIP_LOADER=${RKCHIP_LOADER}${PADDING} 3720583701dSJoseph Chen fi 373b42b4e11SJoseph Chen PADDING=`echo ${item} | awk '{ print $9 }'` 374b42b4e11SJoseph Chen if [ "${PADDING}" != "-" ]; then 375b42b4e11SJoseph Chen RKCHIP_TRUST=${RKCHIP_TRUST}${PADDING} 3760583701dSJoseph Chen fi 3770583701dSJoseph Chen RKCHIP_LABEL=${RKCHIP_LABEL}"AARCH32" 37889d0489dSJoseph Chen fi 379de440615SJoseph Chen fi 380de440615SJoseph Chen fi 381de440615SJoseph Chen done 382de440615SJoseph Chen 383b42d2103SJoseph Chen if [ "${SHA}" != "-" ]; then 384b42d2103SJoseph Chen PLAT_SHA="--sha ${SHA}" 3850583701dSJoseph Chen fi 386b42d2103SJoseph Chen if [ "${RSA}" != "-" ]; then 387b42d2103SJoseph Chen PLAT_RSA="--rsa ${RSA}" 3880583701dSJoseph Chen fi 389b42d2103SJoseph Chen if [ "${U_KB}" != "-" ]; then 390b42d2103SJoseph Chen PLAT_UBOOT_SIZE="--size ${U_KB} ${U_NUM}" 3910583701dSJoseph Chen fi 392b42d2103SJoseph Chen if [ "${T_KB}" != "-" ]; then 393b42d2103SJoseph Chen PLAT_TRUST_SIZE="--size ${T_KB} ${T_NUM}" 394b768b915SJoseph Chen fi 39507d90e77SJoseph Chen 39607d90e77SJoseph Chen # args 39707d90e77SJoseph Chen if [ ! -z "${ARG_UBOOT_SIZE}" ]; then 398b42d2103SJoseph Chen PLAT_UBOOT_SIZE=${ARG_UBOOT_SIZE} 39907d90e77SJoseph Chen fi 40007d90e77SJoseph Chen 40107d90e77SJoseph Chen if [ ! -z "${ARG_TRUST_SIZE}" ]; then 402b42d2103SJoseph Chen PLAT_TRUST_SIZE=${ARG_TRUST_SIZE} 40307d90e77SJoseph Chen fi 404b768b915SJoseph Chen} 405b768b915SJoseph Chen 406496a6e1eSJoseph Chen# Priority: default < CHIP_TYPE_FIXUP_TABLE() < defconfig < make.sh args 407b768b915SJoseph Chenfunction select_ini_file() 408b768b915SJoseph Chen{ 409b768b915SJoseph Chen # default 410b768b915SJoseph Chen INI_LOADER=${RKBIN}/RKBOOT/${RKCHIP_LOADER}MINIALL.ini 411b42b4e11SJoseph Chen if [ "${ARM64_TRUSTZONE}" == "y" ]; then 412b768b915SJoseph Chen INI_TRUST=${RKBIN}/RKTRUST/${RKCHIP_TRUST}TRUST.ini 413b768b915SJoseph Chen else 414b768b915SJoseph Chen INI_TRUST=${RKBIN}/RKTRUST/${RKCHIP_TRUST}TOS.ini 41541cf5e5aSJoseph Chen fi 41641cf5e5aSJoseph Chen 417496a6e1eSJoseph Chen # defconfig 418496a6e1eSJoseph Chen NAME=`sed -n "/CONFIG_LOADER_INI=/s/CONFIG_LOADER_INI=//p" .config |tr -d '\r' | tr -d '"'` 419496a6e1eSJoseph Chen if [ ! -z "${NAME}" ]; then 420496a6e1eSJoseph Chen INI_LOADER=${RKBIN}/RKBOOT/${NAME} 421496a6e1eSJoseph Chen fi 422496a6e1eSJoseph Chen NAME=`sed -n "/CONFIG_TRUST_INI=/s/CONFIG_TRUST_INI=//p" .config |tr -d '\r' | tr -d '"'` 423496a6e1eSJoseph Chen if [ ! -z "${NAME}" ]; then 424496a6e1eSJoseph Chen INI_TRUST=${RKBIN}/RKTRUST/${NAME} 425496a6e1eSJoseph Chen fi 426496a6e1eSJoseph Chen 427b768b915SJoseph Chen # args 428b42d2103SJoseph Chen if [ ! -z "${ARG_INI_TRUST}" ]; then 429b42b4e11SJoseph Chen INI_TRUST=${ARG_INI_TRUST} 430b768b915SJoseph Chen fi 431b42d2103SJoseph Chen if [ ! -z "${ARG_INI_LOADER}" ]; then 432b42b4e11SJoseph Chen INI_LOADER=${ARG_INI_LOADER} 433b768b915SJoseph Chen fi 43427a50c86SAndy Yan} 435de9a6cd2SJoseph Chen 436b42d2103SJoseph Chenfunction sub_commands() 437b42d2103SJoseph Chen{ 438b42d2103SJoseph Chen # skip "--" parameter, such as "--rollback-index-..." 439b42d2103SJoseph Chen if [[ ${CMD_ARGS} != --* ]]; then 440b42d2103SJoseph Chen CMD=${CMD_ARGS%-*} 441b42d2103SJoseph Chen ARG=${CMD_ARGS#*-} 442b42d2103SJoseph Chen else 443b42d2103SJoseph Chen CMD=${CMD_ARGS} 444b42d2103SJoseph Chen fi 445b42d2103SJoseph Chen 446b42d2103SJoseph Chen if [ "${ARG_TSPL}" == "tpl" -o "${ARG_TSPL}" == "spl" ]; then 447b42d2103SJoseph Chen ELF=`find -name u-boot-${ARG_TSPL}` 448b42d2103SJoseph Chen MAP=`find -name u-boot-${ARG_TSPL}.map` 449b42d2103SJoseph Chen SYM=`find -name u-boot-${ARG_TSPL}.sym` 450b42d2103SJoseph Chen else 451b42d2103SJoseph Chen ELF=u-boot 452b42d2103SJoseph Chen MAP=u-boot.map 453b42d2103SJoseph Chen SYM=u-boot.sym 454b42d2103SJoseph Chen fi 455b42d2103SJoseph Chen 456b42d2103SJoseph Chen case ${CMD} in 457b42d2103SJoseph Chen elf|nm) 458b42d2103SJoseph Chen if [ "${CMD}" == "nm" ]; then 4599b6b8f53SJoseph Chen echo -e "\n${ELF}: file format elf\n" 460b42d2103SJoseph Chen ${TOOLCHAIN_NM} -r --size ${ELF} | less 461b42d2103SJoseph Chen else 462b42d2103SJoseph Chen if [ "${CMD}" == "elf" -a "${ARG}" == "elf" ]; then 463b42d2103SJoseph Chen ARG=D # default 464b42d2103SJoseph Chen fi 465b42d2103SJoseph Chen ${TOOLCHAIN_OBJDUMP} -${ARG} ${ELF} | less 466b42d2103SJoseph Chen fi 467b42d2103SJoseph Chen exit 0 468b42d2103SJoseph Chen ;; 469b42d2103SJoseph Chen map|sym) 470b42d2103SJoseph Chen if [ ${CMD} == "map" ]; then 471b42d2103SJoseph Chen cat ${MAP} | less 472b42d2103SJoseph Chen else 473b42d2103SJoseph Chen cat ${SYM} | less 474b42d2103SJoseph Chen fi 475b42d2103SJoseph Chen exit 0 476b42d2103SJoseph Chen ;; 477b42d2103SJoseph Chen debug) 478b42d2103SJoseph Chen ./scripts/rkpatch.sh ${ARG} 479b42d2103SJoseph Chen exit 0 480b42d2103SJoseph Chen ;; 481b42d2103SJoseph Chen fit) 482b42d2103SJoseph Chen # Non-secure 483ae33e311SJoseph Chen ${SCRIPT_FIT} --uboot-itb --boot-itb --no-vboot ${ARG_LIST_FIT} 484b42d2103SJoseph Chen exit 0 485b42d2103SJoseph Chen ;; 486b42d2103SJoseph Chen uboot) 487b42d2103SJoseph Chen pack_uboot_image 488b42d2103SJoseph Chen exit 0 489b42d2103SJoseph Chen ;; 490b42d2103SJoseph Chen trust) 491b42d2103SJoseph Chen pack_trust_image 492b42d2103SJoseph Chen exit 0 493b42d2103SJoseph Chen ;; 494b42d2103SJoseph Chen loader) 495b42d2103SJoseph Chen pack_loader_image 496b42d2103SJoseph Chen exit 0 497b42d2103SJoseph Chen ;; 498b42d2103SJoseph Chen itb) 499b42d2103SJoseph Chen pack_uboot_itb_image 500b42d2103SJoseph Chen exit 0 501b42d2103SJoseph Chen ;; 502b42d2103SJoseph Chen env) 503b42d2103SJoseph Chen make CROSS_COMPILE=${TOOLCHAIN_GCC} envtools 504b42d2103SJoseph Chen exit 0 505b42d2103SJoseph Chen ;; 506a505e63bSJoseph Chen --idblock) 507a505e63bSJoseph Chen pack_idblock 508a505e63bSJoseph Chen exit 0 509a505e63bSJoseph Chen ;; 510b42d2103SJoseph Chen --tpl|--spl|tpl|spl) 511b42d2103SJoseph Chen pack_spl_loader_image 512b42d2103SJoseph Chen exit 0 513b42d2103SJoseph Chen ;; 514b42d2103SJoseph Chen *) 515b42d2103SJoseph Chen unwind_addr_or_continue 516b42d2103SJoseph Chen ;; 517b42d2103SJoseph Chen esac 518b42d2103SJoseph Chen} 519b42d2103SJoseph Chen 520b42d2103SJoseph Chenfunction unwind_addr_or_continue() 521b42d2103SJoseph Chen{ 522b42d2103SJoseph Chen FUNCADDR=${ARG_FUNCADDR} 523b42d2103SJoseph Chen RELOCOFF=${FUNCADDR#*-} 524b42d2103SJoseph Chen FUNCADDR=${FUNCADDR%-*} 525b42d2103SJoseph Chen 526b42d2103SJoseph Chen if [ -z $(echo ${FUNCADDR} | sed 's/[0-9,a-f,A-F,x,X,-]//g') ] && [ ${FUNCADDR} ]; then 527b42d2103SJoseph Chen # With prefix: '0x' or '0X' 528b42d2103SJoseph Chen if [ `echo ${FUNCADDR} | sed -n "/0[x,X]/p" | wc -l` -ne 0 ]; then 529b42d2103SJoseph Chen FUNCADDR=`echo ${FUNCADDR} | awk '{ print strtonum($0) }'` 530b42d2103SJoseph Chen FUNCADDR=`echo "obase=16;${FUNCADDR}"|bc | tr '[A-Z]' '[a-z]'` 531b42d2103SJoseph Chen fi 532b42d2103SJoseph Chen if [ `echo ${RELOCOFF} | sed -n "/0[x,X]/p" | wc -l` -ne 0 ] && [ ${RELOCOFF} ]; then 533b42d2103SJoseph Chen RELOCOFF=`echo ${RELOCOFF} | awk '{ print strtonum($0) }'` 534b42d2103SJoseph Chen RELOCOFF=`echo "obase=16;${RELOCOFF}"|bc | tr '[A-Z]' '[a-z]'` 535b42d2103SJoseph Chen fi 536b42d2103SJoseph Chen 537b42d2103SJoseph Chen # If reloc address is assigned, do sub 538b42d2103SJoseph Chen if [ "${FUNCADDR}" != "${RELOCOFF}" ]; then 539b42d2103SJoseph Chen # Hex -> Dec -> SUB -> Hex 540b42d2103SJoseph Chen FUNCADDR=`echo $((16#${FUNCADDR}))` 541b42d2103SJoseph Chen RELOCOFF=`echo $((16#${RELOCOFF}))` 542b42d2103SJoseph Chen FUNCADDR=$((FUNCADDR-RELOCOFF)) 543b42d2103SJoseph Chen FUNCADDR=$(echo "obase=16;${FUNCADDR}"|bc | tr '[A-Z]' '[a-z]') 544b42d2103SJoseph Chen fi 545b42d2103SJoseph Chen 546b42d2103SJoseph Chen echo 547b42d2103SJoseph Chen sed -n "/${FUNCADDR}/p" ${SYM} 548b42d2103SJoseph Chen ${TOOLCHAIN_ADDR2LINE} -e ${ELF} ${FUNCADDR} 549b42d2103SJoseph Chen exit 0 550b42d2103SJoseph Chen fi 551b42d2103SJoseph Chen} 552b42d2103SJoseph Chen 553a505e63bSJoseph Chenfunction pack_idblock() 554a505e63bSJoseph Chen{ 555a505e63bSJoseph Chen INI=${INI_LOADER} 556a505e63bSJoseph Chen if [ ! -f ${INI} ]; then 557a505e63bSJoseph Chen echo "ERROR: No ${INI}" 558a505e63bSJoseph Chen exit 1 559a505e63bSJoseph Chen fi 560a505e63bSJoseph Chen 561a505e63bSJoseph Chen # chip 562a505e63bSJoseph Chen COMMON_H=`grep "_common.h:" include/autoconf.mk.dep | awk -F "/" '{ printf $3 }'` 563a505e63bSJoseph Chen PLAT=${COMMON_H%_*} 564a505e63bSJoseph Chen 565a505e63bSJoseph Chen # file 566a505e63bSJoseph Chen SPL_BIN=${RKBIN}/`sed -n "/FlashBoot=/s/FlashBoot=//p" ${INI} | tr -d '\r'` 567a505e63bSJoseph Chen TPL_BIN=${RKBIN}/`sed -n "/FlashData=/s/FlashData=//p" ${INI} | tr -d '\r'` 568a505e63bSJoseph Chen if [ ! -z "${ARG_SPL_BIN}" ]; then 569a505e63bSJoseph Chen SPL_BIN=${ARG_SPL_BIN} 570a505e63bSJoseph Chen fi 571a505e63bSJoseph Chen if [ ! -z "${ARG_TPL_BIN}" ]; then 572a505e63bSJoseph Chen TPL_BIN=${ARG_TPL_BIN} 573a505e63bSJoseph Chen fi 574a505e63bSJoseph Chen 575a505e63bSJoseph Chen # pack 576a505e63bSJoseph Chen rm idblock.bin -f 577a505e63bSJoseph Chen ./tools/mkimage -n ${PLAT} -T rksd -d ${TPL_BIN}:${SPL_BIN} idblock.bin 578a505e63bSJoseph Chen echo "Input:" 579a505e63bSJoseph Chen echo " ${INI}" 580a505e63bSJoseph Chen echo " ${TPL_BIN}" 581a505e63bSJoseph Chen echo " ${SPL_BIN}" 582a505e63bSJoseph Chen echo 583a505e63bSJoseph Chen echo "Pack ${PLAT} idblock.bin okay!" 584a505e63bSJoseph Chen echo 585a505e63bSJoseph Chen} 586a505e63bSJoseph Chen 587b42d2103SJoseph Chenfunction pack_uboot_itb_image() 588b42d2103SJoseph Chen{ 589b42d2103SJoseph Chen INI=${INI_TRUST} 590b42d2103SJoseph Chen if [ ! -f ${INI} ]; then 591b42d2103SJoseph Chen echo "ERROR: No ${INI}" 592b42d2103SJoseph Chen exit 1 593b42d2103SJoseph Chen fi 594b42d2103SJoseph Chen 595b42d2103SJoseph Chen if [ "${ARM64_TRUSTZONE}" == "y" ]; then 596b42d2103SJoseph Chen BL31_ELF=`sed -n '/_bl31_/s/PATH=//p' ${INI} | tr -d '\r'` 597cb718016SJoseph Chen BL32_BIN=`sed -n '/_bl32_/s/PATH=//p' ${INI} | tr -d '\r'` 598*407bd0fbSJoseph Chen rm bl31.elf tee.bin -rf 599b42d2103SJoseph Chen cp ${RKBIN}/${BL31_ELF} bl31.elf 600cb718016SJoseph Chen if grep BL32_OPTION -A 1 ${INI} | grep SEC=1 ; then 601cb718016SJoseph Chen cp ${RKBIN}/${BL32_BIN} tee.bin 602cb718016SJoseph Chen TEE_OFFSET=`grep BL32_OPTION -A 3 ${INI} | grep ADDR= | awk -F "=" '{ printf $2 }' | tr -d '\r'` 603cb718016SJoseph Chen TEE_ARG="-t ${TEE_OFFSET}" 604cb718016SJoseph Chen fi 605b42d2103SJoseph Chen else 606b42d2103SJoseph Chen # TOS 607b42d2103SJoseph Chen TOS=`sed -n "/TOS=/s/TOS=//p" ${INI} | tr -d '\r'` 608b42d2103SJoseph Chen TOSTA=`sed -n "/TOSTA=/s/TOSTA=//p" ${INI} | tr -d '\r'` 609b42d2103SJoseph Chen if [ ! -z "${TOSTA}" ]; then 610b42d2103SJoseph Chen cp ${RKBIN}/${TOSTA} tee.bin 611b42d2103SJoseph Chen elif [ ! -z "${TOS}" ]; then 612b42d2103SJoseph Chen cp ${RKBIN}/${TOS} tee.bin 613b42d2103SJoseph Chen else 614b42d2103SJoseph Chen echo "ERROR: No tee bin" 615b42d2103SJoseph Chen exit 1 616b42d2103SJoseph Chen fi 617b42d2103SJoseph Chen 618b42d2103SJoseph Chen TEE_OFFSET=`sed -n "/ADDR=/s/ADDR=//p" ${INI} | tr -d '\r'` 619b42d2103SJoseph Chen if [ "${TEE_OFFSET}" == "" ]; then 620b42d2103SJoseph Chen TEE_OFFSET=0x8400000 621b42d2103SJoseph Chen fi 622cb718016SJoseph Chen TEE_ARG="-t ${TEE_OFFSET}" 623b42d2103SJoseph Chen 624b42d2103SJoseph Chen # MCU 625b42d2103SJoseph Chen MCU_ENABLED=`awk -F"," '/MCU=/ { printf $3 }' ${INI} | tr -d ' '` 626b42d2103SJoseph Chen if [ "${MCU_ENABLED}" == "enabled" -o "${MCU_ENABLED}" == "okay" ]; then 627b42d2103SJoseph Chen MCU=`awk -F"," '/MCU=/ { printf $1 }' ${INI} | tr -d ' ' | cut -c 5-` 628b42d2103SJoseph Chen cp ${RKBIN}/${MCU} mcu.bin 629b42d2103SJoseph Chen MCU_OFFSET=`awk -F"," '/MCU=/ { printf $2 }' ${INI} | tr -d ' '` 630cb718016SJoseph Chen MCU_ARG="-m ${MCU_OFFSET}" 631cb718016SJoseph Chen fi 632b42d2103SJoseph Chen fi 633b42d2103SJoseph Chen 634b42d2103SJoseph Chen COMPRESSION=`awk -F"," '/COMPRESSION=/ { printf $1 }' ${INI} | tr -d ' ' | cut -c 13-` 635cb718016SJoseph Chen if [ ! -z "${COMPRESSION}" -a "${COMPRESSION}" != "none" ]; then 636cb718016SJoseph Chen COMPRESSION_ARG="-c ${COMPRESSION}" 637b42d2103SJoseph Chen fi 638b42d2103SJoseph Chen 639b42d2103SJoseph Chen SPL_FIT_SOURCE=`sed -n "/CONFIG_SPL_FIT_SOURCE=/s/CONFIG_SPL_FIT_SOURCE=//p" .config | tr -d '""'` 640b42d2103SJoseph Chen if [ ! -z ${SPL_FIT_SOURCE} ]; then 641b42d2103SJoseph Chen cp ${SPL_FIT_SOURCE} u-boot.its 642b42d2103SJoseph Chen else 643b42d2103SJoseph Chen SPL_FIT_GENERATOR=`sed -n "/CONFIG_SPL_FIT_GENERATOR=/s/CONFIG_SPL_FIT_GENERATOR=//p" .config | tr -d '""'` 644cb718016SJoseph Chen ${SPL_FIT_GENERATOR} ${TEE_ARG} ${COMPRESSION_ARG} ${MCU_ARG} > u-boot.its 645b42d2103SJoseph Chen fi 646b42d2103SJoseph Chen 647b42d2103SJoseph Chen ./tools/mkimage -f u-boot.its -E u-boot.itb 648b42d2103SJoseph Chen echo "pack u-boot.itb okay! Input: ${INI}" 649b42d2103SJoseph Chen echo 650b42d2103SJoseph Chen} 651b42d2103SJoseph Chen 652b42d2103SJoseph Chenfunction pack_spl_loader_image() 653b42d2103SJoseph Chen{ 654b42d2103SJoseph Chen rm *_loader_*.bin -f 655b42d2103SJoseph Chen cd ${RKBIN} 656b42d2103SJoseph Chen if [ ! -z "${ARG_SPL_BIN}" -a ! -z "${ARG_TPL_BIN}" ]; then 657b42d2103SJoseph Chen ${SCRIPT_SPL} --ini ${INI_LOADER} --tpl ${SRCTREE}/${ARG_TPL_BIN} --spl ${SRCTREE}/${ARG_SPL_BIN} 658b42d2103SJoseph Chen elif [ ! -z "${ARG_TPL_BIN}" ]; then 659b42d2103SJoseph Chen ${SCRIPT_SPL} --ini ${INI_LOADER} --tpl ${SRCTREE}/${ARG_TPL_BIN} 660b42d2103SJoseph Chen else 661b42d2103SJoseph Chen ${SCRIPT_SPL} --ini ${INI_LOADER} --spl ${SRCTREE}/${ARG_SPL_BIN} 662b42d2103SJoseph Chen fi 663b42d2103SJoseph Chen cd - 664b42d2103SJoseph Chen if [ -f ${RKBIN}/*_loader_*.bin ]; then 665b42d2103SJoseph Chen mv ${RKBIN}/*_loader_*.bin ./ 666b42d2103SJoseph Chen fi 667b42d2103SJoseph Chen} 668b42d2103SJoseph Chen 669b42d2103SJoseph Chenfunction pack_uboot_image() 670b42d2103SJoseph Chen{ 671b42d2103SJoseph Chen rm u-boot.img u-boot-dtb.img -f 672b42d2103SJoseph Chen LOAD_ADDR=`sed -n "/CONFIG_SYS_TEXT_BASE=/s/CONFIG_SYS_TEXT_BASE=//p" include/autoconf.mk|tr -d '\r'` 673a524b379SJoseph Chen if [ -z "${LOAD_ADDR}" ]; then 674a524b379SJoseph Chen # upstream U-Boot 675a524b379SJoseph Chen LOAD_ADDR=`grep CONFIG_SYS_TEXT_BASE include/generated/autoconf.h | awk '{ print $3 }' | tr -d '\r'` 676a524b379SJoseph Chen fi 677a524b379SJoseph Chen 678a524b379SJoseph Chen if [ -z "${LOAD_ADDR}" ]; then 679a524b379SJoseph Chen echo "ERROR: No CONFIG_SYS_TEXT_BASE for u-boot"; 680a524b379SJoseph Chen exit 1 681a524b379SJoseph Chen fi 682a524b379SJoseph Chen 683b42d2103SJoseph Chen ${SCRIPT_UBOOT} --load ${LOAD_ADDR} ${PLAT_UBOOT_SIZE} 684b42d2103SJoseph Chen} 685b42d2103SJoseph Chen 686b42d2103SJoseph Chenfunction pack_loader_image() 687b42d2103SJoseph Chen{ 688b42d2103SJoseph Chen rm *_loader_*.bin -f 689b42d2103SJoseph Chen cd ${RKBIN} 690b42d2103SJoseph Chen ${SCRIPT_LOADER} --ini ${INI_LOADER} 691b42d2103SJoseph Chen cd - 692b42d2103SJoseph Chen if [ -f ${RKBIN}/*_loader_*.bin ]; then 693b42d2103SJoseph Chen mv ${RKBIN}/*_loader_*.bin ./ 694b42d2103SJoseph Chen fi 695b42d2103SJoseph Chen} 696b42d2103SJoseph Chen 697b42d2103SJoseph Chenfunction pack_trust_image() 698b42d2103SJoseph Chen{ 699b42d2103SJoseph Chen DRAM_BASE=`sed -n "/CONFIG_SYS_SDRAM_BASE=/s/CONFIG_SYS_SDRAM_BASE=//p" include/autoconf.mk|tr -d '\r'` 700b42d2103SJoseph Chen 701b42d2103SJoseph Chen rm trust*.img -f 702b42d2103SJoseph Chen cd ${RKBIN} 703b42d2103SJoseph Chen if [ "${ARM64_TRUSTZONE}" == "y" ]; then 704b42d2103SJoseph Chen ${SCRIPT_ATF} --ini ${INI_TRUST} ${PLAT_SHA} ${PLAT_RSA} ${PLAT_TRUST_SIZE} 705b42d2103SJoseph Chen else 706b42d2103SJoseph Chen ${SCRIPT_TOS} --ini ${INI_TRUST} --base ${DRAM_BASE} ${PLAT_TRUST_SIZE} 707b42d2103SJoseph Chen fi 708b42d2103SJoseph Chen cd - 709b42d2103SJoseph Chen if [ -f ${RKBIN}/trust*.img ]; then 710b42d2103SJoseph Chen mv ${RKBIN}/trust*.img ./ 711b42d2103SJoseph Chen fi 712b42d2103SJoseph Chen} 713b42d2103SJoseph Chen 714b42d2103SJoseph Chenfunction pack_fit_image() 715b42d2103SJoseph Chen{ 716b42d2103SJoseph Chen # If we don't plan to have uboot in uboot.img in case of: SPL => Trust => Kernel, creating empty files. 717b42d2103SJoseph Chen if [ "${ARG_NO_UBOOT}" == "y" ]; then 718b42d2103SJoseph Chen rm u-boot-nodtb.bin u-boot.dtb -f 719b42d2103SJoseph Chen touch u-boot-nodtb.bin u-boot.dtb 720b42d2103SJoseph Chen fi 721b42d2103SJoseph Chen 722b42d2103SJoseph Chen # Verified boot=1: must build both uboot.img and boot.img 723b42d2103SJoseph Chen # Verified boot=0: build uboot.img 724b42d2103SJoseph Chen if grep -q '^CONFIG_FIT_SIGNATURE=y' .config ; then 725ae33e311SJoseph Chen ${SCRIPT_FIT} --uboot-itb --boot-itb ${ARG_LIST_FIT} 726b42d2103SJoseph Chen else 727b42d2103SJoseph Chen rm uboot.img trust*.img -f 728ae33e311SJoseph Chen ${SCRIPT_FIT} --uboot-itb --no-vboot --no-rebuild ${ARG_LIST_FIT} 729b42d2103SJoseph Chen echo "pack uboot.img okay! Input: ${INI_TRUST}" 730b42d2103SJoseph Chen fi 731b42d2103SJoseph Chen} 732b42d2103SJoseph Chen 733b6e67ca8SJoseph Chenfunction handle_args_late() 734b6e67ca8SJoseph Chen{ 735b42b4e11SJoseph Chen ARG_LIST_FIT="${ARG_LIST_FIT} --ini-trust ${INI_TRUST} --ini-loader ${INI_LOADER}" 736b6e67ca8SJoseph Chen} 737b6e67ca8SJoseph Chen 738b42d2103SJoseph Chenfunction clean_files() 739de9a6cd2SJoseph Chen{ 740b42d2103SJoseph Chen rm spl/u-boot-spl.dtb tpl/u-boot-tpl.dtb u-boot.dtb -f 741b42d2103SJoseph Chen rm spl/u-boot-spl tpl/u-boot-tpl u-boot -f 7428f53a15cSJoseph Chen} 7438f53a15cSJoseph Chen 7448f53a15cSJoseph Chenfunction pack_images() 7458f53a15cSJoseph Chen{ 746b42d2103SJoseph Chen if [ "${ARG_NO_PACK}" == "y" ]; then 747b42d2103SJoseph Chen return 748b42d2103SJoseph Chen fi 749b42d2103SJoseph Chen 750b42d2103SJoseph Chen if [ "${PLAT_TYPE}" == "RKFW" ]; then 7518f53a15cSJoseph Chen pack_uboot_image 7528f53a15cSJoseph Chen pack_trust_image 7538f53a15cSJoseph Chen pack_loader_image 754b42d2103SJoseph Chen elif [ "${PLAT_TYPE}" == "FIT" ]; then 755b42b4e11SJoseph Chen pack_fit_image ${ARG_LIST_FIT} 7568f53a15cSJoseph Chen fi 7578f53a15cSJoseph Chen} 7588f53a15cSJoseph Chen 7597c3ca500SJoseph Chenfunction finish() 76030b04afcSJoseph Chen{ 76130b04afcSJoseph Chen echo 762b42b4e11SJoseph Chen if [ "${ARG_BOARD}" == "" ]; then 7635202fe1fSJoseph Chen echo "Platform ${RKCHIP_LABEL} is build OK, with exist .config" 76430b04afcSJoseph Chen else 765124e8c09SJoseph Chen echo "Platform ${RKCHIP_LABEL} is build OK, with new .config(${MAKE_CMD})" 76630b04afcSJoseph Chen fi 76730b04afcSJoseph Chen} 76830b04afcSJoseph Chen 769b768b915SJoseph Chenprocess_args $* 770cd7ae718SJoseph Chenprepare 7717c2526e9SJoseph Chenselect_toolchain 772de440615SJoseph Chenselect_chip_info 77341cf5e5aSJoseph Chenfixup_platform_configure 774b768b915SJoseph Chenselect_ini_file 775b6e67ca8SJoseph Chenhandle_args_late 7760ff0e214SJoseph Chensub_commands 7778f53a15cSJoseph Chenclean_files 778b42b4e11SJoseph Chenmake CROSS_COMPILE=${TOOLCHAIN_GCC} all --jobs=${JOB} 7798f53a15cSJoseph Chenpack_images 78030b04afcSJoseph Chenfinish 781