183 lines
6.4 KiB
Bash
Executable File
183 lines
6.4 KiB
Bash
Executable File
|
|
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
|