| |
| key_dir=$1 |
| projects=$2 |
| input_dir=$3 |
| board=$4 |
| chipset_variant=$5 |
| BL33_BIN_SIZE="1572864" |
| DDR_FIP_NAME="blob-ddr-fip.bin.signed" |
| |
| if [ ! -f ${input_dir}/bl33-payload-nocs.bin ]; then |
| echo NO bl33-payload-nocs.bin |
| exit -1 |
| fi |
| |
| bl33_size=`stat -c %s ${input_dir}/bl33-payload-nocs.bin` |
| |
| if [[ ${bl33_size} -gt ${BL33_BIN_SIZE} ]]; then |
| echo size of bl33-payload-nocs.bin is ${bl33_size}, large than ${BL33_BIN_SIZE} |
| exit -1 |
| fi |
| |
| if [ ! -f ${input_dir}/${board}-u-boot.aml.zip ]; then |
| echo No ${board}-u-boot.aml.zip |
| exit -1 |
| fi |
| |
| work_dir=${input_dir}/tmp |
| |
| rm -rf ${input_dir}/tmp/ |
| mkdir -p ${input_dir}/tmp/ |
| cp ${input_dir}/${board}-u-boot.aml.zip ${input_dir}/tmp/ |
| unzip ${input_dir}/tmp/${board}-u-boot.aml.zip -d ${input_dir}/tmp/ |
| |
| ls -l ${input_dir}/tmp/ |
| |
| |
| dd if=/dev/zero of=${input_dir}/tmp.bin bs=${BL33_BIN_SIZE} count=1 &> /dev/null |
| dd if=${input_dir}/bl33-payload-nocs.bin of=${input_dir}/tmp.bin conv=notrunc &> /dev/null |
| mv ${input_dir}/tmp.bin ${input_dir}/bl33-payload-nocs.bin |
| |
| cp ${input_dir}/bl33-payload-nocs.bin ${input_dir}/tmp/bl33-payload.bin |
| rm ${input_dir}/tmp/${board}-u-boot.aml.zip |
| zip -D -j ${input_dir}/${board}-uboot-nocs.zip ${input_dir}/tmp/* |
| |
| function mk_uboot() { |
| output_images=$1 |
| input_payloads=$2 |
| postfix=$3 |
| storage_type_suffix=$4 |
| chipset_variant_suffix=$5 |
| |
| device_fip="${input_payloads}/device-fip.bin${postfix}" |
| bb1st="${input_payloads}/bb1st${storage_type_suffix}.${chipset_variant_suffix}.bin${postfix}" |
| bl2e="${input_payloads}/blob-bl2e${storage_type_suffix}.${chipset_variant_suffix}.bin${postfix}" |
| bl2x="${input_payloads}/blob-bl2x.bin${postfix}" |
| |
| if [ ! -f ${device_fip} ] || \ |
| [ ! -f ${bb1st} ] || \ |
| [ ! -f ${bl2e} ] || \ |
| [ ! -f ${bl2x} ]; then |
| echo fip:${device_fip} |
| echo bb1st:${bb1st} |
| echo bl2e:${bl2e} |
| echo bl2x:${bl2x} |
| echo "Error: ${input_payloads}/ bootblob does not all exist... abort" |
| ls -la ${input_payloads}/ |
| exit -1 |
| fi |
| |
| file_info_cfg="${output_images}/aml-payload.cfg" |
| file_info_cfg_temp=${temp_cfg}.temp |
| |
| bootloader="${output_images}/u-boot.bin${storage_type_suffix}${postfix}" |
| sdcard_image="${output_images}/u-boot.bin.sd.bin${postfix}" |
| |
| #fake ddr fip 256KB |
| ddr_fip="${input_payloads}/${DDR_FIP_NAME}" |
| if [ ! -f ${ddr_fip} ]; then |
| echo "==== WARNING: use empty ddr-fip ====" |
| dd if=/dev/zero of=${ddr_fip} bs=1024 count=256 status=none |
| fi |
| |
| #cat those together with 4K upper aligned for sdcard |
| align_base=4096 |
| total_size=0 |
| for file in ${bb1st} ${bl2e} ${bl2x} ${ddr_fip} ${device_fip}; do |
| size=`stat -c "%s" ${file}` |
| upper=$[(size+align_base-1)/align_base*align_base] |
| total_size=$[total_size+upper] |
| echo ${file} ${size} ${upper} |
| done |
| |
| echo ${total_size} |
| rm -f ${bootloader} |
| dd if=/dev/zero of=${bootloader} bs=${total_size} count=1 status=none |
| |
| sector=512 |
| seek=0 |
| seek_sector=0 |
| dateStamp=SC2-`date +%Y%m%d%H%M%S` |
| |
| echo @AMLBOOT > ${file_info_cfg_temp} |
| dd if=${file_info_cfg_temp} of=${file_info_cfg} bs=1 count=8 conv=notrunc &> /dev/null |
| nItemNum=5 |
| nSizeHDR=$[64+nItemNum*16] |
| printf "01 %02x %02x %02x 00 00 00 00" $[(nItemNum)&0xFF] $[(nSizeHDR)&0xFF] $[((nSizeHDR)>>8)&0xFF] \ |
| | xxd -r -ps > ${file_info_cfg_temp} |
| cat ${file_info_cfg_temp} >> ${file_info_cfg} |
| |
| echo ${dateStamp} > ${file_info_cfg_temp} |
| dd if=${file_info_cfg_temp} of=${file_info_cfg} bs=1 count=16 oflag=append conv=notrunc &> /dev/null |
| |
| index=0 |
| arrPayload=("BBST" "BL2E" "BL2X" "DDRF" "DEVF"); |
| nPayloadOffset=0 |
| nPayloadSize=0 |
| for file in ${bb1st} ${bl2e} ${bl2x} ${ddr_fip} ${device_fip}; do |
| size=`stat -c "%s" ${file}` |
| size_sector=$[(size+align_base-1)/align_base*align_base] |
| nPayloadSize=$[size_sector] |
| size_sector=$[size_sector/sector] |
| seek_sector=$[seek/sector+seek_sector] |
| #nPayloadOffset=$[sector*(seek_sector+1)] |
| nPayloadOffset=$[sector*(seek_sector)] |
| echo ${file} ${seek_sector} ${size_sector} |
| dd if=${file} of=${bootloader} bs=${sector} seek=${seek_sector} conv=notrunc status=none |
| |
| echo ${arrPayload[$index]} > ${file_info_cfg_temp}.x |
| index=$((index+1)) |
| dd if=${file_info_cfg_temp}.x of=${file_info_cfg_temp} bs=1 count=4 &> /dev/null |
| rm -f ${file_info_cfg_temp}.x |
| printf "%02x %02x %02x %02x %02x %02x %02x %02x 00 00 00 00" $[(nPayloadOffset)&0xFF] $[((nPayloadOffset)>>8)&0xFF] $[((nPayloadOffset)>>16)&0xFF] $[((nPayloadOffset)>>24)&0xFF] \ |
| $[(nPayloadSize)&0xFF] $[((nPayloadSize)>>8)&0xFF] $[((nPayloadSize)>>16)&0xFF] $[((nPayloadSize)>>24)&0xFF] | xxd -r -ps >> ${file_info_cfg_temp} |
| dd if=${file_info_cfg_temp} of=${file_info_cfg} oflag=append conv=notrunc &> /dev/null |
| rm -f ${file_info_cfg_temp} |
| seek=$[(size+align_base-1)/align_base*align_base] |
| done |
| |
| openssl dgst -sha256 -binary ${file_info_cfg} > ${file_info_cfg}.sha256 |
| cat ${file_info_cfg} >> ${file_info_cfg}.sha256 |
| #cat ${file_info_cfg}.sha256 >> ${file_info_cfg} |
| rm -f ${file_info_cfg} |
| mv -f ${file_info_cfg}.sha256 ${file_info_cfg} |
| |
| dd if=${file_info_cfg} of=${bootloader} bs=512 seek=508 conv=notrunc status=none |
| |
| if [ ${storage_type_suffix} == ".sto" ]; then |
| echo "Image SDCARD" |
| total_size=$[total_size+512] |
| rm -f ${sdcard_image} |
| dd if=/dev/zero of=${sdcard_image} bs=${total_size} count=1 status=none |
| dd if=${file_info_cfg} of=${sdcard_image} conv=notrunc status=none |
| dd if=${bootloader} of=${sdcard_image} bs=512 seek=1 conv=notrunc status=none |
| |
| mv ${bootloader} ${output_images}/u-boot.bin${postfix} |
| fi |
| |
| rm -f ${file_info_cfg} |
| } |
| |
| echo ---- repackage devices signed uboot ---- |
| if [ -n ${chipset_variant} ]; then |
| ./fip/sc2/bin/device-vendor-scs-signing.sh --key-dir ${key_dir} --project ${projects} --input-package ${input_dir}/${board}-uboot-nocs.zip --out-dir ${input_dir} --chipset-variant ${chipset_variant} |
| else |
| ./fip/sc2/bin/device-vendor-scs-signing.sh --key-dir ${key_dir} --project ${projects} --input-package ${input_dir}/${board}-uboot-nocs.zip --out-dir ${input_dir} |
| fi |
| |
| echo ---- repackage chipset signed uboot ---- |
| |
| if [ ! -f ${BUILD_PATH}/device-fip-header.bin ]; then |
| echo "Warning: local device fip header templates" |
| cp soc/templates/sc2/${projects}/device-fip-header.bin ${work_dir} |
| fi |
| |
| ./fip/sc2/bin/gen-bl.sh ${work_dir} ${work_dir} ${work_dir} ${work_dir} ${chipset_variant} |
| postfix=.signed |
| mk_uboot ${work_dir} ${work_dir} ${postfix} .sto ${chipset_variant} |
| mk_uboot ${work_dir} ${work_dir} ${postfix} .usb ${chipset_variant} |
| |
| mv ${work_dir}/u-boot.bin.sd.bin.signed ${input_dir}/u-boot.bin.sd.bin_repackage.signed |
| mv ${work_dir}/u-boot.bin.signed ${input_dir}/u-boot.bin_repackage.signed |
| mv ${work_dir}/u-boot.bin.usb.signed ${input_dir}/u-boot.bin.usb_repackage.signed |