xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | |
xiaobo gu | 0c2598b | 2019-06-28 11:22:17 +0800 | [diff] [blame] | 3 | function select_uboot() { |
| 4 | local cfg_name=$1 |
Honglin Zhang | e358be4 | 2020-08-12 02:16:02 -0400 | [diff] [blame] | 5 | |
xiaobo gu | 0c2598b | 2019-06-28 11:22:17 +0800 | [diff] [blame] | 6 | cd ${MAIN_FOLDER} |
| 7 | |
Bo Lv | 9a44897 | 2024-11-29 17:10:12 +0800 | [diff] [blame] | 8 | for file in `ls -d ${BL33_DEFCFG1}/* ${BL33_DEFCFG2}/* ${BL33_DEFCFG3}/* ${BL33_DEFCFG4}/*`; do |
xiaobo gu | 0c2598b | 2019-06-28 11:22:17 +0800 | [diff] [blame] | 9 | temp_file=`basename $file` |
| 10 | #echo $temp_file |
| 11 | temp_file=${temp_file%_*} |
| 12 | if [ "$cfg_name" == "$temp_file" ]; then |
Bo Lv | 26b2167 | 2023-01-16 01:50:15 +0000 | [diff] [blame] | 13 | 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} |
Bo Lv | 9a44897 | 2024-11-29 17:10:12 +0800 | [diff] [blame] | 20 | elif [ "2025" == "${CONFIG_BUILD_VERSION}" ]; then |
| 21 | bl33_path=${UBOOT_FOLDER}/${UBOOT_VERSION4} |
Bo Lv | 26b2167 | 2023-01-16 01:50:15 +0000 | [diff] [blame] | 22 | else |
| 23 | echo "input parameter error" |
| 24 | exit 1 |
| 25 | fi |
Bo Lv | 0edfe51 | 2022-10-14 21:08:09 +0800 | [diff] [blame] | 26 | else |
| 27 | if [ "${BL33_DEFCFG1}" == "$(dirname $file)" ]; then |
| 28 | bl33_path=${UBOOT_FOLDER}/${UBOOT_VERSION1} |
Bo Lv | 26b2167 | 2023-01-16 01:50:15 +0000 | [diff] [blame] | 29 | elif [ "${BL33_DEFCFG2}" == "$(dirname $file)" ]; then |
Bo Lv | 0edfe51 | 2022-10-14 21:08:09 +0800 | [diff] [blame] | 30 | bl33_path=${UBOOT_FOLDER}/${UBOOT_VERSION2} |
Bo Lv | 26b2167 | 2023-01-16 01:50:15 +0000 | [diff] [blame] | 31 | elif [ "${BL33_DEFCFG3}" == "$(dirname $file)" ]; then |
| 32 | bl33_path=${UBOOT_FOLDER}/${UBOOT_VERSION3} |
Bo Lv | 9a44897 | 2024-11-29 17:10:12 +0800 | [diff] [blame] | 33 | elif [ "${BL33_DEFCFG4}" == "$(dirname $file)" ]; then |
| 34 | bl33_path=${UBOOT_FOLDER}/${UBOOT_VERSION4} |
Bo Lv | 26b2167 | 2023-01-16 01:50:15 +0000 | [diff] [blame] | 35 | else |
| 36 | echo "not found defconfig" |
| 37 | exit 1 |
Bo Lv | 0edfe51 | 2022-10-14 21:08:09 +0800 | [diff] [blame] | 38 | fi |
xiaobo gu | 0c2598b | 2019-06-28 11:22:17 +0800 | [diff] [blame] | 39 | fi |
| 40 | echo "select bl33: ${bl33_path}" |
| 41 | BL33_BUILD_FOLDER=${bl33_path}/build/ |
| 42 | SOURCE_FILE=("${BL33_BUILD_FOLDER}.config") |
| 43 | CONFIG_FILE=("${BL33_BUILD_FOLDER}include/autoconf.mk") |
| 44 | UBOOT_SRC_FOLDER=${bl33_path} |
| 45 | break |
| 46 | fi |
| 47 | done |
| 48 | export BL33_BUILD_FOLDER SOURCE_FILE CONFIG_FILE UBOOT_SRC_FOLDER |
| 49 | } |
xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 50 | |
| 51 | function pre_build_uboot() { |
xiaobo gu | 0c2598b | 2019-06-28 11:22:17 +0800 | [diff] [blame] | 52 | select_uboot $1 |
xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 53 | cd ${UBOOT_SRC_FOLDER} |
| 54 | echo -n "Compile config: " |
| 55 | echo "$1" |
dongqing.li | 030579d | 2022-04-11 10:38:27 +0800 | [diff] [blame] | 56 | SOCNAME=$1 |
| 57 | echo "SOCNAME:${SOCNAME}" |
Bo Lv | 0c0b81a | 2024-11-19 10:01:15 +0800 | [diff] [blame] | 58 | export ${SOCNAME} |
xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 59 | make distclean # &> /dev/null |
| 60 | make $1'_config' # &> /dev/null |
| 61 | if [ $? != 0 ] |
| 62 | then |
| 63 | echo "Pre-build failed! exit!" |
| 64 | cd ${MAIN_FOLDER} |
| 65 | exit -1 |
| 66 | fi |
| 67 | cd ${MAIN_FOLDER} |
| 68 | } |
| 69 | |
| 70 | function build_uboot() { |
ruixuan.li | 6846821 | 2023-05-10 15:25:08 +0800 | [diff] [blame] | 71 | echo "Build uboot...Please Wait...$1...$2...$3...$4...$5...$6...$7" |
xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 72 | mkdir -p ${FIP_BUILD_FOLDER} |
| 73 | cd ${UBOOT_SRC_FOLDER} |
Bo Lv | 6f135a8 | 2021-06-29 19:36:35 +0800 | [diff] [blame] | 74 | if [[ "${SCRIPT_ARG_CHIPSET_VARIANT}" =~ "nocs" ]] || [[ "${CONFIG_CHIPSET_VARIANT}" =~ "nocs" ]]; then |
| 75 | CONFIG_CHIP_NOCS=1 |
| 76 | echo "### ${CONFIG_CHIP_NOCS} ###" |
| 77 | fi |
wenbo.wang | e8d2fbe | 2023-10-23 19:04:56 +0800 | [diff] [blame] | 78 | set -e |
dongqing.li | df6de9c | 2022-01-03 22:34:01 +0800 | [diff] [blame] | 79 | if [ "${CONFIG_MDUMP_COMPRESS}" = "1" ]; then |
| 80 | CONFIG_MDUMP_COMPRESS=1 |
| 81 | echo "### BL33 CONFIG_MDUMP_COMPRESS = 1 ###" |
ruixuan.li | 6846821 | 2023-05-10 15:25:08 +0800 | [diff] [blame] | 82 | make -j SYSTEMMODE=$1 AVBMODE=$2 BOOTCTRLMODE=$3 FASTBOOTMODE=$4 AVB2RECOVERY=$5 TESTKEY=$6 GPTMODE=$7 CHIPMODE=${CONFIG_CHIP_NOCS} \ |
Meng yu | 654238f | 2024-06-05 11:06:32 +0800 | [diff] [blame] | 83 | CONFIG_MDUMP_COMPRESS=${CONFIG_MDUMP_COMPRESS} \ |
| 84 | CONFIG_TEE_TYPE=${CONFIG_TEE_TYPE} # &> /dev/null |
dongqing.li | df6de9c | 2022-01-03 22:34:01 +0800 | [diff] [blame] | 85 | else |
Meng yu | 654238f | 2024-06-05 11:06:32 +0800 | [diff] [blame] | 86 | echo "### BL33 CONFIG_MDUMP_COMPRESS = 0 ### CONFIG_TEE_TYPE ${CONFIG_TEE_TYPE}" |
| 87 | make -j SYSTEMMODE=$1 AVBMODE=$2 BOOTCTRLMODE=$3 FASTBOOTMODE=$4 AVB2RECOVERY=$5 TESTKEY=$6 GPTMODE=$7 CHIPMODE=${CONFIG_CHIP_NOCS} \ |
| 88 | CONFIG_TEE_TYPE=${CONFIG_TEE_TYPE} # &> /dev/null |
dongqing.li | df6de9c | 2022-01-03 22:34:01 +0800 | [diff] [blame] | 89 | fi |
wenbo.wang | e8d2fbe | 2023-10-23 19:04:56 +0800 | [diff] [blame] | 90 | set +e |
Bo Lv | cefaba4 | 2022-11-30 14:36:57 +0800 | [diff] [blame] | 91 | |
| 92 | if [ "y" == "${CONFIG_AB_UPDATE}" ]; then |
| 93 | cp ./build/board/amlogic/${SOCNAME}/firmware/acs.bin ../../${BUILD_PATH}/acs.bin -f |
| 94 | fip_bl33_size=`stat -c %s ./build/u-boot.bin` |
| 95 | dd if=/dev/zero of=./build/fip.tmp bs=2097120 count=1 |
| 96 | dd if=./build/u-boot.bin of=./build/fip.tmp bs=${fip_bl33_size} count=1 conv=notrunc |
| 97 | |
| 98 | # sha fip ab |
| 99 | openssl dgst -sha256 -binary ./build/fip.tmp > ./build/u-boot.bin.sha256 |
| 100 | dd if=./build/u-boot.bin.sha256 of=./build/fip.tmp bs=1 count=32 oflag=append conv=notrunc |
| 101 | cp ./build/fip.tmp ../../build/fip-bl33.bin -f |
| 102 | |
| 103 | # sign fip ab |
| 104 | ../../fip/stool/signing-tool-c1/sign-boot-c1.sh --sign-kernel -i ./build/fip.tmp \ |
| 105 | -k ./board/amlogic/common/ab_mode/aml-key/kernelkey.pem -a ./board/amlogic/common/ab_mode/aml-key/kernelaeskey \ |
| 106 | --iv ./board/amlogic/common/ab_mode/aml-key/kernelaesiv -o ./build/fip-bl33.bin.encrypt |
| 107 | cp ./build/fip-bl33.bin.encrypt ../../build/ -f |
| 108 | #cp ./build/fip-bl33.bin.encrypt ../../${BUILD_PATH}/fip-bl33.bin -f |
| 109 | |
| 110 | # build pre bl33 |
wenbo.wang | e8d2fbe | 2023-10-23 19:04:56 +0800 | [diff] [blame] | 111 | set -e |
Bo Lv | cefaba4 | 2022-11-30 14:36:57 +0800 | [diff] [blame] | 112 | make distclean |
| 113 | make ${SOCNAME}_defconfig |
| 114 | make -j SYSTEMMODE=$1 AVBMODE=$2 BOOTCTRLMODE=$3 FASTBOOTMODE=$4 AVB2RECOVERY=$5 TESTKEY=$6 CHIPMODE=${CONFIG_CHIP_NOCS} \ |
Meng yu | 654238f | 2024-06-05 11:06:32 +0800 | [diff] [blame] | 115 | ABUPDATE=${CONFIG_AB_UPDATE} \ |
| 116 | CONFIG_TEE_TYPE=${CONFIG_TEE_TYPE} # &> /dev/null |
wenbo.wang | e8d2fbe | 2023-10-23 19:04:56 +0800 | [diff] [blame] | 117 | set +e |
Bo Lv | cefaba4 | 2022-11-30 14:36:57 +0800 | [diff] [blame] | 118 | if [ $? != 0 ]; then |
| 119 | echo "Pre bl33 failed! exit!" |
| 120 | cd ${MAIN_FOLDER} |
| 121 | exit 1 |
| 122 | fi |
| 123 | cp ./build/u-boot.bin ../../${FIP_BUILD_FOLDER}bl33.bin |
| 124 | fi |
Bo Lv | 6f135a8 | 2021-06-29 19:36:35 +0800 | [diff] [blame] | 125 | |
dongqing.li | b66a11a | 2023-03-27 17:18:43 +0800 | [diff] [blame] | 126 | SOC_GROUP=`echo ${SOCNAME} | cut -d '_' -f 1` |
dongqing.li | c117490 | 2024-10-10 11:03:34 +0000 | [diff] [blame] | 127 | skiped=("c1" "c2" "c3" "g12a" "g12b" "sm1" "t5w") |
dongqing.li | b66a11a | 2023-03-27 17:18:43 +0800 | [diff] [blame] | 128 | if [[ "${skiped[@]}" =~ "${SOC_GROUP}" ]]; then |
| 129 | echo "" |
| 130 | echo "The soc(${SOC_GROUP}) does not support bl33z, skip." |
| 131 | echo "" |
| 132 | elif [ "${CONFIG_SUPPORT_BL33Z}" = "1" ]; then |
dongqing.li | 030579d | 2022-04-11 10:38:27 +0800 | [diff] [blame] | 133 | echo "" |
dongqing.li | 82e3899 | 2022-06-23 15:56:15 +0800 | [diff] [blame] | 134 | set -e |
dongqing.li | 030579d | 2022-04-11 10:38:27 +0800 | [diff] [blame] | 135 | echo "ramdump enable, build bl33z.bin for soc [${SOCNAME}] ..." |
dongqing.li | 030579d | 2022-04-11 10:38:27 +0800 | [diff] [blame] | 136 | if [ -f "./bl33z/Makefile" ]; then |
wenbo.wang | e8d2fbe | 2023-10-23 19:04:56 +0800 | [diff] [blame] | 137 | set -e |
dongqing.li | 030579d | 2022-04-11 10:38:27 +0800 | [diff] [blame] | 138 | make -C bl33z/ PLAT=${SOCNAME} AARCH=aarch64 distclean |
| 139 | make -C bl33z/ PLAT=${SOCNAME} AARCH=aarch64 |
wenbo.wang | e8d2fbe | 2023-10-23 19:04:56 +0800 | [diff] [blame] | 140 | set +e |
dongqing.li | 030579d | 2022-04-11 10:38:27 +0800 | [diff] [blame] | 141 | if [ -f "./bl33z/build/bl33z.bin" -a -f "./build/u-boot.bin" ]; then |
| 142 | # place bl33z at end of u-boot.bin, _end align(4096) |
dongqing.li | d326e6a | 2024-10-09 01:01:29 +0000 | [diff] [blame] | 143 | END_LENS=$(stat -c%s "./build/u-boot.bin") |
dongqing.li | 030579d | 2022-04-11 10:38:27 +0800 | [diff] [blame] | 144 | END_ALIGN=4096 |
| 145 | BL33Z_LOAD=`echo "((($END_LENS-1) / $END_ALIGN * $END_ALIGN) + $END_ALIGN)" | bc` |
| 146 | echo "uboot.bin size:$END_LENS, align:$END_ALIGN, new uboot size:$BL33Z_LOAD" |
| 147 | |
| 148 | dd if=/dev/zero of=u-boot.tmp bs=$BL33Z_LOAD count=1 |
| 149 | dd if=./build/u-boot.bin of=u-boot.tmp conv=notrunc &> /dev/null |
| 150 | cat ./bl33z/build/bl33z.bin >> u-boot.tmp |
| 151 | cp -rf u-boot.tmp build/u-boot.bin |
| 152 | rm -rf u-boot.tmp |
| 153 | echo "Append bl33z.bin to the end of uboot.bin OK." |
| 154 | else |
| 155 | echo "Error: build bl33z.bin failed... abort" |
| 156 | fi |
| 157 | else |
| 158 | echo "Error: bl33z proj is not exist... abort" |
| 159 | fi |
dongqing.li | 82e3899 | 2022-06-23 15:56:15 +0800 | [diff] [blame] | 160 | set +e |
dongqing.li | 030579d | 2022-04-11 10:38:27 +0800 | [diff] [blame] | 161 | echo "" |
| 162 | fi |
xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 163 | ret=$? |
| 164 | cd ${MAIN_FOLDER} |
| 165 | if [ 0 -ne $ret ]; then |
| 166 | echo "Error: U-boot build failed... abort" |
| 167 | exit -1 |
| 168 | fi |
| 169 | } |
| 170 | |
| 171 | function uboot_config_list() { |
xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 172 | echo " ******Amlogic Configs******" |
Bo Lv | 9a44897 | 2024-11-29 17:10:12 +0800 | [diff] [blame] | 173 | for file in `ls -d ${BL33_DEFCFG1}/* ${BL33_DEFCFG2}/* ${BL33_DEFCFG3}/* ${BL33_DEFCFG4}/*`; do |
xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 174 | temp_file=`basename $file` |
| 175 | #echo "$temp_file" |
xiaobo gu | 0c2598b | 2019-06-28 11:22:17 +0800 | [diff] [blame] | 176 | temp_file=${temp_file%_*} |
| 177 | echo " ${temp_file}" |
xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 178 | done |
| 179 | |
xiaobo gu | 0c2598b | 2019-06-28 11:22:17 +0800 | [diff] [blame] | 180 | customer_folder1="${BL33_PATH1}/customer/board/defconfigs" |
| 181 | customer_folder2="${BL33_PATH2}/customer/board/defconfigs" |
| 182 | if [ -e ${customer_folder1} ]; then |
xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 183 | echo " ******Customer Configs******" |
xiaobo gu | 0c2598b | 2019-06-28 11:22:17 +0800 | [diff] [blame] | 184 | for file in ${customer_folder1}/*; do |
xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 185 | temp_file=`basename $file` |
xiaobo gu | 0c2598b | 2019-06-28 11:22:17 +0800 | [diff] [blame] | 186 | temp_file=${temp_file%_*} |
| 187 | echo " ${temp_file}" |
xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 188 | done |
| 189 | fi |
xiaobo gu | 0c2598b | 2019-06-28 11:22:17 +0800 | [diff] [blame] | 190 | if [ -e ${customer_folder2} ]; then |
| 191 | for file in ${customer_folder2}/*; do |
| 192 | temp_file=`basename $file` |
| 193 | temp_file=${temp_file%_*} |
| 194 | echo " ${temp_file}" |
| 195 | done |
| 196 | fi |
| 197 | |
xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 198 | echo " ***************************" |
| 199 | } |
| 200 | |
| 201 | function copy_bl33() { |
Bo Lv | cefaba4 | 2022-11-30 14:36:57 +0800 | [diff] [blame] | 202 | if [ "y" != "${CONFIG_AB_UPDATE}" ]; then |
| 203 | cp ${BL33_BUILD_FOLDER}/u-boot.bin ${FIP_BUILD_FOLDER}bl33.bin -f |
| 204 | fi |
xiaobo gu | 0c83cb6 | 2018-03-19 14:09:38 +0800 | [diff] [blame] | 205 | |
| 206 | # remove src link to prevent android "File system loop detected" issue |
xiaobo gu | a64f93c | 2018-07-31 21:27:43 +0800 | [diff] [blame] | 207 | #cd ${UBOOT_SRC_FOLDER}/build/ |
| 208 | #rm source |
xiaobo gu | 0c83cb6 | 2018-03-19 14:09:38 +0800 | [diff] [blame] | 209 | cd ${MAIN_FOLDER} |
xiaobo gu | a64f93c | 2018-07-31 21:27:43 +0800 | [diff] [blame] | 210 | } |