Files
2026-09-22 09:38:26 +08:00

273 lines
7.4 KiB
Bash
Executable File

#!/bin/bash
OUTDIR=$1
SOURCEROOT=$2
SECURE_BOOT=$3
PSS_FLAG=$4
echo secboot = $SECURE_BOOT
echo PSS_FLAG = $PSS_FLAG
CURPATH=$SOURCEROOT/prebuilts/scripts/packimage_scripts
#sign tools config
HOST_OUT=$CURPATH
PRODUCT_OUT=$CURPATH
CFGPATH=$CURPATH/config/
DESTDIR=$CURPATH/mkdbimg/bin
#chipram bins location
SPL=$OUTDIR/u-boot-spl-16k.bin
SPLSIGN=$OUTDIR/u-boot-spl-16k-sign.bin
SPL_EMMC=$OUTDIR/u-boot-spl-16k-emmc.bin
SPL_EMMCSIGN=$OUTDIR/u-boot-spl-16k-emmc-sign.bin
SPL_UFS=$OUTDIR/u-boot-spl-16k-ufs.bin
SPL_UFSSIGN=$OUTDIR/u-boot-spl-16k-ufs-sign.bin
FDL1=$OUTDIR/fdl1.bin
FDL1SIGN=$OUTDIR/fdl1-sign.bin
#DDR_SCAN=$OUTDIR/ddr_scan.bin
#DDR_SCANSIGN=$OUTDIR/ddr_scan-sign.bin
#sml bins location
SML=$OUTDIR/sml.bin
SMLSIGN=$OUTDIR/sml-sign.bin
#tos bins location
TOS=$OUTDIR/tos.bin
TOSSIGN=$OUTDIR/tos-sign.bin
TA_DESTDIR=$CURPATH
#uboot bins location
UBOOTDT=$OUTDIR/u-boot-dtb.bin
UBOOTDTSIGN=$OUTDIR/u-boot-dtb-sign.bin
UBOOT=$OUTDIR/u-boot.bin
UBOOTSIGN=$OUTDIR/u-boot-sign.bin
FDL2=$OUTDIR/fdl2.bin
FDL2SIGN=$OUTDIR/fdl2-sign.bin
#UBOOTAUTO=$OUTDIR/u-boot_autopoweron.bin
#UBOOTAUTOSIGN=$OUTDIR/u-boot_autopoweron-sign.bin
BOOT=$OUTDIR/boot.img
BOOTSIGN=$OUTDIR/boot-sign.img
RECOVERY=$OUTDIR/recovery.img
RECOVERYSIGN=$OUTDIR/recovery-sign.img
DTB=$OUTDIR/Image-dtb.dtb
DTBSIGN=$OUTDIR/Image-dtb-sign.dtb
DTBO=$OUTDIR/dtbo.img
DTBOSIGN=$OUTDIR/dtbo-sign.img
RecoveryDTB=$OUTDIR/recovery-dtb.dtb
RecoveryDTBSIGN=$OUTDIR/recovery-dtb-sign.dtb
#AGDSP=$OUTDIR/roc1_pubcp_AGCP_DSP.bin
#AGDSPSIGN=$OUTDIR/roc1_pubcp_AGCP_DSP-sign.bin
#PM_SYS=$OUTDIR/roc1_cm4.bin
#PM_SYSSIGN=$OUTDIR/roc1_cm4-sign.bin
#VBMETA=$PRODUCT_OUT/vbmeta.img
getModuleName()
{
local name="allmodules"
if [ $# -gt 0 ]; then
for loop in $@
do
case $loop in
"chipram")
name="chipram"
break
;;
"bootloader")
name="bootloader"
break
;;
"bootimage")
name="bootimage"
break
;;
"recoveryimage")
name="recoveryimage"
break
;;
"prodnvimage")
name="prodnvimage"
break
;;
"systemimage")
name="systemimage"
break
;;
"vendorimage")
name="vendorimage"
break
;;
"userdataimage")
name="userdataimage"
break
;;
"cacheimage")
name="cacheimage"
break
;;
"trusty")
name="trusty"
break
;;
"sml")
name="sml"
break
;;
"vbmetaimage")
name="vbmetaimage"
break
;;
"vbmetaimage-nodeps")
name="vbmetaimage"
break
;;
"clean")
name="clean"
break
;;
*)
;;
esac
done
fi
echo $name
}
doImgHeaderInsert()
{
local NO_SECURE_BOOT
local ret
if [[ "NONE" = $SECURE_BOOT ]]; then
NO_SECURE_BOOT=1
else
NO_SECURE_BOOT=0
fi
for loop in $@
do
echo imgheader img: $loop
if [ -f $loop ] ; then
${HOST_OUT}/sprd_sign insert_image_header --image $loop --config_dir $CFGPATH
ret=$?
if [ "$ret" = "1" ]; then
echo "####imgheaderinsert $loop NO_SECURE_BOOT=$NO_SECURE_BOOT failed!####"
return 1
fi
else
echo "#### no $loop,please check ####"
fi
done
return 0
}
dosprdcopy()
{
if [ -f $SPLSIGN ];then
cp $SPLSIGN $DESTDIR
#echo -e "\033[33m copy spl-sign.bin finish!\033[0m"
fi
if [ -f $SPL_EMMCSIGN ];then
cp $SPL_EMMCSIGN $DESTDIR
#echo -e "\033[33m copy spl-emmc-sign.bin finish!\033[0m"
fi
if [ -f $SPL_UFSSIGN ];then
cp $SPL_UFSSIGN $DESTDIR
#echo -e "\033[33m copy spl-ufs-sign.bin finish!\033[0m"
fi
if [ -f $FDL1SIGN ]; then
cp $FDL1SIGN $DESTDIR
#echo -e "\033[33m copy fdl1-sign.bin finish!\033[0m"
fi
}
doSignImage()
{
if [[ "NONE" = $SECURE_BOOT ]]; then
return
fi
#/*add sprd sign*/
if [[ "SPRD" = $SECURE_BOOT ]]; then
for image in $@
do
if [ -f $image ]; then
if [ "pss" = $PSS_FLAG ]; then
# $HOST_OUT/sprd_sign_v2 $image $CFGPATH pss $PROJECT
${HOST_OUT}/sprd_sign sign_image --image $image --config_dir $CFGPATH --algorithm rsa4096 --rsa_padding 6
else
# $HOST_OUT/sprd_sign_v2 $image $CFGPATH pkcs15 $PROJECT
${HOST_OUT}/sprd_sign sign_image --image $image --config_dir $CFGPATH --algorithm rsa2048 --rsa_padding 1
fi
else
echo -e "\033[31m #### no $image, pls check #### \033[0m"
fi
done
#call this function do copy fdl1&spl to mkdbimg/bin document
# dosprdcopy
fi
}
doPackImage()
{
case $(getModuleName "$@") in
"chipram")
doImgHeaderInsert $SPL $FDL1 $DDR_SCAN $SPL_EMMC $SPL_UFS
if [ "$?" = "1" ]; then
return 1
fi
doSignImage $SPLSIGN $FDL1SIGN $DDR_SCANSIGN $SPL_EMMCSIGN $SPL_UFSSIGN
;;
"bootloader")
doImgHeaderInsert $UBOOT $FDL2 $UBOOTAUTO
if [ "$?" = "1" ]; then
return 1
fi
doSignImage $UBOOTSIGN $FDL2SIGN $UBOOTAUTOSIGN
;;
"trusty")
#the next line is for dynamic TA
python $TA_DESTDIR/dynamicTA/genkey/main_process.py $PRODUCT_OUT $TA_DESTDIR
doImgHeaderInsert $TOS
if [ "$?" = "1" ]; then
return 1
fi
doSignImage $TOSSIGN
;;
"sml")
doImgHeaderInsert $SML
if [ "$?" = "1" ]; then
return 1
fi
doSignImage $SMLSIGN
;;
"allmodules")
if [[ "NONE" = $SECURE_BOOT ]]; then
#the next line is for dynamic TA
python $TA_DESTDIR/dynamicTA/genkey/main_process.py $PRODUCT_OUT $TA_DESTDIR
doImgHeaderInsert $SPL $UBOOT $FDL1 $FDL2 $UBOOTAUTO $SML $TOS $DDR_SCAN $SPL_EMMC $SPL_UFS
else
#the next line is for dynamic TA and wcn/gnss key
if [ "pss" = $PSS_FLAG ]; then
python $TA_DESTDIR/dynamicTA/genkey/main_process.py $PRODUCT_OUT $TA_DESTDIR rsa4096
else
python $TA_DESTDIR/dynamicTA/genkey/main_process.py $PRODUCT_OUT $TA_DESTDIR rsa2048
fi
doImgHeaderInsert $SPL $UBOOT $FDL1 $FDL2 $UBOOTAUTO $SML $TOS $DDR_SCAN $BOOT $RECOVERY $DTB $DTBO $AGDSP $PM_SYS $SPL_EMMC $SPL_UFS $RecoveryDTB
if [ "$?" = "1" ]; then
return 1
fi
doSignImage $SPLSIGN $UBOOTSIGN $FDL1SIGN $FDL2SIGN $SMLSIGN $TOSSIGN $UBOOTAUTOSIGN $DDR_SCANSIGN $BOOTSIGN $RECOVERYSIGN $DTBSIGN $DTBOSIGN $AGDSPSIGN $PM_SYSSIGN $SPL_EMMCSIGN $SPL_UFSSIGN $RecoveryDTBSIGN
#$HOST_OUT/imgheaderinsert $VBMETA 1 1
fi
;;
"clean")
#do nothing
;;
*)
;;
esac
}
doPackImage "$@"