blob: 7322691381106eb4c86669f476462329d5a993b2 [file] [log] [blame]
Xiaobo Gu059502e2017-01-12 21:20:39 +08001#!/bin/bash
2#
3# author: xiaobo.gu@amlogic.com
4# 2016.09.28
5# 2016.12.01-2016.12.20 Update for bootloader repo
Xiaobo Gu9dd3f3f2017-05-26 17:58:57 +08006# 2017.05.20-2017.05.26 Update for txlx and ATF1.3
Xiaobo Gu059502e2017-01-12 21:20:39 +08007
Xiaobo Gu9dd3f3f2017-05-26 17:58:57 +08008# include compile check script
9source fip/check_compile.sh
xiaobo gue6c46862018-01-10 18:58:09 +080010source fip/variables.sh
11source fip/lib.sh
12source fip/build_bl2.sh
13source fip/build_bl30.sh
14source fip/build_bl31.sh
15source fip/build_bl32.sh
16source fip/build_bl33.sh
17source fip/build_bl40.sh
dongqing.li154e45e2021-11-22 07:47:38 +000018source fip/check_coverity.sh
Xiaobo Gu9dd3f3f2017-05-26 17:58:57 +080019
wenbo.wanga7e45942023-09-27 19:39:50 +080020declare -a COMPILE_PARA_LIST=("--h" "--help" "--config" "--chip-varient" "--check-compile" \
21 "--cov" "--cov-high" "--enable-ramdump" "--uasan" "--enable-bl33z" \
22 "--disable-bl33z" "--compress-bl2e" "--chipid" "--build-version" \
23 "--ab-update" "--hdmitx-only" "--clean"\
24 "--distclean" "--bl2" "--bl2e" "--bl2x" "--bl30" "--bl31" \
25 "--bl32" "--bl40" "--ddr-fip" "--sign-bl40" "--update-bl2" \
26 "--update-bl2e" "--update-bl2x" "--update-ddr-fip" "--update-bl30" \
27 "--update-bl31" "--update-bl32" "--bl2-branch" "--ddrfw" \
28 "--jenkins-sign" "--former-sign" "--build-unsign" "--build-nogit" \
29 "--nasc_nagra_tier_1" "--cas" "--systemroot" "--avb2" "--vab" \
30 "--fastboot-write" "--signpipe" "--avb2-recovery" "--patch" "--gpt" \
31 )
32
Bo Lv78837da2020-12-16 04:13:04 -050033function parse_bl33_global_config() {
34 local oldifs="$IFS"
35 IFS=$'\n'
36
37 BL33_GLOBAL_CONFIG=
38 for line in `cat ${SOURCE_FILE}`; do
39 # add any global configs which define in BL33 and need
40 # to used under bl2/bl2x/bl2e/bl31/....
41 if [[ "${line}" == "CONFIG_PXP_"* ]]; then
42 tmp=${line%=*} # delete =y
43 BL33_GLOBAL_CONFIG="${BL33_GLOBAL_CONFIG}"" -D""${tmp}"
44 fi
Tao Zeng68361e62021-01-06 17:29:40 +080045 if [[ "${line}" == "CONFIG_DDR_FULL_FW"* ]]; then
46 tmp=${line%=*} # delete =y
47 BL33_GLOBAL_CONFIG="${BL33_GLOBAL_CONFIG}"" -D""${tmp}"
48 fi
Bo Lv78837da2020-12-16 04:13:04 -050049 done
50 export BL33_GLOBAL_CONFIG
51 echo "==== BL33 GLOBAL CONFIG: ${BL33_GLOBAL_CONFIG} ==="
52 IFS="$oldifs"
53}
Xiaobo Gu059502e2017-01-12 21:20:39 +080054
xiaobo gue6c46862018-01-10 18:58:09 +080055function init_variable_early() {
56 # source uboot pre-build configs
57 if [ ! -e ${SOURCE_FILE} ]; then
58 echo "${SOURCE_FILE} doesn't exist!"
59 cd ${MAIN_FOLDER}
60 exit -1
61 else
62 source ${SOURCE_FILE} &> /dev/null # ignore warning/error
63 fi
Xiaobo Gu9dd3f3f2017-05-26 17:58:57 +080064
xiaobo gue6c46862018-01-10 18:58:09 +080065 CUR_SOC=${CONFIG_SYS_SOC}
Honglin Zhange358be42020-08-12 02:16:02 -040066 BL30_SELECT=${CONFIG_BL30_SELECT}
Xiaobo Gu059502e2017-01-12 21:20:39 +080067
xiaobo gue6c46862018-01-10 18:58:09 +080068 if [ "y" == "${CONFIG_NEED_BL32}" ]; then
69 BLX_NEEDFUL[3]="true"
70 fi
Xiaobo Gu9dd3f3f2017-05-26 17:58:57 +080071
xiaobo gue6c46862018-01-10 18:58:09 +080072 # export variables
73 #export FIP_BUILD_FOLDER
74 #export CUR_SOC
Xiaobo Gu059502e2017-01-12 21:20:39 +080075
xiaobo gue6c46862018-01-10 18:58:09 +080076 export_variables
Xiaobo Gu059502e2017-01-12 21:20:39 +080077}
78
xiaobo gue6c46862018-01-10 18:58:09 +080079function init_variable_late() {
80 # after uboot build, source configs
xiaobo gua64f93c2018-07-31 21:27:43 +080081 local CONFIG_FILE_TMP="${MAIN_FOLDER}/autoconf"
82 local STR_INVALID="option"
83 if [ ! -e ${CONFIG_FILE} ]; then
84 echo "${CONFIG_FILE} doesn't exist!"
85 cd ${MAIN_FOLDER}
86 exit -1
87 else
88 # workaround for source file error
89 while read LINE
90 do
91 #echo $LINE
92 # ignore "*(option)*" lines
93 if [[ ${LINE} =~ ${STR_INVALID} ]]; then
94 echo "ignore: $LINE"
95 else
96 #echo "LINE: ${LINE}"
97 echo "$LINE" >> "${CONFIG_FILE_TMP}"
98 fi
99 done < ${CONFIG_FILE}
100 source "${CONFIG_FILE_TMP}" &> /dev/null
101 rm ${CONFIG_FILE_TMP}
102 fi
dongqing.lie538ef82022-08-24 15:11:31 +0800103 if [ "y" == "${CONFIG_SUPPORT_CUSTOMER_BOARD}" ]; then
xiaobo gue6c46862018-01-10 18:58:09 +0800104 BOARD_DIR="customer/board/${CONFIG_SYS_BOARD}"
105 else
106 BOARD_DIR="${CONFIG_BOARDDIR}"
107 fi
xiaobo gua64f93c2018-07-31 21:27:43 +0800108 export BOARD_DIR
Xiaobo Gu059502e2017-01-12 21:20:39 +0800109}
110
111function build_blx_src() {
xiaobo gue6c46862018-01-10 18:58:09 +0800112 # compile $name $src_folder $bin_folder $soc
113 local name=$1
114 local src_folder=$2
115 local bin_folder=$3
116 local soc=$4
117 #dbg "compile - name: ${name}, src_folder: ${src_folder}, bin_folder: ${bin_folder}, soc: ${soc}"
Bo Lv78837da2020-12-16 04:13:04 -0500118
xiaobo gu8a3907e2019-05-22 11:46:49 +0800119 if [ $name == ${BLX_NAME_GLB[0]} ]; then
xiaobo gue6c46862018-01-10 18:58:09 +0800120 # bl2
121 build_bl2 $src_folder $bin_folder $soc
Honglin Zhang637c38b2020-06-28 02:16:39 -0400122 elif [ $name == ${BLX_NAME_GLB[5]} ]; then
123 # bl2e
124 build_bl2e $src_folder $bin_folder $soc
125 elif [ $name == ${BLX_NAME_GLB[6]} ]; then
126 # bl2x
127 build_bl2x $src_folder $bin_folder $soc
xiaobo gu8a3907e2019-05-22 11:46:49 +0800128 elif [ $name == ${BLX_NAME_GLB[1]} ]; then
xiaobo gue6c46862018-01-10 18:58:09 +0800129 # bl30
130 build_bl30 $src_folder $bin_folder $soc
xiaobo gu8a3907e2019-05-22 11:46:49 +0800131 elif [ $name == ${BLX_NAME_GLB[2]} ]; then
xiaobo gue6c46862018-01-10 18:58:09 +0800132 # bl31
133 # some soc use v1.3
benlong.zhou8ecb5ca2023-01-28 19:32:15 +0800134 # some soc use v2.7
135 local version
xiaobo gue6c46862018-01-10 18:58:09 +0800136 check_bl31_ver $soc
benlong.zhou8ecb5ca2023-01-28 19:32:15 +0800137 version=$?
138 #echo "switch_bl31 version=${version}"
139
140 if [ ${version} == 2 ]; then
Meng yue91d80d2023-03-08 10:26:21 +0800141 echo "check bl31 ver: use v2.7"
142 build_bl31_v2_7 $src_folder $bin_folder $soc
benlong.zhou8ecb5ca2023-01-28 19:32:15 +0800143 elif [ ${version} == 1 ]; then
144 echo "check bl31 ver: use v1.3"
145 build_bl31_v1_3 $src_folder $bin_folder $soc
146 else
147 echo "check bl31 ver: use v1.0"
148 build_bl31 $src_folder $bin_folder $soc
Honglin Zhang637c38b2020-06-28 02:16:39 -0400149 fi
xiaobo gu8a3907e2019-05-22 11:46:49 +0800150 elif [ $name == ${BLX_NAME_GLB[3]} ]; then
xiaobo gue8bf44f2019-03-18 14:23:36 +0800151 # control flow for jenkins patchbuild
152 if [ "$BUILD_TYPE" != "AOSP" ]; then
153 # bl32
154 if [ "y" == "${CONFIG_NEED_BL32}" ]; then
155 build_bl32 $src_folder $bin_folder $soc
156 fi
xiaobo gue6c46862018-01-10 18:58:09 +0800157 fi
158 fi
Xiaobo Gu059502e2017-01-12 21:20:39 +0800159}
160
161function build_blx() {
xiaobo gue6c46862018-01-10 18:58:09 +0800162 # build each blx
Xiaobo Gu9dd3f3f2017-05-26 17:58:57 +0800163
xiaobo gue6c46862018-01-10 18:58:09 +0800164 # switch bl31 version
165 switch_bl31 ${CUR_SOC}
Xiaobo Gu9dd3f3f2017-05-26 17:58:57 +0800166
xiaobo gue6c46862018-01-10 18:58:09 +0800167 # get version of each blx
168 get_versions
Xiaobo Gu9dd3f3f2017-05-26 17:58:57 +0800169
Bo Lv78837da2020-12-16 04:13:04 -0500170 # parse bl33 global configs, so BL33 config in .config/config.h
171 # can be used for BL2/2e/2x/31...
172 parse_bl33_global_config $@
173
xiaobo gue6c46862018-01-10 18:58:09 +0800174 # build loop
175 for loop in ${!BLX_NAME[@]}; do
Honglin Zhang805bd102020-02-14 18:23:23 +0800176 dbg "BIN_PATH[${loop}]: ${BIN_PATH[$loop]}"
177 if [ "null" == ${BIN_PATH[$loop]} ]; then
xiaobo gue6c46862018-01-10 18:58:09 +0800178 get_blx_bin ${loop}
Honglin Zhang805bd102020-02-14 18:23:23 +0800179 elif [ "source" == ${BIN_PATH[$loop]} ]; then
xiaobo gue6c46862018-01-10 18:58:09 +0800180 dbg "Build blx source code..."
Honglin Zhang805bd102020-02-14 18:23:23 +0800181 build_blx_src ${BLX_NAME[$loop]} ${BLX_SRC_FOLDER[$loop]} ${FIP_BUILD_FOLDER} ${CUR_SOC}
xiaobo gue6c46862018-01-10 18:58:09 +0800182 else
Honglin Zhang805bd102020-02-14 18:23:23 +0800183 if [ ! -e ${BIN_PATH[$loop]} ]; then
184 echo "Error: ${BIN_PATH[$loop]} doesn't exist... abort"
xiaobo gue6c46862018-01-10 18:58:09 +0800185 exit -1
186 else
Honglin Zhanga5041212020-03-05 21:11:31 +0800187 if [ "y" == "${CONFIG_FIP_IMG_SUPPORT}" ] && \
188 [ -n "${BLX_IMG_NAME[$loop]}" ] && \
189 [ "NULL" != "${BLX_IMG_NAME[$loop]}" ]; then
190 cp ${BIN_PATH[$loop]} ${FIP_BUILD_FOLDER}/${BLX_IMG_NAME[$loop]} -f
Zhongfu Luoa1e540c2020-07-17 15:44:37 +0800191 elif [[ -n "${BLX_IMG_NAME[$loop]}" && "NULL" != "${BLX_BIN_NAME[$loop]}" ]]; then
Honglin Zhanga5041212020-03-05 21:11:31 +0800192 cp ${BIN_PATH[$loop]} ${FIP_BUILD_FOLDER}/${BLX_BIN_NAME[$loop]} -f
193 else
194 cp ${BIN_PATH[$loop]} ${FIP_BUILD_FOLDER} -f
195 fi
196
Honglin Zhang805bd102020-02-14 18:23:23 +0800197 echo "Get ${BLX_NAME[$loop]} from ${BIN_PATH[$loop]}... done"
198 fi
199 fi
200
201 # start to check the blx firmware
202 if [ "bl32" == "${BLX_NAME[$loop]}" ]; then
Honglin Zhanga5041212020-03-05 21:11:31 +0800203 # no bl32/bin are exported for users
Honglin Zhang805bd102020-02-14 18:23:23 +0800204 check_bypass=y
205 else
206 check_bypass=n
207 fi
208
Zhongfu Luo3a6e5342020-12-27 13:11:54 +0800209 if [ "$ADVANCED_BOOTLOADER" == "1" ]; then
Zhongfu Luo7bd99c92020-07-14 19:37:52 +0800210 check_bypass=y
211 fi
212
Honglin Zhang805bd102020-02-14 18:23:23 +0800213 if [ "y" != "${check_bypass}" ]; then
214 if [ "NULL" != "${BLX_BIN_NAME[$loop]}" ] && \
Honglin Zhanga5041212020-03-05 21:11:31 +0800215 [ -n "${BLX_BIN_NAME[$loop]}" ] && \
Honglin Zhang0b81ed72020-03-07 10:38:35 +0800216 [ "NULL" == "${BLX_IMG_NAME[$loop]}" ] && \
Honglin Zhang805bd102020-02-14 18:23:23 +0800217 [ ! -f ${FIP_BUILD_FOLDER}/${BLX_BIN_NAME[$loop]} ]; then
Honglin Zhanga5041212020-03-05 21:11:31 +0800218 echo "Error ${BLX_NAME[$loop]}: ${FIP_BUILD_FOLDER}/${BLX_BIN_NAME[$loop]} doesn't exit... abort"
Honglin Zhang805bd102020-02-14 18:23:23 +0800219 exit -1
220 fi
221 if [ "y" == "${CONFIG_FIP_IMG_SUPPORT}" ] && \
222 [ -n "${BLX_IMG_NAME[$loop]}" ] && \
223 [ "NULL" != "${BLX_IMG_NAME[$loop]}" ] && \
224 [ ! -f ${FIP_BUILD_FOLDER}/${BLX_IMG_NAME[$loop]} ]; then
Honglin Zhanga5041212020-03-05 21:11:31 +0800225 echo "Error ${BLX_NAME[$loop]}: ${FIP_BUILD_FOLDER}/${BLX_IMG_NAME[$loop]} doesn't exit... abort"
Honglin Zhang805bd102020-02-14 18:23:23 +0800226 exit -1
xiaobo gue6c46862018-01-10 18:58:09 +0800227 fi
228 fi
229 done
230 return
Xiaobo Gu059502e2017-01-12 21:20:39 +0800231}
232
233copy_bootloader() {
xiaobo gue6c46862018-01-10 18:58:09 +0800234 mkdir -p ${BUILD_FOLDER}
Haixiang Baof008dc12019-05-23 18:47:15 +0800235 cp ${FIP_BUILD_FOLDER}u-boot.bin* ${BUILD_FOLDER}
xiaobo gue6c46862018-01-10 18:58:09 +0800236 if [ "y" == "${CONFIG_AML_CRYPTO_IMG}" ]; then
237 cp ${FIP_BUILD_FOLDER}boot.img.encrypt ${BUILD_FOLDER}boot.img.encrypt
238 fi
dongqing.lic6275642021-12-17 19:15:52 +0800239
240 if [ ! -z ${CONFIG_CHIPID_SUPPORT} ]; then
241 mv ${BUILD_FOLDER}/u-boot.bin.signed ${BUILD_FOLDER}/u-boot.bin.${CONFIG_RAMDUMP_CHIPID}.signed
242 mv ${BUILD_FOLDER}/u-boot.bin.sd.bin.signed ${BUILD_FOLDER}/u-boot.bin.${CONFIG_RAMDUMP_CHIPID}.sd.bin.signed
243 mv ${BUILD_FOLDER}/u-boot.bin.usb.signed ${BUILD_FOLDER}/u-boot.bin.${CONFIG_RAMDUMP_CHIPID}.usb.signed
244 fi
Xiaobo Gu059502e2017-01-12 21:20:39 +0800245}
246
247function update_bin_path() {
xiaobo gu8a3907e2019-05-22 11:46:49 +0800248 for loop in ${!BLX_NAME[@]}; do
249 if [ "${BLX_NAME[$loop]}" == "${BLX_NAME_GLB[$1]}" ]; then
Honglin Zhangcd8a9fc2019-11-22 17:52:55 +0800250 dbg "Update BIN_PATH[$loop]=$2"
xiaobo gu8a3907e2019-05-22 11:46:49 +0800251 BIN_PATH[$loop]=$2
Honglin Zhangcd8a9fc2019-11-22 17:52:55 +0800252 break
xiaobo gu8a3907e2019-05-22 11:46:49 +0800253 fi
254 done
255}
Xiaobo Gu059502e2017-01-12 21:20:39 +0800256
257function clean() {
xiaobo gue6c46862018-01-10 18:58:09 +0800258 echo "Clean up"
xiaobo gu0c2598b2019-06-28 11:22:17 +0800259 if [ -e ${BL33_PATH1} ]; then
260 cd ${MAIN_FOLDER}
261 cd ${BL33_PATH1}
262 make distclean
263 fi
264 if [ -e ${BL33_PATH2} ]; then
265 cd ${MAIN_FOLDER}
266 cd ${BL33_PATH2}
267 make distclean
268 fi
Bo Lv26b21672023-01-16 01:50:15 +0000269 if [ -e ${BL33_PATH3} ]; then
270 cd ${MAIN_FOLDER}
271 cd ${BL33_PATH3}
272 make distclean
273 fi
xiaobo gue6c46862018-01-10 18:58:09 +0800274 cd ${MAIN_FOLDER}
275 rm ${FIP_BUILD_FOLDER} -rf
xiaobo gu3ce64072018-03-06 17:20:44 +0800276 rm ${BUILD_FOLDER}/* -rf
Haixiang Baof008dc12019-05-23 18:47:15 +0800277 mkdir -p ${BUILD_FOLDER}
xiaobo gue6c46862018-01-10 18:58:09 +0800278 return
Xiaobo Gu059502e2017-01-12 21:20:39 +0800279}
280
281function build() {
xiaobo gue6c46862018-01-10 18:58:09 +0800282 # *************************************************
283 # IMPORTANT!!!!
284 # don't change sequence of following function call
285 # *************************************************
286 clean
287
288 # pre-build, get .config defines
Cheng Wang23dcdb062022-02-25 15:33:03 +0800289 if [ ! $BOARD_COMPILE_HDMITX_ONLY ]; then
290 echo "export BOARD_COMPILE_HDMITX_ONLY=null"
291 export BOARD_COMPILE_HDMITX_ONLY=null
292 fi
xiaobo gue6c46862018-01-10 18:58:09 +0800293 pre_build_uboot $@
294
295 # variable init depends on uboot .config
296 init_variable_early $@
297
298 # must source under main function, all sub function can use these variables
299 # but if source in sub-function, only sub-function(or sub-sub..) can use them
300 source ${FIP_FOLDER}${CUR_SOC}/variable_soc.sh
301
Honglin Zhang694f5342019-12-09 14:54:40 +0800302 # compile fip tools for ddr_parse and map_tool
303 prepare_tools
304
xiaobo gue6c46862018-01-10 18:58:09 +0800305 # source soc package script
306 source ${FIP_FOLDER}${CUR_SOC}/build.sh
307
308 # update bin path, use bin.git or user defined or source code
309 bin_path_parser $@
xiaobo gude8a46a2018-03-05 21:41:54 +0800310 #bin_path_update $@
xiaobo gue6c46862018-01-10 18:58:09 +0800311
312 # build bl33/bl301..etc
Liang Ji51eee082019-05-20 14:01:24 +0800313 if [ ! $CONFIG_SYSTEM_AS_ROOT ]; then
Xindong Xu33eda2d2018-09-25 18:52:38 +0800314 CONFIG_SYSTEM_AS_ROOT=null
315 fi
Liang Ji51eee082019-05-20 14:01:24 +0800316 if [ ! $CONFIG_AVB2 ]; then
Xindong Xu33eda2d2018-09-25 18:52:38 +0800317 CONFIG_AVB2=null
318 fi
ruixuan.li68468212023-05-10 15:25:08 +0800319 if [ ! $CONFIG_AML_GPT ]; then
320 CONFIG_AML_GPT=null
321 fi
Xindong Xu9cf4afc2020-07-24 17:10:21 +0800322 if [ ! $CONFIG_CMD_BOOTCTOL_VAB ]; then
323 CONFIG_CMD_BOOTCTOL_VAB=null
Xindong Xua75ab9b2020-05-25 15:54:01 +0800324 fi
Xindong Xuf010cc32022-05-27 11:04:43 +0800325 if [ ! $CONFIG_FASTBOOT_WRITING_CMD ]; then
326 CONFIG_FASTBOOT_WRITING_CMD=null
327 fi
Matthew Shyu9cf81ee2022-08-30 00:09:36 -0700328 if [ ! $CONFIG_AVB2_RECOVERY ]; then
329 CONFIG_AVB2_RECOVERY=null
330 fi
hao.qi60f37a22022-10-08 16:41:29 +0800331 if [ ! $CONFIG_TESTKEY ]; then
332 CONFIG_TESTKEY=null
333 fi
ruixuan.li68468212023-05-10 15:25:08 +0800334
335 build_uboot ${CONFIG_SYSTEM_AS_ROOT} ${CONFIG_AVB2} ${CONFIG_CMD_BOOTCTOL_VAB} ${CONFIG_FASTBOOT_WRITING_CMD} ${CONFIG_AVB2_RECOVERY} ${CONFIG_TESTKEY} ${CONFIG_AB_UPDATE} ${CONFIG_AML_GPT}
xiaobo gue6c46862018-01-10 18:58:09 +0800336
337 # source other configs after uboot compile
338 init_variable_late
339
340 # bl2/bl30/bl31..etc, build or copy from bin.git
341 build_blx $@
342
qi.wange123e7e2022-06-24 18:39:17 +0800343 if [ "1" == "${CONFIG_NASC_NAGRA_TIER_1}" ]; then
344 # combine bl2f.bin with bl33(uboot)
345 combine_bl2f_with_bl33
346 fi
347
xiaobo gue6c46862018-01-10 18:58:09 +0800348 # cp bl33(uboot)
349 copy_bl33
350
351 # cp other firmwares(soc related)
352 copy_other_soc
353
Zhongfu Luo6c2587f2019-05-15 16:27:50 +0800354 # make build directory
355 mkdir -p ${BUILD_FOLDER}
356
xiaobo gue6c46862018-01-10 18:58:09 +0800357 # package final bootloader
358 package
359
Zhongfu Luofd0ea3e2018-11-30 14:15:16 +0800360 if [ "y" != "${CONFIG_AML_SIGNED_UBOOT}" ]; then
361 # copy bootloader to main folder
362 copy_bootloader
363 fi
Xiaobo Gu059502e2017-01-12 21:20:39 +0800364}
365
366function usage() {
367 cat << EOF
368 Usage:
369 $(basename $0) --help
370
xiaobo gue6c46862018-01-10 18:58:09 +0800371 Bootloader build script.
Xiaobo Gu059502e2017-01-12 21:20:39 +0800372
373 command list:
Xiaobo Gu059502e2017-01-12 21:20:39 +0800374 1. build default uboot:
375 ./$(basename $0) [config_name]
Xiaobo Gu059502e2017-01-12 21:20:39 +0800376
xiaobo gue6c46862018-01-10 18:58:09 +0800377 2. build uboot with specified bl[x].bin
378 ./$(basename $0) [config_name] --bl[x] [path]
Xiaobo Gu059502e2017-01-12 21:20:39 +0800379
xiaobo gue6c46862018-01-10 18:58:09 +0800380 3. build uboot with bl[x]/src source code
Xiaobo Gu059502e2017-01-12 21:20:39 +0800381 ./$(basename $0) [config_name] --update-bl[x]
Xiaobo Gu059502e2017-01-12 21:20:39 +0800382
xiaobo gue6c46862018-01-10 18:58:09 +0800383 4. print config list
384 ./$(basename $0) --config
385
386 5. check compile status with filter(optional)
387 ./$(basename $0) --check-compile [filter]
388
xiaobo gu6368ebe2018-03-29 21:49:25 +0800389 6. update aml ddr fw by source code (for g12a and later use)
390 ./$(basename $0) [config_name] --update-bl2 --ddrfw
391
dongqing.li5849ac72021-11-24 10:49:26 +0000392 7. build uboot with bl[x]/src source code, and run coverity defect
dongqing.li594791b2022-09-30 11:18:01 +0800393 see help info: ./fip/check_coverity.sh -h
xiaobo gue6c46862018-01-10 18:58:09 +0800394
dongqing.lib66a11a2023-03-27 17:18:43 +0800395 8. build uboot with disable full ramdump(enable by default)
396 ./$(basename $0) [config_name] --disable-bl33z
dongqing.lic6275642021-12-17 19:15:52 +0800397
xiaobo gue6c46862018-01-10 18:58:09 +0800398 Example:
399 1) ./$(basename $0) gxb_p200_v1
400 build gxb_p200_v1 config
401
402 2) ./$(basename $0) gxb_p200_v1 --bl2 fip/bl2.bin --bl30 fip/bl30.bin
403 build gxb_p200_v1 with specified bl2.bin and bl30.bin
404
405 3) ./$(basename $0) gxb_p200_v1 --update-bl31 --update-bl2
406 build gxb_p200_v1 with bl31/bl2 source code
407
408 4) ./$(basename $0) --config
409 print config list
410
411 5) ./$(basename $0) --check-compile skt
412 check all skt board compile status
413
414 Remark:
415 bl[x].bin/img priority:
416 1. uboot will use binaries under bl[x]/bin/ folder by default, bl[x] version specified in .repo/manifest.xml
417 2. if you want use your own bl[x].bin, specify path by add "--bl[x] [path]" parameter
418 3. if you want use bl[x].bin by compile source code, please add "--update-bl[x]" parameter
419
Xiaobo Gu059502e2017-01-12 21:20:39 +0800420
421EOF
422 exit 1
423}
424
xiaobo gue6c46862018-01-10 18:58:09 +0800425function print_config() {
426 cat << EOF
427 Usable configs:
428`uboot_config_list`
429EOF
430 exit 1
431}
432
Xiaobo Gu059502e2017-01-12 21:20:39 +0800433function parser() {
xiaobo gue6c46862018-01-10 18:58:09 +0800434 local i=0
435 local argv=()
436 for arg in "$@" ; do
437 argv[$i]="$arg"
438 i=$((i + 1))
439 done
440 i=0
441 while [ $i -lt $# ]; do
442 arg="${argv[$i]}"
xiaobo gu3ce64072018-03-06 17:20:44 +0800443 i=$((i + 1)) # must place here
xiaobo gue6c46862018-01-10 18:58:09 +0800444 case "$arg" in
wenbo.wanga7e45942023-09-27 19:39:50 +0800445 --h|--help)
xiaobo gue6c46862018-01-10 18:58:09 +0800446 usage
447 exit ;;
448 --config)
449 print_config
xiaobo gu3ce64072018-03-06 17:20:44 +0800450 return ;;
Zhongfu Luo019ee832020-11-13 15:56:33 +0800451 # SCRIPT_ARG_CHIPSET_VARIANT is used in source variable
452 # soc, so should add first
453 --chip-varient)
454 SCRIPT_ARG_CHIPSET_VARIANT="${argv[$i]}"
455 export SCRIPT_ARG_CHIPSET_VARIANT
456 continue ;;
xiaobo gue6c46862018-01-10 18:58:09 +0800457 --check-compile)
xiaobo gu66f95292018-01-11 13:38:13 +0800458 check_compile "${argv[@]:$((i))}"
xiaobo gue6c46862018-01-10 18:58:09 +0800459 exit ;;
dongqing.li154e45e2021-11-22 07:47:38 +0000460 --cov|--cov-high)
dongqing.li5849ac72021-11-24 10:49:26 +0000461 PATTERN_PATH="${argv[$i]}"
462 echo "PATTERN_PATH = ${PATTERN_PATH}"
463 export PATTERN_PATH
dongqing.li154e45e2021-11-22 07:47:38 +0000464 check_coverity $@
465 exit ;;
dongqing.lidf6de9c2022-01-03 22:34:01 +0800466 --enable-ramdump)
467 CONFIG_MDUMP_COMPRESS=1
468 export CONFIG_MDUMP_COMPRESS
469 echo "SET CONFIG: CONFIG_MDUMP_COMPRESS"
470 continue ;;
Tao Zeng118bd252022-11-04 13:53:15 +0800471 --uasan)
472 UASAN_DDR_SIZE="${argv[$i]}"
473 if [ -z "${UASAN_DDR_SIZE}" ]; then
474 echo "Must set UASAN_DDR_SIZE when compile uasan"
475 exit -1;
476 fi
477 if [ "${UASAN_DDR_SIZE}" -gt 0 ] 2>/dev/null; then
478 echo "==== UASAN_DDR_SIZE ${UASAN_DDR_SIZE} ===="
479 else
480 echo "UASAN_DDR_SIZE must be a number"
481 exit -1;
482 fi
483 CONFIG_AML_UASAN=1
484 echo "==== BL33 BUILD ENALBED CONFIG_AML_UASAN ===="
485 export CONFIG_AML_UASAN=1
486 export UASAN_DDR_SIZE
487 continue ;;
dongqing.li030579d2022-04-11 10:38:27 +0800488 --enable-bl33z)
489 CONFIG_SUPPORT_BL33Z=1
490 export CONFIG_SUPPORT_BL33Z
dongqing.lib66a11a2023-03-27 17:18:43 +0800491 echo "SET CONFIG: CONFIG_SUPPORT_BL33Z=1"
492 continue ;;
493 --disable-bl33z)
494 CONFIG_SUPPORT_BL33Z=0
495 export CONFIG_SUPPORT_BL33Z
496 echo "SET CONFIG: CONFIG_SUPPORT_BL33Z=0"
dongqing.li030579d2022-04-11 10:38:27 +0800497 continue ;;
dongqing.li1f3354f2022-07-26 15:48:52 +0800498 --compress-bl2e)
499 CONFIG_COMPRESS_BL2E=1
500 export CONFIG_COMPRESS_BL2E
501 echo "SET CONFIG: CONFIG_COMPRESS_BL2E"
502 continue ;;
dongqing.lic6275642021-12-17 19:15:52 +0800503 --chipid)
504 CONFIG_CHIPID_SUPPORT=1
505 export CONFIG_CHIPID_SUPPORT
506 CONFIG_RAMDUMP_CHIPID="${argv[$i]}"
507 export CONFIG_RAMDUMP_CHIPID
dongqing.lidf6de9c2022-01-03 22:34:01 +0800508 echo "SET CHIP ID: ${CONFIG_RAMDUMP_CHIPID}"
dongqing.lic6275642021-12-17 19:15:52 +0800509 continue ;;
Bo Lv26b21672023-01-16 01:50:15 +0000510 --build-version)
511 CONFIG_BUILD_VERSION="${argv[$i]}"
512 if [ -z "${CONFIG_BUILD_VERSION}" ]; then
513 echo "need choice 2015/2019/2023 version"
514 fi
515 CONFIG_CHOICE_BUILD=1
516 export CONFIG_CHOICE_BUILD
517 export CONFIG_BUILD_VERSION
Bo Lv0edfe512022-10-14 21:08:09 +0800518 continue ;;
Bo Lvcefaba42022-11-30 14:36:57 +0800519 --ab-update)
520 CONFIG_AB_UPDATE=y
521 echo "export CONFIG_AB_UPDATE"
522 export CONFIG_AB_UPDATE=y
523 continue ;;
Cheng Wang2e87f4112023-07-06 15:31:52 +0800524 --hdmitx-only)
525 echo "export BOARD_COMPILE_HDMITX_ONLY=true"
526 export BOARD_COMPILE_HDMITX_ONLY=true
527 continue ;;
wenbo.wanga7e45942023-09-27 19:39:50 +0800528 --clean|--distclean)
xiaobo gue6c46862018-01-10 18:58:09 +0800529 clean
530 exit ;;
531 *)
wenbo.wanga7e45942023-09-27 19:39:50 +0800532 local correct_para=0
533 local sub_arg=${arg:0:2}
534 if [ "$sub_arg" == "--" ]; then
535 for arg_loop in ${COMPILE_PARA_LIST[@]}; do
536 if [ "$arg" == "$arg_loop" ]; then
537 correct_para=1
538 break
539 fi
540 done
541 if [ "$correct_para" == "0" ]; then
542 echo "$arg is an invalid parameter!!!"
543 exit 1
544 fi
545 fi ;;
xiaobo gue6c46862018-01-10 18:58:09 +0800546 esac
547 done
dongqing.lib66a11a2023-03-27 17:18:43 +0800548
549 if [ -z $CONFIG_SUPPORT_BL33Z ]; then
550 CONFIG_SUPPORT_BL33Z=1
551 export CONFIG_SUPPORT_BL33Z
552 echo "By default, SET CONFIG_SUPPORT_BL33Z=1"
553 fi
xiaobo gue6c46862018-01-10 18:58:09 +0800554}
555
xiaobo gude8a46a2018-03-05 21:41:54 +0800556function bin_path_update() {
557 # overwrite path in case some git repository doesn't exist
558 for loop in ${!BLX_BIN_FOLDER[@]}; do
559 if [ -ne ${BLX_BIN_FOLDER[$loop]} ]; then
560 dbg "BLX_BIN_FOLDER[$loop] doesn't exist, use src code"
561 update_bin_path $loop "source"
562 fi
563 done
564
565 for loop in ${!BLX_SRC_FOLDER[@]}; do
566 echo ""
567 done
568}
569
xiaobo gue6c46862018-01-10 18:58:09 +0800570function bin_path_parser() {
571 local i=0
572 local argv=()
573 for arg in "$@" ; do
574 argv[$i]="$arg"
575 i=$((i + 1))
576 done
577 i=0
xiaobo gu6368ebe2018-03-29 21:49:25 +0800578 # ddr fw define, co-work with bl2 build script
579 export CONFIG_DDR_FW
xiaobo gue6c46862018-01-10 18:58:09 +0800580 while [ $i -lt $# ]; do
581 arg="${argv[$i]}"
582 i=$((i + 1)) # must pleace here
583 case "$arg" in
584 --bl2)
wenbo.wanga7e45942023-09-27 19:39:50 +0800585 if [ "${argv[@]:$((i))}"x == ""x ] || [ ! -f "${argv[@]:$((i))}" ]; then
586 echo "PATH: ${argv[@]:$((i))} is not exit !!!"
587 exit 1
588 fi
xiaobo gue6c46862018-01-10 18:58:09 +0800589 update_bin_path 0 "${argv[@]:$((i))}"
590 continue ;;
Honglin Zhang637c38b2020-06-28 02:16:39 -0400591 --bl2e)
wenbo.wanga7e45942023-09-27 19:39:50 +0800592 if [ "${argv[@]:$((i))}"x == ""x ] || [ ! -f "${argv[@]:$((i))}" ]; then
593 echo "PATH: ${argv[@]:$((i))} is not exit !!!"
594 exit 1
595 fi
Honglin Zhang637c38b2020-06-28 02:16:39 -0400596 update_bin_path 5 "${argv[@]:$((i))}"
597 continue ;;
Tao Zeng73e504b2021-07-13 12:29:08 +0800598 --bl2e-size)
599 BL2E_PAYLOAD_SIZE="${argv[i]}"
600 export BL2E_PAYLOAD_SIZE
601 continue ;;
Honglin Zhang637c38b2020-06-28 02:16:39 -0400602 --bl2x)
wenbo.wanga7e45942023-09-27 19:39:50 +0800603 if [ "${argv[@]:$((i))}"x == ""x ] || [ ! -f "${argv[@]:$((i))}" ]; then
604 echo "PATH: ${argv[@]:$((i))} is not exit !!!"
605 exit 1
606 fi
Honglin Zhang637c38b2020-06-28 02:16:39 -0400607 update_bin_path 6 "${argv[@]:$((i))}"
608 continue ;;
xiaobo gue6c46862018-01-10 18:58:09 +0800609 --bl30)
wenbo.wanga7e45942023-09-27 19:39:50 +0800610 if [ "${argv[@]:$((i))}"x == ""x ] || [ ! -f "${argv[@]:$((i))}" ]; then
611 echo "PATH: ${argv[@]:$((i))} is not exit !!!"
612 exit 1
613 fi
xiaobo gue6c46862018-01-10 18:58:09 +0800614 update_bin_path 1 "${argv[@]:$((i))}"
615 continue ;;
616 --bl31)
wenbo.wanga7e45942023-09-27 19:39:50 +0800617 if [ "${argv[@]:$((i))}"x == ""x ] || [ ! -f "${argv[@]:$((i))}" ]; then
618 echo "PATH: ${argv[@]:$((i))} is not exit !!!"
619 exit 1
620 fi
xiaobo gue6c46862018-01-10 18:58:09 +0800621 update_bin_path 2 "${argv[@]:$((i))}"
622 continue ;;
623 --bl32)
wenbo.wanga7e45942023-09-27 19:39:50 +0800624 if [ "${argv[@]:$((i))}"x == ""x ] || [ ! -f "${argv[@]:$((i))}" ]; then
625 echo "PATH: ${argv[@]:$((i))} is not exit !!!"
626 exit 1
627 fi
xiaobo gue6c46862018-01-10 18:58:09 +0800628 update_bin_path 3 "${argv[@]:$((i))}"
629 continue ;;
Honglin Zhang637c38b2020-06-28 02:16:39 -0400630 --bl40)
wenbo.wanga7e45942023-09-27 19:39:50 +0800631 if [ "${argv[@]:$((i))}"x == ""x ] || [ ! -f "${argv[@]:$((i))}" ]; then
632 echo "PATH: ${argv[@]:$((i))} is not exit !!!"
633 exit 1
634 fi
Zhongfu Luo3e54c6f2020-02-15 21:30:50 +0800635 update_bin_path 4 "${argv[@]:$((i))}"
636 continue ;;
Tao Zeng68361e62021-01-06 17:29:40 +0800637 --ddr-fip)
wenbo.wanga7e45942023-09-27 19:39:50 +0800638 if [ "${argv[@]:$((i))}"x == ""x ] || [ ! -f "${argv[@]:$((i))}" ]; then
639 echo "PATH: ${argv[@]:$((i))} is not exit !!!"
640 exit 1
641 fi
Tao Zeng68361e62021-01-06 17:29:40 +0800642 DDR_FIP_EXTERN_PATH="${argv[@]:$((i))}"
643 export DDR_FIP_EXTERN_PATH
644 continue ;;
Honglin Zhang637c38b2020-06-28 02:16:39 -0400645 --sign-bl40)
wenbo.wanga7e45942023-09-27 19:39:50 +0800646 if [ "${argv[@]:$((i))}"x == ""x ] || [ ! -f "${argv[@]:$((i))}" ]; then
647 echo "PATH: ${argv[@]:$((i))} is not exit !!!"
648 exit 1
649 fi
Zhongfu Luo3e54c6f2020-02-15 21:30:50 +0800650 update_bin_path 4 "${argv[@]:$((i))}"
651 CONFIG_SIGN_BL40=1
652 continue ;;
xiaobo gue6c46862018-01-10 18:58:09 +0800653 --update-bl2)
654 update_bin_path 0 "source"
655 continue ;;
Honglin Zhang637c38b2020-06-28 02:16:39 -0400656 --update-bl2e)
657 update_bin_path 5 "source"
qi.wange123e7e2022-06-24 18:39:17 +0800658 if [ "1" == "${CONFIG_NASC_NAGRA_TIER_1}" ]; then
659 BL2F_UPDATE_TYPE=y
660 export BL2F_UPDATE_TYPE
661 fi
Tao Zeng332fda22021-07-23 17:52:42 +0800662 if [[ ${argv[i]} == "sto" || ${argv[i]} == "usb" ]]; then
663 BL2E_UPDATE_TYPE=${argv[i]}
664 export BL2E_UPDATE_TYPE
665 fi
Honglin Zhang637c38b2020-06-28 02:16:39 -0400666 continue ;;
667 --update-bl2x)
668 update_bin_path 6 "source"
669 continue ;;
Tao Zeng68361e62021-01-06 17:29:40 +0800670 --update-ddr-fip)
671 GENERATE_DDR_FIP=1
672 export GENERATE_DDR_FIP
673 continue ;;
xiaobo gue6c46862018-01-10 18:58:09 +0800674 --update-bl30)
675 update_bin_path 1 "source"
676 continue ;;
677 --update-bl31)
678 update_bin_path 2 "source"
679 continue ;;
680 --update-bl32)
681 update_bin_path 3 "source"
682 continue ;;
Tao Zengff03b402020-12-09 15:01:44 +0800683 --bl2-branch)
684 BL2_BRANCH_ARG="${argv[i]}"
685 export BL2_BRANCH_ARG
686 continue ;;
xiaobo gu6368ebe2018-03-29 21:49:25 +0800687 --ddrfw)
688 CONFIG_DDR_FW=1
689 export CONFIG_DDR_FW
690 continue ;;
Bo Lv9edb6992021-09-06 11:31:00 +0800691 --jenkins-sign)
692 CONFIG_JENKINS_SIGN=1
693 export CONFIG_JENKINS_SIGN
694 continue ;;
695 --former-sign)
696 CONFIG_FORMER_SIGN=1
697 export CONFIG_FORMER_SIGN
698 continue ;;
Zhongfu Luo43f1a8a2022-03-16 19:13:07 +0800699 --build-unsign)
700 CONFIG_BUILD_UNSIGN=1
701 export CONFIG_BUILD_UNSIGN
702 continue ;;
qi.wange123e7e2022-06-24 18:39:17 +0800703 --nasc_nagra_tier_1)
704 CONFIG_NASC_NAGRA_TIER_1=1
705 export CONFIG_NASC_NAGRA_TIER_1
706 continue;;
Bo Lvc8e2bee2022-09-28 12:48:45 +0800707 --build-nogit)
708 CONFIG_WITHOUT_BIN_GIT=1
709 export CONFIG_WITHOUT_BIN_GIT
710 continue ;;
Honglin Zhang8fa9d152020-02-10 12:29:27 +0800711 --cas)
712 cas="${argv[$i]}"
713 #limit the "--cas xxx" only works for g12a
Lawrence Mok762306e2020-05-13 20:38:08 -0700714 if [ "${CUR_SOC}" == "g12a" ] ||
715 ( [ "${cas}" == "vmx" ] && [ "${CUR_SOC}" == "gxl" ] ); then
Honglin Zhang8fa9d152020-02-10 12:29:27 +0800716 CONFIG_CAS=${cas}
717 fi
Sangho Lee41cedd22023-09-22 13:02:21 +0800718 if [ "${cas}" == "nsk" ]; then
Sangho Lee6be1bf22021-05-24 07:54:37 +0800719 CONFIG_CAS=${cas}
720 fi
Honglin Zhang8fa9d152020-02-10 12:29:27 +0800721 if [[ "${CONFIG_CAS}" == "irdeto" || \
722 "${CONFIG_CAS}" == "vmx" || \
723 "${CONFIG_CAS}" == "nagra" ]]; then
724 CONFIG_AML_SIGNED_UBOOT=y
725 export CONFIG_AML_SIGNED_UBOOT
726 fi
Lawrence Mok048be0f2020-02-24 18:03:43 -0800727 if [ "${CONFIG_CAS}" == "vmx" ]; then
728 dbg "Loading CAS VMX config"
729 source fip/config_cas_vmx.sh
730 fi
Doosan Baek284dc972022-02-11 11:04:26 +0800731 if [ "${CUR_SOC}" == "s4" ] && [ "${cas}" == "gs" ]; then
732 CONFIG_CAS=${cas}
733 fi
Doosan Baekd2a27822023-06-15 16:28:27 +0800734 if [ "${cas}" == "comcast" ]; then
735 CONFIG_CAS=${cas}
736 fi
Honglin Zhang8fa9d152020-02-10 12:29:27 +0800737 echo "CAS: ${cas},${CONFIG_CAS}"
738 export CONFIG_CAS
739 continue ;;
Xindong Xuad0d2832018-07-30 19:15:52 +0800740 --systemroot)
741 CONFIG_SYSTEM_AS_ROOT=systemroot
742 echo "export CONFIG_SYSTEM_AS_ROOT"
743 export CONFIG_SYSTEM_AS_ROOT=systemroot
744 continue ;;
Xindong Xu33eda2d2018-09-25 18:52:38 +0800745 --avb2)
746 CONFIG_AVB2=avb2
747 echo "export CONFIG_AVB2"
748 export CONFIG_AVB2=avb2
749 continue ;;
Xindong Xu9cf4afc2020-07-24 17:10:21 +0800750 --vab)
751 CONFIG_CMD_BOOTCTOL_VAB=1
752 echo "export CONFIG_CMD_BOOTCTOL_VAB"
753 export CONFIG_CMD_BOOTCTOL_VAB=1
Xindong Xua75ab9b2020-05-25 15:54:01 +0800754 continue ;;
Xindong Xuf010cc32022-05-27 11:04:43 +0800755 --fastboot-write)
756 CONFIG_FASTBOOT_WRITING_CMD=1
757 echo "export CONFIG_FASTBOOT_WRITING_CMD"
758 export CONFIG_FASTBOOT_WRITING_CMD=1
759 continue ;;
Huaihong Leia40d4ba2023-04-14 15:13:15 +0800760 --signpipe)
wenbo.wanga7e45942023-09-27 19:39:50 +0800761 CONFIG_SIGNPIPE=1
762 echo "export CONFIG_SIGNPIPE"
763 export CONFIG_SIGNPIPE=1
764 continue ;;
Matthew Shyu9cf81ee2022-08-30 00:09:36 -0700765 --avb2-recovery)
766 CONFIG_AVB2_RECOVERY=1
767 echo "export CONFIG_AVB2_RECOVERY"
768 export CONFIG_AVB2_RECOVERY=1
769 continue ;;
Lele Liu5767b162023-02-22 19:45:13 +0800770 --patch)
771 CONFIG_PATCH=1
772 echo "export CONFIG_PATCH"
773 export CONFIG_PATCH
774 source fip/auto_patch.sh
775 continue ;;
hao.qi60f37a22022-10-08 16:41:29 +0800776 --testkey)
777 CONFIG_TESTKEY=1
778 echo "export CONFIG_TESTKEY"
779 export CONFIG_TESTKEY=1
780 continue ;;
ruixuan.li68468212023-05-10 15:25:08 +0800781 --gpt)
782 CONFIG_AML_GPT=1
783 export CONFIG_AML_GPT=1
784 continue ;;
wenbo.wanga7e45942023-09-27 19:39:50 +0800785 *)
xiaobo gue6c46862018-01-10 18:58:09 +0800786 esac
787 done
Xiaobo Gu059502e2017-01-12 21:20:39 +0800788}
789
qi.wange123e7e2022-06-24 18:39:17 +0800790function combine_bl2f_with_bl33() {
791 if [ "1" == "${CONFIG_NASC_NAGRA_TIER_1}" ]; then
792 # place bl2f at end of u-boot.bin, _end align(4096)
793 if [ "y" == "${BL2F_UPDATE_TYPE}" ]; then
794 BL2F_BIN=bl2/ree/bl2f/bl2f.bin
795 else
796 echo CUR_SOC is $CUR_SOC
797 echo CONFIG_CHIPSET_NAME is $CONFIG_CHIPSET_NAME
798 BL2F_BIN=bl2/bin/$CUR_SOC/$CONFIG_CHIPSET_NAME/bl2f.bin
799 fi
800
801 if [ ! -f ${BL2F_BIN} ]; then
802 echo No $BL2F_BIN
803 exit -1
804 fi
805
806 END_LENS=`stat -c "%s" "./bl33/v2019/build/u-boot.bin"`
807 END_ALIGN=4096
808 BL2F_LOAD=`echo "((($END_LENS-1) / $END_ALIGN * $END_ALIGN) + $END_ALIGN)" | bc`
809 echo "uboot.bin size:$END_LENS, align:$END_ALIGN, new uboot size:$BL2F_LOAD"
810
811 dd if=/dev/zero of=./bl33/v2019/u-boot.tmp bs=$BL2F_LOAD count=1
812 dd if=./bl33/v2019/build/u-boot.bin of=./bl33/v2019/u-boot.tmp conv=notrunc &> /dev/null
813 cat $BL2F_BIN >> bl33/v2019/u-boot.tmp
814 cp -rf bl33/v2019/u-boot.tmp bl33/v2019/build/u-boot.bin
815 echo "Append bl2f.bin to the end of uboot.bin OK."
816 fi
817}
818
Xiaobo Gu059502e2017-01-12 21:20:39 +0800819function main() {
xiaobo gue6c46862018-01-10 18:58:09 +0800820 if [ -z $1 ]
821 then
822 usage
823 return
824 fi
Xiaobo Gu059502e2017-01-12 21:20:39 +0800825
xiaobo gue6c46862018-01-10 18:58:09 +0800826 MAIN_FOLDER=`pwd`
827 parser $@
828 build $@
Xiaobo Gu059502e2017-01-12 21:20:39 +0800829}
830
831main $@ # parse all paras to function