1#!/bin/bash 2# 3# Copyright (c) 2020 Rockchip Electronics Co., Ltd 4# 5# SPDX-License-Identifier: GPL-2.0 6# 7 8srctree=$PWD 9 10function help() 11{ 12 echo 13 echo "Description:" 14 echo " Process args for all rockchip fit generator script, and providing variables for it's caller" 15 echo 16 echo "Usage:" 17 echo " $0 [args]" 18 echo 19 echo "[args]:" 20 echo "--------------------------------------------------------------------------------------------" 21 echo " arg type output variable description" 22 echo "--------------------------------------------------------------------------------------------" 23 echo " -c [comp] ==> <string> COMPRESSION set compression: \"none\", \"gzip\"" 24 echo " -m0 [offset] ==> <hex> MCU0_LOAD_ADDR set mcu0.bin load address" 25 echo " -m1 [offset] ==> <hex> MCU1_LOAD_ADDR set mcu1.bin load address" 26 echo " -m2 [offset] ==> <hex> MCU2_LOAD_ADDR set mcu2.bin load address" 27 echo " -m3 [offset] ==> <hex> MCU3_LOAD_ADDR set mcu3.bin load address" 28 echo " -m4 [offset] ==> <hex> MCU4_LOAD_ADDR set mcu4.bin load address" 29 echo " -l0 [offset] ==> <hex> LOAD0_LOAD_ADDR set load0.bin load address" 30 echo " -l1 [offset] ==> <hex> LOAD1_LOAD_ADDR set load1.bin load address" 31 echo " -l2 [offset] ==> <hex> LOAD2_LOAD_ADDR set load2.bin load address" 32 echo " -l3 [offset] ==> <hex> LOAD3_LOAD_ADDR set load3.bin load address" 33 echo " -l4 [offset] ==> <hex> LOAD4_LOAD_ADDR set load4.bin load address" 34 echo " -t [offset] ==> <hex> TEE_LOAD_ADDR set tee.bin load address" 35 echo " (none) ==> <hex> UBOOT_LOAD_ADDR set U-Boot load address" 36 echo " (none) ==> <string> ARCH set arch: \"arm\", \"arm64\"" 37 echo 38} 39 40DRAM_BASE=`sed -n "/CONFIG_SYS_SDRAM_BASE=/s/CONFIG_SYS_SDRAM_BASE=//p" ${srctree}/include/autoconf.mk|tr -d '\r'` 41 42if [ $# -eq 1 ]; then 43 # default 44 TEE_OFFSET=0x08400000 45 TEE_LOAD_ADDR="0x"$(echo "obase=16;$((DRAM_BASE+TEE_OFFSET))"|bc) 46else 47 # args 48 while [ $# -gt 0 ]; do 49 case $1 in 50 --help|-help|help|--h|-h) 51 help 52 exit 53 ;; 54 -c) 55 COMPRESSION=$2 56 shift 2 57 ;; 58 -i0) 59 INIT0_LOAD_ADDR=$2 60 shift 2 61 ;; 62 -m0) 63 MCU0_LOAD_ADDR=$2 64 shift 2 65 ;; 66 -m1) 67 MCU1_LOAD_ADDR=$2 68 shift 2 69 ;; 70 -m2) 71 MCU2_LOAD_ADDR=$2 72 shift 2 73 ;; 74 -m3) 75 MCU3_LOAD_ADDR=$2 76 shift 2 77 ;; 78 -m4) 79 MCU4_LOAD_ADDR=$2 80 shift 2 81 ;; 82 -l0) 83 LOAD0_LOAD_ADDR=$2 84 shift 2 85 ;; 86 -l1) 87 LOAD1_LOAD_ADDR=$2 88 shift 2 89 ;; 90 -l2) 91 LOAD2_LOAD_ADDR=$2 92 shift 2 93 ;; 94 -l3) 95 LOAD3_LOAD_ADDR=$2 96 shift 2 97 ;; 98 -l4) 99 LOAD4_LOAD_ADDR=$2 100 shift 2 101 ;; 102 -t) 103 TEE_LOAD_ADDR=$2 104 # Compatible leagcy: Offset 105 if ((TEE_LOAD_ADDR < DRAM_BASE)); then 106 TEE_LOAD_ADDR="0x"$(echo "obase=16;$((DRAM_BASE+$2))"|bc) 107 fi 108 shift 2 109 ;; 110 *) 111 echo "Invalid arg: $1" 112 help 113 exit 1 114 ;; 115 esac 116 done 117fi 118 119if ! grep -q '^CONFIG_FIT_OMIT_UBOOT=y' .config ; then 120 UBOOT_LOAD_ADDR=`sed -n "/CONFIG_SYS_TEXT_BASE=/s/CONFIG_SYS_TEXT_BASE=//p" ${srctree}/include/autoconf.mk|tr -d '\r'` 121fi 122 123# ARCH 124U_ARCH="arm" 125if grep -q '^CONFIG_ARM64=y' .config ; then 126 ARCH="arm64" 127 U_ARCH="arm64" 128elif grep -q '^CONFIG_ARM64_BOOT_AARCH32=y' .config ; then 129 ARCH="arm64" 130else 131 ARCH="arm" 132fi 133