blob: f7638d25f8319d34a63cc797b8353df86fca3159 [file] [log] [blame]
xiaobo gue6c46862018-01-10 18:58:09 +08001#!/bin/bash
2
xiaobo gu0c2598b2019-06-28 11:22:17 +08003function select_uboot() {
4 local cfg_name=$1
Honglin Zhange358be42020-08-12 02:16:02 -04005
xiaobo gu0c2598b2019-06-28 11:22:17 +08006 cd ${MAIN_FOLDER}
7
Bo Lv26b21672023-01-16 01:50:15 +00008 for file in `ls -d ${BL33_DEFCFG1}/* ${BL33_DEFCFG2}/* ${BL33_DEFCFG3}/*`; do
xiaobo gu0c2598b2019-06-28 11:22:17 +08009 temp_file=`basename $file`
10 #echo $temp_file
11 temp_file=${temp_file%_*}
12 if [ "$cfg_name" == "$temp_file" ]; then
Bo Lv26b21672023-01-16 01:50:15 +000013 if [ "1" == "${CONFIG_CHOICE_BUILD}" ]; then
14 if [ "2015" == "${CONFIG_BUILD_VERSION}" ]; then
15 bl33_path=${UBOOT_FOLDER}/${UBOOT_VERSION1}
16 elif [ "2019" == "${CONFIG_BUILD_VERSION}" ]; then
17 bl33_path=${UBOOT_FOLDER}/${UBOOT_VERSION2}
18 elif [ "2023" == "${CONFIG_BUILD_VERSION}" ]; then
19 bl33_path=${UBOOT_FOLDER}/${UBOOT_VERSION3}
20 else
21 echo "input parameter error"
22 exit 1
23 fi
Bo Lv0edfe512022-10-14 21:08:09 +080024 else
25 if [ "${BL33_DEFCFG1}" == "$(dirname $file)" ]; then
26 bl33_path=${UBOOT_FOLDER}/${UBOOT_VERSION1}
Bo Lv26b21672023-01-16 01:50:15 +000027 elif [ "${BL33_DEFCFG2}" == "$(dirname $file)" ]; then
Bo Lv0edfe512022-10-14 21:08:09 +080028 bl33_path=${UBOOT_FOLDER}/${UBOOT_VERSION2}
Bo Lv26b21672023-01-16 01:50:15 +000029 elif [ "${BL33_DEFCFG3}" == "$(dirname $file)" ]; then
30 bl33_path=${UBOOT_FOLDER}/${UBOOT_VERSION3}
31 else
32 echo "not found defconfig"
33 exit 1
Bo Lv0edfe512022-10-14 21:08:09 +080034 fi
xiaobo gu0c2598b2019-06-28 11:22:17 +080035 fi
36 echo "select bl33: ${bl33_path}"
37 BL33_BUILD_FOLDER=${bl33_path}/build/
38 SOURCE_FILE=("${BL33_BUILD_FOLDER}.config")
39 CONFIG_FILE=("${BL33_BUILD_FOLDER}include/autoconf.mk")
40 UBOOT_SRC_FOLDER=${bl33_path}
41 break
42 fi
43 done
44 export BL33_BUILD_FOLDER SOURCE_FILE CONFIG_FILE UBOOT_SRC_FOLDER
45}
xiaobo gue6c46862018-01-10 18:58:09 +080046
47function pre_build_uboot() {
xiaobo gu0c2598b2019-06-28 11:22:17 +080048 select_uboot $1
xiaobo gue6c46862018-01-10 18:58:09 +080049 cd ${UBOOT_SRC_FOLDER}
50 echo -n "Compile config: "
51 echo "$1"
dongqing.li030579d2022-04-11 10:38:27 +080052 SOCNAME=$1
53 echo "SOCNAME:${SOCNAME}"
xiaobo gue6c46862018-01-10 18:58:09 +080054 make distclean # &> /dev/null
55 make $1'_config' # &> /dev/null
56 if [ $? != 0 ]
57 then
58 echo "Pre-build failed! exit!"
59 cd ${MAIN_FOLDER}
60 exit -1
61 fi
62 cd ${MAIN_FOLDER}
63}
64
65function build_uboot() {
ruixuan.li68468212023-05-10 15:25:08 +080066 echo "Build uboot...Please Wait...$1...$2...$3...$4...$5...$6...$7"
xiaobo gue6c46862018-01-10 18:58:09 +080067 mkdir -p ${FIP_BUILD_FOLDER}
68 cd ${UBOOT_SRC_FOLDER}
Bo Lv6f135a82021-06-29 19:36:35 +080069 if [[ "${SCRIPT_ARG_CHIPSET_VARIANT}" =~ "nocs" ]] || [[ "${CONFIG_CHIPSET_VARIANT}" =~ "nocs" ]]; then
70 CONFIG_CHIP_NOCS=1
71 echo "### ${CONFIG_CHIP_NOCS} ###"
72 fi
wenbo.wange8d2fbe2023-10-23 19:04:56 +080073 set -e
dongqing.lidf6de9c2022-01-03 22:34:01 +080074 if [ "${CONFIG_MDUMP_COMPRESS}" = "1" ]; then
75 CONFIG_MDUMP_COMPRESS=1
76 echo "### BL33 CONFIG_MDUMP_COMPRESS = 1 ###"
ruixuan.li68468212023-05-10 15:25:08 +080077 make -j SYSTEMMODE=$1 AVBMODE=$2 BOOTCTRLMODE=$3 FASTBOOTMODE=$4 AVB2RECOVERY=$5 TESTKEY=$6 GPTMODE=$7 CHIPMODE=${CONFIG_CHIP_NOCS} \
Meng yu654238f2024-06-05 11:06:32 +080078 CONFIG_MDUMP_COMPRESS=${CONFIG_MDUMP_COMPRESS} \
79 CONFIG_TEE_TYPE=${CONFIG_TEE_TYPE} # &> /dev/null
dongqing.lidf6de9c2022-01-03 22:34:01 +080080 else
Meng yu654238f2024-06-05 11:06:32 +080081 echo "### BL33 CONFIG_MDUMP_COMPRESS = 0 ### CONFIG_TEE_TYPE ${CONFIG_TEE_TYPE}"
82 make -j SYSTEMMODE=$1 AVBMODE=$2 BOOTCTRLMODE=$3 FASTBOOTMODE=$4 AVB2RECOVERY=$5 TESTKEY=$6 GPTMODE=$7 CHIPMODE=${CONFIG_CHIP_NOCS} \
83 CONFIG_TEE_TYPE=${CONFIG_TEE_TYPE} # &> /dev/null
dongqing.lidf6de9c2022-01-03 22:34:01 +080084 fi
wenbo.wange8d2fbe2023-10-23 19:04:56 +080085 set +e
Bo Lvcefaba42022-11-30 14:36:57 +080086
87 if [ "y" == "${CONFIG_AB_UPDATE}" ]; then
88 cp ./build/board/amlogic/${SOCNAME}/firmware/acs.bin ../../${BUILD_PATH}/acs.bin -f
89 fip_bl33_size=`stat -c %s ./build/u-boot.bin`
90 dd if=/dev/zero of=./build/fip.tmp bs=2097120 count=1
91 dd if=./build/u-boot.bin of=./build/fip.tmp bs=${fip_bl33_size} count=1 conv=notrunc
92
93 # sha fip ab
94 openssl dgst -sha256 -binary ./build/fip.tmp > ./build/u-boot.bin.sha256
95 dd if=./build/u-boot.bin.sha256 of=./build/fip.tmp bs=1 count=32 oflag=append conv=notrunc
96 cp ./build/fip.tmp ../../build/fip-bl33.bin -f
97
98 # sign fip ab
99 ../../fip/stool/signing-tool-c1/sign-boot-c1.sh --sign-kernel -i ./build/fip.tmp \
100 -k ./board/amlogic/common/ab_mode/aml-key/kernelkey.pem -a ./board/amlogic/common/ab_mode/aml-key/kernelaeskey \
101 --iv ./board/amlogic/common/ab_mode/aml-key/kernelaesiv -o ./build/fip-bl33.bin.encrypt
102 cp ./build/fip-bl33.bin.encrypt ../../build/ -f
103 #cp ./build/fip-bl33.bin.encrypt ../../${BUILD_PATH}/fip-bl33.bin -f
104
105 # build pre bl33
wenbo.wange8d2fbe2023-10-23 19:04:56 +0800106 set -e
Bo Lvcefaba42022-11-30 14:36:57 +0800107 make distclean
108 make ${SOCNAME}_defconfig
109 make -j SYSTEMMODE=$1 AVBMODE=$2 BOOTCTRLMODE=$3 FASTBOOTMODE=$4 AVB2RECOVERY=$5 TESTKEY=$6 CHIPMODE=${CONFIG_CHIP_NOCS} \
Meng yu654238f2024-06-05 11:06:32 +0800110 ABUPDATE=${CONFIG_AB_UPDATE} \
111 CONFIG_TEE_TYPE=${CONFIG_TEE_TYPE} # &> /dev/null
wenbo.wange8d2fbe2023-10-23 19:04:56 +0800112 set +e
Bo Lvcefaba42022-11-30 14:36:57 +0800113 if [ $? != 0 ]; then
114 echo "Pre bl33 failed! exit!"
115 cd ${MAIN_FOLDER}
116 exit 1
117 fi
118 cp ./build/u-boot.bin ../../${FIP_BUILD_FOLDER}bl33.bin
119 fi
Bo Lv6f135a82021-06-29 19:36:35 +0800120
dongqing.lib66a11a2023-03-27 17:18:43 +0800121 SOC_GROUP=`echo ${SOCNAME} | cut -d '_' -f 1`
122 skiped=("a1" "c1" "c2" "c3" "g12a" "g12b" "sm1" "t5w")
123 if [[ "${skiped[@]}" =~ "${SOC_GROUP}" ]]; then
124 echo ""
125 echo "The soc(${SOC_GROUP}) does not support bl33z, skip."
126 echo ""
127 elif [ "${CONFIG_SUPPORT_BL33Z}" = "1" ]; then
dongqing.li030579d2022-04-11 10:38:27 +0800128 echo ""
dongqing.li82e38992022-06-23 15:56:15 +0800129 set -e
dongqing.li030579d2022-04-11 10:38:27 +0800130 echo "ramdump enable, build bl33z.bin for soc [${SOCNAME}] ..."
dongqing.li030579d2022-04-11 10:38:27 +0800131 if [ -f "./bl33z/Makefile" ]; then
wenbo.wange8d2fbe2023-10-23 19:04:56 +0800132 set -e
dongqing.li030579d2022-04-11 10:38:27 +0800133 make -C bl33z/ PLAT=${SOCNAME} AARCH=aarch64 distclean
134 make -C bl33z/ PLAT=${SOCNAME} AARCH=aarch64
wenbo.wange8d2fbe2023-10-23 19:04:56 +0800135 set +e
dongqing.li030579d2022-04-11 10:38:27 +0800136 if [ -f "./bl33z/build/bl33z.bin" -a -f "./build/u-boot.bin" ]; then
137 # place bl33z at end of u-boot.bin, _end align(4096)
138 END_LENS=`ls -l ./build/u-boot.bin | awk '{print $5}'`
139 END_ALIGN=4096
140 BL33Z_LOAD=`echo "((($END_LENS-1) / $END_ALIGN * $END_ALIGN) + $END_ALIGN)" | bc`
141 echo "uboot.bin size:$END_LENS, align:$END_ALIGN, new uboot size:$BL33Z_LOAD"
142
143 dd if=/dev/zero of=u-boot.tmp bs=$BL33Z_LOAD count=1
144 dd if=./build/u-boot.bin of=u-boot.tmp conv=notrunc &> /dev/null
145 cat ./bl33z/build/bl33z.bin >> u-boot.tmp
146 cp -rf u-boot.tmp build/u-boot.bin
147 rm -rf u-boot.tmp
148 echo "Append bl33z.bin to the end of uboot.bin OK."
149 else
150 echo "Error: build bl33z.bin failed... abort"
151 fi
152 else
153 echo "Error: bl33z proj is not exist... abort"
154 fi
dongqing.li82e38992022-06-23 15:56:15 +0800155 set +e
dongqing.li030579d2022-04-11 10:38:27 +0800156 echo ""
157 fi
xiaobo gue6c46862018-01-10 18:58:09 +0800158 ret=$?
159 cd ${MAIN_FOLDER}
160 if [ 0 -ne $ret ]; then
161 echo "Error: U-boot build failed... abort"
162 exit -1
163 fi
164}
165
166function uboot_config_list() {
xiaobo gue6c46862018-01-10 18:58:09 +0800167 echo " ******Amlogic Configs******"
Bo Lv26b21672023-01-16 01:50:15 +0000168 for file in `ls -d ${BL33_DEFCFG1}/* ${BL33_DEFCFG2}/* ${BL33_DEFCFG3}/*`; do
xiaobo gue6c46862018-01-10 18:58:09 +0800169 temp_file=`basename $file`
170 #echo "$temp_file"
xiaobo gu0c2598b2019-06-28 11:22:17 +0800171 temp_file=${temp_file%_*}
172 echo " ${temp_file}"
xiaobo gue6c46862018-01-10 18:58:09 +0800173 done
174
xiaobo gu0c2598b2019-06-28 11:22:17 +0800175 customer_folder1="${BL33_PATH1}/customer/board/defconfigs"
176 customer_folder2="${BL33_PATH2}/customer/board/defconfigs"
177 if [ -e ${customer_folder1} ]; then
xiaobo gue6c46862018-01-10 18:58:09 +0800178 echo " ******Customer Configs******"
xiaobo gu0c2598b2019-06-28 11:22:17 +0800179 for file in ${customer_folder1}/*; do
xiaobo gue6c46862018-01-10 18:58:09 +0800180 temp_file=`basename $file`
xiaobo gu0c2598b2019-06-28 11:22:17 +0800181 temp_file=${temp_file%_*}
182 echo " ${temp_file}"
xiaobo gue6c46862018-01-10 18:58:09 +0800183 done
184 fi
xiaobo gu0c2598b2019-06-28 11:22:17 +0800185 if [ -e ${customer_folder2} ]; then
186 for file in ${customer_folder2}/*; do
187 temp_file=`basename $file`
188 temp_file=${temp_file%_*}
189 echo " ${temp_file}"
190 done
191 fi
192
xiaobo gue6c46862018-01-10 18:58:09 +0800193 echo " ***************************"
194}
195
196function copy_bl33() {
Bo Lvcefaba42022-11-30 14:36:57 +0800197 if [ "y" != "${CONFIG_AB_UPDATE}" ]; then
198 cp ${BL33_BUILD_FOLDER}/u-boot.bin ${FIP_BUILD_FOLDER}bl33.bin -f
199 fi
xiaobo gu0c83cb62018-03-19 14:09:38 +0800200
201 # remove src link to prevent android "File system loop detected" issue
xiaobo gua64f93c2018-07-31 21:27:43 +0800202 #cd ${UBOOT_SRC_FOLDER}/build/
203 #rm source
xiaobo gu0c83cb62018-03-19 14:09:38 +0800204 cd ${MAIN_FOLDER}
xiaobo gua64f93c2018-07-31 21:27:43 +0800205}