blob: 12934b29819a89c010dd5ee8580e8319fa86a442 [file] [log] [blame] [edit]
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