#!/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 "$@"