FIP: t5m package uboot inherit form s5 [1/1]
PD#SWPL-90075
Problem:
t5m need storage boot
Solution:
refine package scripts for t5m
Verify:
z1/ptm
Change-Id: I519386e673c7979beacf441c9c05ab4665cc4c42
Signed-off-by: Bo Lv <bo.lv@amlogic.com>
diff --git a/t5m/Makefile b/t5m/Makefile
index 2fb439f..0144743 100644
--- a/t5m/Makefile
+++ b/t5m/Makefile
@@ -3,9 +3,10 @@
# Rules
#
-DEVICE_SCS_KEY_TOP ?= $(CURDIR)/keys/dev-keys/sc2/device/
+DEVICE_SCS_KEY_TOP ?= $(CURDIR)/keys/dev-keys/s5/device/
DEVICE_ROOTRSA_INDEX ?= 0
-PROJECT ?= s905x4
+PROJECT ?= s928x
+SOC_FAMILY ?= s5
DEVICE_SCS_SEGID ?= 0x0
DEVICE_VENDOR_SEGID ?= 0x0
DEVICE_SCS_VERS ?= 0x0
@@ -15,6 +16,7 @@
ARGS += "DEVICE_SCS_KEY_TOP=$(DEVICE_SCS_KEY_TOP)"
ARGS += "DEVICE_ROOTRSA_INDEX=$(DEVICE_ROOTRSA_INDEX)"
ARGS += "PROJECT=$(PROJECT)"
+ARGS += "SOC_FAMILY=$(SOC_FAMILY)"
ARGS += "DEVICE_INPUT_PATH=${DEVICE_INPUT_PATH}"
ARGS += "DEVICE_OUTPUT_PATH=${DEVICE_OUTPUT_PATH}"
ARGS += "DEVICE_VARIANT_SUFFIX=${DEVICE_VARIANT_SUFFIX}"
diff --git a/t5m/aml_ddr.fw b/t5m/aml_ddr.fw
deleted file mode 100755
index 390275a..0000000
--- a/t5m/aml_ddr.fw
+++ /dev/null
Binary files differ
diff --git a/t5m/bin/add-dvinit-params.sh b/t5m/bin/add-dvinit-params.sh
index 293fc54..08084ec 100755
--- a/t5m/bin/add-dvinit-params.sh
+++ b/t5m/bin/add-dvinit-params.sh
@@ -19,6 +19,7 @@
BASEDIR_TEMPLATE=$1
BASEDIR_PAYLOAD=$2
BASEDIR_OUTPUT_BLOB=$3
+SOC_FAMILY=$4
#
# Arguments
@@ -32,6 +33,8 @@
### Input: payloads ###
BB1ST_ARGS="${BB1ST_ARGS} --infile-dvinit-params=${BASEDIR_PAYLOAD}"
+BB1ST_ARGS="${BB1ST_ARGS} --scs-family=${SOC_FAMILY}"
+
### Output: blobs ###
BB1ST_ARGS="${BB1ST_ARGS} --outfile-bb1st=${BASEDIR_OUTPUT_BLOB}"
diff --git a/t5m/bin/device-vendor-scs-signing.sh b/t5m/bin/device-vendor-scs-signing.sh
index 7488caa..a0ec91c 100755
--- a/t5m/bin/device-vendor-scs-signing.sh
+++ b/t5m/bin/device-vendor-scs-signing.sh
@@ -86,18 +86,18 @@
sector=512
seek=0
seek_sector=0
- dateStamp=SC2-`date +%Y%m%d%H%M%S`
+ dateStamp=T5M-${part}-`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] \
+ printf "02 %02x %02x %02x" $[(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
+ dd if=${file_info_cfg_temp} of=${file_info_cfg} bs=1 count=20 oflag=append conv=notrunc &> /dev/null
index=0
arrPayload=("BBST" "BL2E" "BL2X" "DDRF" "DEVF");
@@ -131,7 +131,7 @@
rm -f ${file_info_cfg}
mv -f ${file_info_cfg}.sha256 ${file_info_cfg}
- dd if=${file_info_cfg} of=${bootloader} bs=512 seek=332 conv=notrunc status=none
+ dd if=${file_info_cfg} of=${bootloader} bs=512 seek=404 conv=notrunc status=none
if [ ${storage_type_suffix} == ".sto" ]; then
total_size=$[total_size+512]
@@ -222,7 +222,6 @@
;;
--out-dir)
output_dir="${argv[$i]}"
- check_dir "${output_dir}"
;;
*)
echo "Unknown option $arg";
@@ -244,7 +243,6 @@
trace " arb-config ${arb_config}"
trace " out-dir ${output_dir}"
-
if [ -z "${key_dir}" ]; then
usage
fi
@@ -320,4 +318,4 @@
if [ -d ${temp_dir} ]; then
rm -rf ${temp_dir}
-fi
\ No newline at end of file
+fi
diff --git a/t5m/bin/efuse-gen.sh b/t5m/bin/efuse-gen.sh
index 7db68b1..f6de0fd 100755
--- a/t5m/bin/efuse-gen.sh
+++ b/t5m/bin/efuse-gen.sh
@@ -50,8 +50,7 @@
cat << EOF
Usage: $(basename $0) --help
$(basename $0) --version
- $(basename $0) [--input base.efuse.bin] \\
- [--device-roothash device_roothash.bin] \\
+ $(basename $0) [--device-roothash device_roothash.bin] \\
[--dvgk dvgk.bin] \\
[--dvuk dvuk.bin] \\
[--enable-usb-password true] \\
@@ -61,6 +60,10 @@
-o pattern.efuse
$(basename $0) --audio-id audio_id_value \\
-o audio_id.efuse
+ $(basename $0) --device-scs-segid seg_id_value \\
+ -o device-scs-id.efuse
+ $(basename $0) --device-vendor-segid vend_id_value \\
+ -o device-vendor-id.efuse
EOF
exit 1
}
@@ -68,23 +71,14 @@
function generate_efuse_device_pattern() {
local argv=("$@")
local i=0
-
local patt_text=$(mktemp --tmpdir)
- local patt=$(mktemp --tmpdir)
- local wrlock=$(mktemp --tmpdir)
- local license0=$(mktemp --tmpdir)
- local license1=$(mktemp --tmpdir)
- local efusebit=$(mktemp --tmpdir)
-
# Parse args
while [ $i -lt $# ]; do
arg="${argv[$i]}"
#echo "i=$i argv[$i]=${argv[$i]}"
i=$((i + 1))
case "$arg" in
- --input)
- input="${argv[$i]}" ;;
-o)
output="${argv[$i]}" ;;
--dvgk)
@@ -121,187 +115,56 @@
check_opt_boolean enable-dvuk-derive-with-cid "$enable_dvuk_derive_with_cid"
check_opt_boolean enable-device-vendor-scs "$enable_device_vendor_scs"
- #efuse_obj mode
- if [ "$dvgk" != "" ]; then
- keyinfo="$(xxd -p -c 16 $dvgk)"
- echo "efuse_obj set DVGK $keyinfo" >> $patt_text
- echo "efuse_obj lock DVGK" >> $patt_text
- fi
+ if [ "$dvgk" != "" ]; then
+ keyinfo="$(xxd -p -c 16 $dvgk)"
+ echo "efuse_obj set DVGK $keyinfo" >> $patt_text
+ echo "efuse_obj lock DVGK" >> $patt_text
+ fi
- if [ "$dvuk" != "" ]; then
- keyinfo="$(xxd -p -c 16 $dvuk)"
- echo "efuse_obj set DVUK $keyinfo" >> $patt_text
- echo "efuse_obj lock DVUK" >> $patt_text
- fi
+ if [ "$dvuk" != "" ]; then
+ keyinfo="$(xxd -p -c 16 $dvuk)"
+ echo "efuse_obj set DVUK $keyinfo" >> $patt_text
+ echo "efuse_obj lock DVUK" >> $patt_text
+ fi
- if [ "$device_roothash" != "" ]; then
- keyinfo="$(xxd -p -c 32 $device_roothash)"
- echo "efuse_obj set HASH_NORMAL_DEVICE_ROOTCERT $keyinfo" >> $patt_text
- echo "efuse_obj lock HASH_NORMAL_DEVICE_ROOTCERT" >> $patt_text
- echo "efuse_obj set HASH_DFU_DEVICE_ROOTCERT $keyinfo" >> $patt_text
- echo "efuse_obj lock HASH_DFU_DEVICE_ROOTCERT" >> $patt_text
- fi
+ if [ "$device_roothash" != "" ]; then
+ keyinfo="$(xxd -p -c 32 $device_roothash)"
+ echo "efuse_obj set HASH_NORMAL_DEVICE_ROOTCERT $keyinfo" >> $patt_text
+ echo "efuse_obj lock HASH_NORMAL_DEVICE_ROOTCERT" >> $patt_text
+ echo "efuse_obj set HASH_DFU_DEVICE_ROOTCERT $keyinfo" >> $patt_text
+ echo "efuse_obj lock HASH_DFU_DEVICE_ROOTCERT" >> $patt_text
+ fi
- if [ "$enable_device_vendor_scs" == "true" ]; then
- echo "efuse_obj set FEAT_ENABLE_DEVICE_ROOT_PUBRSA_PROT 01" >> $patt_text
- echo "efuse_obj set FEAT_ENABLE_DEVICE_LVL1_PUBRSA_PROT 01" >> $patt_text
- echo "efuse_obj set FEAT_ENABLE_DEVICE_LVLX_PUBRSA_PROT 01" >> $patt_text
- echo "efuse_obj set FEAT_ENABLE_DEVICE_VENDOR_SIG 01" >> $patt_text
- echo "efuse_obj set FEAT_ENABLE_DEVICE_PROT 01" >> $patt_text
- echo "efuse_obj set FEAT_ENABLE_DEVICE_SCS_SIG 01" >> $patt_text
- fi
+ if [ "$enable_device_vendor_scs" == "true" ]; then
+ echo "efuse_obj set FEAT_ENABLE_DEVICE_ROOT_PUBRSA_PROT 01" >> $patt_text
+ echo "efuse_obj set FEAT_ENABLE_DEVICE_LVL1_PUBRSA_PROT 01" >> $patt_text
+ echo "efuse_obj set FEAT_ENABLE_DEVICE_LVLX_PUBRSA_PROT 01" >> $patt_text
+ echo "efuse_obj set FEAT_ENABLE_DEVICE_VENDOR_SIG 01" >> $patt_text
+ echo "efuse_obj set FEAT_ENABLE_DEVICE_PROT 01" >> $patt_text
+ echo "efuse_obj set FEAT_ENABLE_DEVICE_SCS_SIG 01" >> $patt_text
+ fi
- if [ "$enable_usb_password" == "true" ]; then
- echo "efuse_obj set FEAT_ENABLE_USB_AUTH 01" >> $patt_text
- fi
+ if [ "$enable_usb_password" == "true" ]; then
+ echo "efuse_obj set FEAT_ENABLE_USB_AUTH 01" >> $patt_text
+ fi
- if [ "$enable_dif_password" == "true" ]; then
- echo "efuse_obj set FEAT_ENABLE_DIF_MASTER_PROT 01" >> $patt_text
- fi
+ if [ "$enable_dif_password" == "true" ]; then
+ echo "efuse_obj set FEAT_ENABLE_DIF_MASTER_PROT 01" >> $patt_text
+ fi
- if [ "$enable_dvuk_derive_with_cid" == "true" ]; then
- echo "efuse_obj set FEAT_ENABLE_DVUK_DERIVE_WITH_CID 01" >> $patt_text
- fi
+ if [ "$enable_dvuk_derive_with_cid" == "true" ]; then
+ echo "efuse_obj set FEAT_ENABLE_DVUK_DERIVE_WITH_CID 01" >> $patt_text
+ fi
- cp $patt_text $output.obj
-
- rm -f $patt_text
-
- # Generate empty eFUSE pattern data
- if [ -n "$input" ]; then
- dd if="$input" of=$patt count=1024 bs=1 &> /dev/null
- else
- dd if=/dev/zero of=$patt count=1024 bs=1 &> /dev/null
- fi
-
- # Construct wrlock bits
- dd if=$patt of=$wrlock bs=16 skip=29 count=1 &> /dev/null
- b_1d2=$(xxd -ps -s2 -l1 $wrlock)
- b_1d3=$(xxd -ps -s3 -l1 $wrlock)
- b_1d6=$(xxd -ps -s6 -l1 $wrlock)
-
- if [ "$dvgk" != "" ]; then
- dd if="$dvgk" of="$patt" bs=16 seek=50 count=1 \
- conv=notrunc >& /dev/null
- b_1d6="$(printf %02x $(( 0x$b_1d6 | 0x04 )))"
- fi
-
- if [ "$dvuk" != "" ]; then
- dd if="$dvuk" of="$patt" bs=16 seek=51 count=1 \
- conv=notrunc >& /dev/null
- b_1d6="$(printf %02x $(( 0x$b_1d6 | 0x08 )))"
- fi
-
- if [ "$device_roothash" != "" ]; then
- dd if="$device_roothash" of="$patt" bs=16 seek=23 count=2 \
- conv=notrunc >& /dev/null
- dd if="$device_roothash" of="$patt" bs=16 seek=25 count=2 \
- conv=notrunc >& /dev/null
- b_1d2="$(printf %02x $(( 0x$b_1d2 | 0x80 )))"
- b_1d3="$(printf %02x $(( 0x$b_1d3 | 0x07 )))"
- fi
-
- echo $b_1d2 | xxd -r -p > $efusebit
- dd if=$efusebit of=$wrlock bs=1 seek=2 count=1 conv=notrunc >& /dev/null
- echo $b_1d3 | xxd -r -p > $efusebit
- dd if=$efusebit of=$wrlock bs=1 seek=3 count=1 conv=notrunc >& /dev/null
- echo $b_1d6 | xxd -r -p > $efusebit
- dd if=$efusebit of=$wrlock bs=1 seek=6 count=1 conv=notrunc >& /dev/null
-
- filesize=$(wc -c < $wrlock)
- if [ $filesize -ne 16 ]; then
- echo Internal Error -- Invalid write-lock pattern length
- exit 1
- fi
- dd if=$wrlock of=$patt bs=16 seek=29 count=1 conv=notrunc >& /dev/null
-
- dd if=$patt of=$license0 bs=16 skip=0 count=1 &> /dev/null
- b_001=$(xxd -ps -s1 -l1 $license0)
- b_002=$(xxd -ps -s2 -l1 $license0)
- b_003=$(xxd -ps -s3 -l1 $license0)
- if [ "$enable_device_vendor_scs" == "true" ]; then
- b_001="$(printf %02x $(( 0x$b_001 | 0x0C )))"
- b_002="$(printf %02x $(( 0x$b_002 | 0xFF )))"
- b_003="$(printf %02x $(( 0x$b_003 | 0x03 )))"
- fi
- echo $b_001 | xxd -r -p > $efusebit
- dd if=$efusebit of=$license0 bs=1 seek=1 count=1 conv=notrunc >& /dev/null
- echo $b_002 | xxd -r -p > $efusebit
- dd if=$efusebit of=$license0 bs=1 seek=2 count=1 conv=notrunc >& /dev/null
- echo $b_003 | xxd -r -p > $efusebit
- dd if=$efusebit of=$license0 bs=1 seek=3 count=1 conv=notrunc >& /dev/null
-
- b_007=$(xxd -ps -s7 -l1 $license0)
- if [ "$enable_usb_password" == "true" ]; then
- b_007="$(printf %02x $(( 0x$b_007 | 0x80 )))"
- fi
- echo $b_007 | xxd -r -p > $efusebit
- dd if=$efusebit of=$license0 bs=1 seek=7 count=1 conv=notrunc >& /dev/null
-
- filesize=$(wc -c < $license0)
- if [ $filesize -ne 16 ]; then
- echo Internal Error -- Invalid license0 pattern length
- exit 1
- fi
- dd if=$license0 of=$patt bs=16 seek=0 count=1 conv=notrunc >& /dev/null
-
- dd if=$patt of=$license1 bs=16 skip=1 count=1 &> /dev/null
- b_010=$(xxd -ps -s0 -l1 $license1)
- if [ "$enable_dif_password" == "true" ]; then
- b_010="$(printf %02x $(( 0x$b_010 | 0x01 )))"
- fi
- echo $b_010 | xxd -r -p > $efusebit
- dd if=$efusebit of=$license1 bs=1 seek=0 count=1 conv=notrunc >& /dev/null
-
- b_015=$(xxd -ps -s5 -l1 $license1)
- if [ "$enable_dvuk_derive_with_cid" == "true" ]; then
- b_015="$(printf %02x $(( 0x$b_015 | 0x02 )))"
- fi
- echo $b_015 | xxd -r -p > $efusebit
- dd if=$efusebit of=$license1 bs=1 seek=5 count=1 conv=notrunc >& /dev/null
-
- filesize=$(wc -c < $license1)
- if [ $filesize -ne 16 ]; then
- echo Internal Error -- Invalid license1 pattern length
- exit 1
- fi
- dd if=$license1 of=$patt bs=16 seek=1 count=1 conv=notrunc >& /dev/null
-
- ${BASEDIR_TOP}/aml_encrypt_t3 --efsproc --input $patt --output $output --option=debug
-
- rm -f $patt
- rm -f $wrlock
- rm -f $license0
- rm -f $license1
- rm -f $efusebit
-}
-
-function append_uint32_le() {
- local input=$1
- local output=$2
- local v=
- local vrev=
- v=$(printf %08x $input)
- # 00010001
- vrev=${v:6:2}${v:4:2}${v:2:2}${v:0:2}
-
- echo $vrev | xxd -r -p >> $output
+ cp $patt_text $output
+ rm -f $patt_text
}
function generate_audio_id_pattern() {
local argv=("$@")
local i=0
-
local patt_text=$(mktemp --tmpdir)
- local patt=$(mktemp --tmpdir)
- local audio_id_efuse=$(mktemp --tmpdir)
- # default audio_id_offset 0xB8
- local audio_id_offset=184
- local audio_id_size=4
- local wrlock=$(mktemp --tmpdir)
- local efusebit=$(mktemp --tmpdir)
-
# Parse args
i=0
while [ $i -lt $# ]; do
@@ -328,40 +191,94 @@
exit 1
fi
- #efuse_obj mode
- v=$(printf %08x $audio_id_value)
- id_info=${v:6:2}${v:4:2}${v:2:2}${v:0:2}
- echo "efuse_obj set AUDIO_VENDOR_ID $id_info" >> $patt_text
- echo "efuse_obj lock AUDIO_VENDOR_ID" >> $patt_text
- cp $patt_text $output.obj
- rm -f $patt_text
+ v=$(printf %08x $audio_id_value)
+ id_info=${v:6:2}${v:4:2}${v:2:2}${v:0:2}
+ echo "efuse_obj set AUDIO_VENDOR_ID $id_info" >> $patt_text
+ echo "efuse_obj lock AUDIO_VENDOR_ID" >> $patt_text
- # Generate empty eFUSE pattern data
- dd if=/dev/zero of=$patt count=1024 bs=1 &> /dev/null
+ cp $patt_text $output
+ rm -f $patt_text
+}
- append_uint32_le $audio_id_value $audio_id_efuse
- dd if=$audio_id_efuse of=$patt bs=1 seek=$audio_id_offset count=$audio_id_size \
- conv=notrunc >& /dev/null
- dd if=$patt of=$wrlock bs=16 skip=29 count=1 &> /dev/null
- b_1dd=$(xxd -ps -s13 -l1 $wrlock)
- b_1dd="$(printf %02x $(( 0x$b_1dd | 0x04 )))"
- echo $b_1dd | xxd -r -p > $efusebit
- dd if=$efusebit of=$wrlock bs=1 seek=13 count=1 conv=notrunc >& /dev/null
+function generate_mkt_id_pattern() {
+ local argv=("$@")
+ local i=0
+ local patt_text=$(mktemp --tmpdir)
- filesize=$(wc -c < $wrlock)
- if [ $filesize -ne 16 ]; then
- echo Internal Error -- Invalid write-lock pattern length
- exit 1
- fi
- dd if=$wrlock of=$patt bs=16 seek=29 count=1 conv=notrunc >& /dev/null
+ # Parse args
+ i=0
+ while [ $i -lt $# ]; do
+ arg="${argv[$i]}"
+ #echo "i=$i argv[$i]=${argv[$i]}"
+ i=$((i + 1))
+ case "$arg" in
+ --device-scs-segid)
+ mkt_id_value="${argv[$i]}" ;;
+ -o)
+ output="${argv[$i]}" ;;
+ *)
+ echo "Unknown option $arg"; exit 1
+ ;;
+ esac
+ i=$((i + 1))
+ done
- ${BASEDIR_TOP}/aml_encrypt_t3 --efsproc --input $patt --output $output --option=debug
+ # Verify args
+ if [ -z "$output" ]; then echo Error: Missing output file option -o; exit 1; fi
- rm -f $patt
- rm -f $audio_id_efuse
- rm -f $wrlock
- rm -f $efusebit
+ if [ -z $mkt_id_value ]; then
+ echo Error: invalid mkt_id_value
+ exit 1
+ fi
+
+ v=$(printf %08x $mkt_id_value)
+ id_info=${v:6:2}${v:4:2}${v:2:2}${v:0:2}
+ echo "efuse_obj set DEVICE_SCS_SEGID $id_info" >> $patt_text
+ echo "efuse_obj lock DEVICE_SCS_SEGID" >> $patt_text
+
+ cp $patt_text $output
+ rm -f $patt_text
+}
+
+function generate_vendor_id_pattern() {
+ local argv=("$@")
+ local i=0
+ local patt_text=$(mktemp --tmpdir)
+
+ # Parse args
+ i=0
+ while [ $i -lt $# ]; do
+ arg="${argv[$i]}"
+ #echo "i=$i argv[$i]=${argv[$i]}"
+ i=$((i + 1))
+ case "$arg" in
+ --device-vendor-segid)
+ vend_id_value="${argv[$i]}" ;;
+ -o)
+ output="${argv[$i]}" ;;
+ *)
+ echo "Unknown option $arg"; exit 1
+ ;;
+ esac
+ i=$((i + 1))
+ done
+
+ # Verify args
+ if [ -z "$output" ]; then echo Error: Missing output file option -o; exit 1; fi
+
+ if [ -z $vend_id_value ]; then
+ echo Error: invalid vendor_id_value
+ exit 1
+ fi
+
+ v=$(printf %08x $vend_id_value)
+ id_info=${v:6:2}${v:4:2}${v:2:2}${v:0:2}
+ echo "efuse_obj set DEVICE_VENDOR_SEGID $id_info" >> $patt_text
+ echo "efuse_obj lock DEVICE_VENDOR_SEGID" >> $patt_text
+
+ cp $patt_text $output
+ rm -f $patt_text
}
parse_main() {
@@ -375,6 +292,12 @@
*--audio-id*)
generate_audio_id_pattern "$@"
;;
+ *--device-vendor-segid*)
+ generate_vendor_id_pattern "$@"
+ ;;
+ *--device-scs-segid*)
+ generate_mkt_id_pattern "$@"
+ ;;
*-o*)
generate_efuse_device_pattern "$@"
;;
diff --git a/t5m/bin/gen-boot-blob-bl2-final.sh b/t5m/bin/gen-boot-blob-bl2-final.sh
index 9e0d54d..a3f79f9 100755
--- a/t5m/bin/gen-boot-blob-bl2-final.sh
+++ b/t5m/bin/gen-boot-blob-bl2-final.sh
@@ -22,22 +22,22 @@
CHIPSET_NAME=$3
KEY_TYPE=$4
-SOC=$5
+SOC_FAMILY=$5
CHIPSET_VARIANT_SUFFIX=$6
-BASEDIR_AESKEY_PROT_BL2="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC}/chipset/bl2/aes/${CHIPSET_NAME}"
-BASEDIR_RSAKEY_LVLX_BL2="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC}/chipset/bl2/rsa/${CHIPSET_NAME}"
+BASEDIR_AESKEY_PROT_BL2="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC_FAMILY}/chipset/bl2/aes/${CHIPSET_NAME}"
+BASEDIR_RSAKEY_LVLX_BL2="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC_FAMILY}/chipset/bl2/rsa/${CHIPSET_NAME}"
-BASEDIR_AESKEY_PROT_BL31="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC}/chipset/bl31/aes/${CHIPSET_NAME}"
-BASEDIR_RSAKEY_LVLX_BL31="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC}/chipset/bl31/rsa/${CHIPSET_NAME}"
+BASEDIR_AESKEY_PROT_BL31="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC_FAMILY}/chipset/bl31/aes/${CHIPSET_NAME}"
+BASEDIR_RSAKEY_LVLX_BL31="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC_FAMILY}/chipset/bl31/rsa/${CHIPSET_NAME}"
-BASEDIR_AESKEY_PROT_BL32="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC}/chipset/bl32/aes/${CHIPSET_NAME}"
-BASEDIR_RSAKEY_LVLX_BL32="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC}/chipset/bl32/rsa/${CHIPSET_NAME}"
+BASEDIR_AESKEY_PROT_BL32="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC_FAMILY}/chipset/bl32/aes/${CHIPSET_NAME}"
+BASEDIR_RSAKEY_LVLX_BL32="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC_FAMILY}/chipset/bl32/rsa/${CHIPSET_NAME}"
-BASEDIR_AESKEY_PROT_BL40="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC}/chipset/bl40/aes/${CHIPSET_NAME}"
-BASEDIR_RSAKEY_LVLX_BL40="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC}/chipset/bl40/rsa/${CHIPSET_NAME}"
+BASEDIR_AESKEY_PROT_BL40="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC_FAMILY}/chipset/bl40/aes/${CHIPSET_NAME}"
+BASEDIR_RSAKEY_LVLX_BL40="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC_FAMILY}/chipset/bl40/rsa/${CHIPSET_NAME}"
-BASEDIR_TEMPLATE="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC}/chipset/cert-template/${CHIPSET_NAME}"
+BASEDIR_TEMPLATE="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC_FAMILY}/chipset/cert-template/${CHIPSET_NAME}"
BASEDIR_OUTPUT_BLOB=$2
postfix=.signed
@@ -67,7 +67,7 @@
### Features, flags and switches ###
BB1ST_ARGS="${BB1ST_ARGS} --switch-chipset-sign-bl2=0"
-#BB1ST_ARGS="${BB1ST_ARGS} --scs-family=${SOC}"
+BB1ST_ARGS="${BB1ST_ARGS} --scs-family=${SOC_FAMILY}"
### Output: blobs ###
BB1ST_ARGS="${BB1ST_ARGS} --outfile-bb1st=${BASEDIR_OUTPUT_BLOB}/bb1st${FEAT_BL2_TEMPLATE_TYPE}${CHIPSET_VARIANT_SUFFIX}.bin${postfix}"
diff --git a/t5m/bin/gen-boot-blob-bl2-only.sh b/t5m/bin/gen-boot-blob-bl2-only.sh
index 36704a4..08a49c9 100755
--- a/t5m/bin/gen-boot-blob-bl2-only.sh
+++ b/t5m/bin/gen-boot-blob-bl2-only.sh
@@ -22,22 +22,22 @@
CHIPSET_NAME=$3
KEY_TYPE=$4
-SOC=$5
+SOC_FAMILY=$5
CHIPSET_VARIANT_SUFFIX=$6
-BASEDIR_AESKEY_PROT_BL2="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC}/chipset/bl2/aes/${CHIPSET_NAME}"
-BASEDIR_RSAKEY_LVLX_BL2="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC}/chipset/bl2/rsa/${CHIPSET_NAME}"
+BASEDIR_AESKEY_PROT_BL2="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC_FAMILY}/chipset/bl2/aes/${CHIPSET_NAME}"
+BASEDIR_RSAKEY_LVLX_BL2="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC_FAMILY}/chipset/bl2/rsa/${CHIPSET_NAME}"
-BASEDIR_AESKEY_PROT_BL31="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC}/chipset/bl31/aes/${CHIPSET_NAME}"
-BASEDIR_RSAKEY_LVLX_BL31="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC}/chipset/bl31/rsa/${CHIPSET_NAME}"
+BASEDIR_AESKEY_PROT_BL31="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC_FAMILY}/chipset/bl31/aes/${CHIPSET_NAME}"
+BASEDIR_RSAKEY_LVLX_BL31="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC_FAMILY}/chipset/bl31/rsa/${CHIPSET_NAME}"
-BASEDIR_AESKEY_PROT_BL32="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC}/chipset/bl32/aes/${CHIPSET_NAME}"
-BASEDIR_RSAKEY_LVLX_BL32="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC}/chipset/bl32/rsa/${CHIPSET_NAME}"
+BASEDIR_AESKEY_PROT_BL32="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC_FAMILY}/chipset/bl32/aes/${CHIPSET_NAME}"
+BASEDIR_RSAKEY_LVLX_BL32="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC_FAMILY}/chipset/bl32/rsa/${CHIPSET_NAME}"
-BASEDIR_AESKEY_PROT_BL40="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC}/chipset/bl40/aes/${CHIPSET_NAME}"
-BASEDIR_RSAKEY_LVLX_BL40="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC}/chipset/bl40/rsa/${CHIPSET_NAME}"
+BASEDIR_AESKEY_PROT_BL40="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC_FAMILY}/chipset/bl40/aes/${CHIPSET_NAME}"
+BASEDIR_RSAKEY_LVLX_BL40="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC_FAMILY}/chipset/bl40/rsa/${CHIPSET_NAME}"
-BASEDIR_TEMPLATE="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC}/chipset/cert-template/${CHIPSET_NAME}"
+BASEDIR_TEMPLATE="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC_FAMILY}/chipset/cert-template/${CHIPSET_NAME}"
BASEDIR_OUTPUT_BLOB=$2
postfix=.signed
@@ -62,6 +62,8 @@
### Input: pre-generated ProtKey for payloads
BB1ST_ARGS="${BB1ST_ARGS} --infile-aes256-bl2-payload=${BASEDIR_AESKEY_PROT_BL2}/genkey-prot-bl2.bin"
+BB1ST_ARGS="${BB1ST_ARGS} --scs-family=${SOC_FAMILY}"
+
### Features, flags and switches ###
### Output: blobs ###
diff --git a/t5m/bin/gen-boot-blobs.sh b/t5m/bin/gen-boot-blobs.sh
index 368b981..b16dd5e 100755
--- a/t5m/bin/gen-boot-blobs.sh
+++ b/t5m/bin/gen-boot-blobs.sh
@@ -22,22 +22,22 @@
CHIPSET_NAME=$3
KEY_TYPE=$4
-SOC=$5
+SOC_FAMILY=$5
CHIPSET_VARIANT_SUFFIX=$6
-BASEDIR_AESKEY_PROT_BL2="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC}/chipset/bl2/aes/${CHIPSET_NAME}"
-BASEDIR_RSAKEY_LVLX_BL2="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC}/chipset/bl2/rsa/${CHIPSET_NAME}"
+BASEDIR_AESKEY_PROT_BL2="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC_FAMILY}/chipset/bl2/aes/${CHIPSET_NAME}"
+BASEDIR_RSAKEY_LVLX_BL2="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC_FAMILY}/chipset/bl2/rsa/${CHIPSET_NAME}"
-BASEDIR_AESKEY_PROT_BL31="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC}/chipset/bl31/aes/${CHIPSET_NAME}"
-BASEDIR_RSAKEY_LVLX_BL31="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC}/chipset/bl31/rsa/${CHIPSET_NAME}"
+BASEDIR_AESKEY_PROT_BL31="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC_FAMILY}/chipset/bl31/aes/${CHIPSET_NAME}"
+BASEDIR_RSAKEY_LVLX_BL31="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC_FAMILY}/chipset/bl31/rsa/${CHIPSET_NAME}"
-BASEDIR_AESKEY_PROT_BL32="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC}/chipset/bl32/aes/${CHIPSET_NAME}"
-BASEDIR_RSAKEY_LVLX_BL32="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC}/chipset/bl32/rsa/${CHIPSET_NAME}"
+BASEDIR_AESKEY_PROT_BL32="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC_FAMILY}/chipset/bl32/aes/${CHIPSET_NAME}"
+BASEDIR_RSAKEY_LVLX_BL32="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC_FAMILY}/chipset/bl32/rsa/${CHIPSET_NAME}"
-BASEDIR_AESKEY_PROT_BL40="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC}/chipset/bl40/aes/${CHIPSET_NAME}"
-BASEDIR_RSAKEY_LVLX_BL40="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC}/chipset/bl40/rsa/${CHIPSET_NAME}"
+BASEDIR_AESKEY_PROT_BL40="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC_FAMILY}/chipset/bl40/aes/${CHIPSET_NAME}"
+BASEDIR_RSAKEY_LVLX_BL40="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC_FAMILY}/chipset/bl40/rsa/${CHIPSET_NAME}"
-BASEDIR_TEMPLATE="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC}/chipset/cert-template/${CHIPSET_NAME}"
+BASEDIR_TEMPLATE="${BASEDIR_TOP}/keys/${KEY_TYPE}/${SOC_FAMILY}/chipset/cert-template/${CHIPSET_NAME}"
BASEDIR_OUTPUT_BLOB=$2
postfix=.signed
@@ -87,7 +87,7 @@
BB1ST_ARGS="${BB1ST_ARGS} --feature-bl2e-sigprot-mode"
fi
-#BB1ST_ARGS="${BB1ST_ARGS} --scs-family=${SOC}"
+BB1ST_ARGS="${BB1ST_ARGS} --scs-family=${SOC_FAMILY}"
### Output: blobs ###
BB1ST_ARGS="${BB1ST_ARGS} --outfile-bb1st=${BASEDIR_OUTPUT_BLOB}/bb1st${FEAT_BL2_TEMPLATE_TYPE}${CHIPSET_VARIANT_SUFFIX}.bin${postfix}"
diff --git a/t5m/bin/sign-blx.sh b/t5m/bin/sign-blx.sh
index 0ea0a56..62941e9 100755
--- a/t5m/bin/sign-blx.sh
+++ b/t5m/bin/sign-blx.sh
@@ -9,52 +9,29 @@
#BASEDIR_BUILD="${BASEDIR_TOP}/output"
BASEDIR_BUILD="${BASEDIR_TOP}/`date +%Y%m%d%H%M%S%N`"
postfix=.signed
-declare -a BLX_BIN_SIZE=("183200" "65536" "65536" "2048" "86016" "262144" "524288" "98304")
+declare -a BLX_BIN_SIZE=("183200" "65536" "65536" "2048" "212992" "262144" "524288" "98304")
-function process_ddrfw() {
- local ddr_input=$1
- local ddr_output=$2
- local ddr_type=$3
+declare CHIPACS_SIZE=${BLX_BIN_SIZE[3]}
+declare DDRFW_SIZE=${BLX_BIN_SIZE[4]}
- if [ "$ddr_type" == "ddr4" ]; then
- dd if=${ddr_input}/ddr4_1d.fw of=${ddr_output}/ddrfw_1d.bin skip=96 bs=1 count=36864 &> /dev/null
- dd if=${ddr_input}/ddr4_2d.fw of=${ddr_output}/ddrfw_2d.bin skip=96 bs=1 count=36864 &> /dev/null
- elif [ "$ddr_type" == "ddr3" ]; then
- dd if=${ddr_input}/ddr3_1d.fw of=${ddr_output}/ddrfw_1d.bin skip=96 bs=1 count=36864 &> /dev/null
- dd if=/dev/zero of=${ddr_output}/ddrfw_2d.bin bs=36864 count=1
- elif [ "$ddr_type" == "lpddr4" ]; then
- dd if=${ddr_input}/lpddr4_1d.fw of=${ddr_output}/ddrfw_1d.bin skip=96 bs=1 count=36864 &> /dev/null
- dd if=${ddr_input}/lpddr4_2d.fw of=${ddr_output}/ddrfw_2d.bin skip=96 bs=1 count=36864 &> /dev/null
- elif [ "$ddr_type" == "lpddr3" ]; then
- dd if=${ddr_input}/lpddr3_1d.fw of=${ddr_output}/ddrfw_1d.bin skip=96 bs=1 count=36864 &> /dev/null
- dd if=/dev/zero of=${ddr_output}/ddrfw_2d.bin bs=36864 count=1
- else
- echo "un-recognized ddr_type: ${ddr_type}"
- echo "---- use default ddr4 ----"
- dd if=${ddr_input}/ddr4_1d.fw of=${ddr_output}/ddrfw_1d.bin skip=96 bs=1 count=36864 &> /dev/null
- dd if=${ddr_input}/ddr4_2d.fw of=${ddr_output}/ddrfw_2d.bin skip=96 bs=1 count=36864 &> /dev/null
+function split_ddrfw_from_chipacs() {
+ local input=$1
+ local output1=$2
+ local output2=$3
+ local size=`expr ${CHIPACS_SIZE} + ${DDRFW_SIZE}`
+ local input_size=`stat -c %s ${input}`
+
+ if [ $input_size -ne ${size} ]; then
+ echo "$input is not chipacs and ddrfw merge !!!"
+ return
fi
+ dd if=${input} of=${output1}.tmp bs=1 count=${CHIPACS_SIZE}
+ dd if=${input} of=${output2}.tmp skip=${CHIPACS_SIZE} bs=1 count=${DDRFW_SIZE}
+ cat ${output1}.tmp > ${output1}
+ cat ${output2}.tmp > ${output2}
+ rm -rf ${output1}.tmp ${output2}.tmp
- piei_size=`stat -c %s ${ddr_input}/piei.fw`
- if [ $piei_size -gt 12384 ]; then
- dd if=${ddr_input}/piei.fw of=${ddr_output}/ddrfw_piei.bin skip=96 bs=1 count=12288 &> /dev/null
- else
- dd if=/dev/zero of=${ddr_output}/ddrfw_piei.bin bs=12288 count=1 &> /dev/null
- dd if=${ddr_input}/piei.fw of=${ddr_output}/ddrfw_piei.bin skip=96 bs=1 conv=notrunc &> /dev/null
- fi
-
- cat ${ddr_output}/ddrfw_1d.bin ${ddr_output}/ddrfw_2d.bin \
- ${ddr_output}/ddrfw_piei.bin > ${ddr_output}/ddr-fwdata.bin
-
- if [ ! -f ${ddr_output}/ddr-fwdata.bin ]; then
- echo "ddr-fwdata payload does not exist in ${ddr_output} !"
- exit -1
- fi
- ddrfw_data_size=`stat -c %s ${ddr_output}/ddr-fwdata.bin`
- if [ $ddrfw_data_size -ne 86016 ]; then
- echo "ddr-fwdata size is not equal to 84K, $ddrfw_data_size"
- exit -1
- fi
+ return
}
function sign_blx() {
@@ -111,7 +88,7 @@
fi
if [ -z ${chipset_name} ]; then
- chipset_name="t982"
+ chipset_name="azp1"
fi
# select bl2/bl2e sign template
@@ -170,14 +147,17 @@
${EXEC_BASEDIR}/download-keys.sh ${key_type} ${soc} chipset
+ ddrfw_split_flag=0
+
if [ ${blxname} == "bl2" ] && [ ${build_type} == "normal" ]; then
if [ -z ${chip_acs} ] || [ ! -f ${chip_acs} ]; then
echo "chip_acs ${chip_acs} invalid"
exit 1
fi
+
dd if=${chip_acs} of=${BASEDIR_BUILD}/csinit-params.bin conv=notrunc &> /dev/null
dd if=${input} of=${BASEDIR_BUILD}/${blxname}-payload.bin conv=notrunc &> /dev/null
- #process_ddrfw ${BASEDIR_TOP} ${BASEDIR_BUILD} ${ddr_type}
+
${EXEC_BASEDIR}/gen-boot-blobs.sh ${BASEDIR_BUILD} ${BASEDIR_BUILD} ${chipset_name} ${key_type} ${soc} ${chipset_variant_suffix}
elif [ ${blxname} == "bl2" ] && [ ${build_type} == "bl2-only" ]; then
dd if=${input} of=${BASEDIR_BUILD}/${blxname}-payload.bin conv=notrunc &> /dev/null
@@ -187,8 +167,9 @@
echo "chip_acs ${chip_acs} invalid"
exit 1
fi
+
dd if=${chip_acs} of=${BASEDIR_BUILD}/csinit-params.bin conv=notrunc &> /dev/null
- #process_ddrfw ${BASEDIR_TOP} ${BASEDIR_BUILD} ${ddr_type}
+
dd if=${input} of=${BASEDIR_BUILD}/bb1st${FEAT_BL2_TEMPLATE_TYPE}${chipset_variant_suffix}.bin.bl2-only conv=notrunc &> /dev/null
${EXEC_BASEDIR}/gen-boot-blob-bl2-final.sh ${BASEDIR_BUILD} ${BASEDIR_BUILD} ${chipset_name} ${key_type} ${soc} ${chipset_variant_suffix}
elif [ ${blxname} == "bl2e" ] || [ ${blxname} == "bl2x" ]; then
diff --git a/t5m/build.sh b/t5m/build.sh
index 8741087..dcab1ff 100755
--- a/t5m/build.sh
+++ b/t5m/build.sh
@@ -74,7 +74,8 @@
if [ ! -f ${output}/bl2.bin.sto ] || \
[ ! -f ${output}/bl2.bin.usb ] || \
- [ ! -f ${output}/bl2e.bin ] || \
+ [ ! -f ${output}/bl2e.bin.sto ] || \
+ [ ! -f ${output}/bl2e.bin.usb ] || \
[ ! -f ${output}/bl2x.bin ]; then
echo "Error: ${output}/bl2/e/x.bin does not all exist... abort"
ls -la ${output}
@@ -99,52 +100,6 @@
dd if=/dev/zero of=${payload}/bl2x.bin bs=65536 count=1
dd if=${output}/bl2x.bin of=${payload}/bl2x.bin conv=notrunc
-
- echo "===================================================="
- echo "------ process for Synopsys ddr fw ------"
- INPUT_DDRFW=./${FIP_FOLDER}${CUR_SOC}
-
- if [ "$ddr_type" == "ddr4" ]; then
- dd if=${INPUT_DDRFW}/ddr4_1d.fw of=${payload}/ddrfw_1d.bin skip=96 bs=1 count=36864
- dd if=${INPUT_DDRFW}/ddr4_2d.fw of=${payload}/ddrfw_2d.bin skip=96 bs=1 count=36864
- elif [ "$ddr_type" == "ddr3" ]; then
- dd if=${INPUT_DDRFW}/ddr3_1d.fw of=${payload}/ddrfw_1d.bin skip=96 bs=1 count=36864
- dd if=/dev/zero of=${payload}/ddrfw_2d.bin bs=36864 count=1
- elif [ "$ddr_type" == "lpddr4" ]; then
- dd if=${INPUT_DDRFW}/lpddr4_1d.fw of=${payload}/ddrfw_1d.bin skip=96 bs=1 count=36864
- dd if=${INPUT_DDRFW}/lpddr4_2d.fw of=${payload}/ddrfw_2d.bin skip=96 bs=1 count=36864
- elif [ "$ddr_type" == "lpddr3" ]; then
- dd if=${INPUT_DDRFW}/lpddr3_1d.fw of=${payload}/ddrfw_1d.bin skip=96 bs=1 count=36864
- dd if=/dev/zero of=${payload}/ddrfw_2d.bin bs=36864 count=1
- else
- echo "un-recognized ddr_type: ${ddr_type}"
- echo "---- use default ddr4 ----"
- dd if=${INPUT_DDRFW}/ddr4_1d.fw of=${payload}/ddrfw_1d.bin skip=96 bs=1 count=36864
- dd if=${INPUT_DDRFW}/ddr4_2d.fw of=${payload}/ddrfw_2d.bin skip=96 bs=1 count=36864
- fi
-
- piei_size=`stat -c %s ${INPUT_DDRFW}/piei.fw`
- if [ $piei_size -gt 12384 ]; then
- dd if=${INPUT_DDRFW}/piei.fw of=${payload}/ddrfw_piei.bin skip=96 bs=1 count=12288
- else
- dd if=/dev/zero of=${payload}/ddrfw_piei.bin bs=12288 count=1
- dd if=${INPUT_DDRFW}/piei.fw of=${payload}/ddrfw_piei.bin skip=96 bs=1 conv=notrunc
- fi
-
- cat ${payload}/ddrfw_1d.bin ${payload}/ddrfw_2d.bin \
- ${payload}/ddrfw_piei.bin > ${payload}/ddrfw_data.bin
-
- if [ ! -f ${payload}/ddrfw_data.bin ]; then
- echo "ddrfw_data payload does not exist in ${payload} !"
- exit -1
- fi
- ddrfw_data_size=`stat -c %s ${payload}/ddrfw_data.bin`
- if [ $ddrfw_data_size -ne 86016 ]; then
- echo "ddr_fwdata size is not equal to 84K, $ddrfw_data_size"
- exit -1
- fi
-
-
echo "===================================================="
echo "------ process for device and chip params ------"
INPUT_PARAMS=${output}
@@ -170,7 +125,7 @@
fi
if [ $dev_acs_size -gt 8192 ]; then
- echo "chip acs size exceed limit 8192, $dev_acs_size"
+ echo "dev acs size exceed limit 8192, $dev_acs_size"
exit -1
else
dd if=/dev/zero of=${payload}/device_acs.bin bs=8192 count=1
@@ -496,18 +451,18 @@
sector=512
seek=0
seek_sector=0
- dateStamp=SC2-`date +%Y%m%d%H%M%S`
+ dateStamp=S5-${CHIPSET_NAME}-`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] \
+ printf "02 %02x %02x %02x" $[(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
+ dd if=${file_info_cfg_temp} of=${file_info_cfg} bs=1 count=20 oflag=append conv=notrunc &> /dev/null
index=0
arrPayload=("BBST" "BL2E" "BL2X" "DDRF" "DEVF");
@@ -541,7 +496,7 @@
rm -f ${file_info_cfg}
mv -f ${file_info_cfg}.sha256 ${file_info_cfg}
- dd if=${file_info_cfg} of=${bootloader} bs=512 seek=332 conv=notrunc status=none
+ dd if=${file_info_cfg} of=${bootloader} bs=512 seek=404 conv=notrunc status=none
if [ ${storage_type_suffix} == ".sto" ]; then
echo "Image SDCARD"
@@ -570,7 +525,6 @@
rm -f ${BUILD_PATH}/bl*.enc ${BUILD_PATH}/bl2*.sig
}
-
function encrypt_step() {
dbg "encrypt: $@"
local ret=0
@@ -580,6 +534,7 @@
echo "Err! aml_encrypt_${CUR_SOC} return $ret"
exit $ret
fi
+
}
function encrypt() {
@@ -607,15 +562,17 @@
# build final bootloader
-#mk_uboot ${BUILD_PATH} ${BUILD_PATH}
+ #mk_uboot ${BUILD_PATH} ${BUILD_PATH}
mk_uboot ${BUILD_PATH} ${BUILD_PATH} "" .sto ${CHIPSET_VARIANT_SUFFIX}
mk_uboot ${BUILD_PATH} ${BUILD_PATH} "" .usb ${CHIPSET_VARIANT_SUFFIX}
return
}
-function process_blx() {
+declare CHIPACS_SIZE="8192"
+declare DDRFW_SIZE="212992"
+function process_blx() {
# process loop
for loop in ${!BLX_NAME[@]}; do
@@ -623,15 +580,27 @@
[ -n "${BLX_RAWBIN_NAME[$loop]}" ] && \
[ -f ${BUILD_PATH}/${BLX_RAWBIN_NAME[$loop]} ]; then
if [ -n "${CONFIG_FORMER_SIGN}" ]; then
+ if [ ${BLX_NAME[$loop]} == "bl2" ]; then
+ ./${FIP_FOLDER}${CUR_SOC}/bin/gen-merge-bin.sh --input0 ${BUILD_PATH}/chip_acs.bin --size0 ${CHIPACS_SIZE} \
+ --input1 ${BUILD_PATH}/ddrfw_data.bin --size1 ${DDRFW_SIZE} --output ${BUILD_PATH}/chip_acs.bin
+ fi
./${FIP_FOLDER}${CUR_SOC}/bin/sign-blx.sh --blxname ${BLX_NAME[$loop]} --input ${BUILD_PATH}/${BLX_RAWBIN_NAME[$loop]} \
--output ${BUILD_PATH}/${BLX_BIN_NAME[$loop]} --chipset_name ${CHIPSET_NAME} --chipset_variant ${CHIPSET_VARIANT} \
--key_type ${AMLOGIC_KEY_TYPE} --soc ${CUR_SOC} --chip_acs ${BUILD_PATH}/chip_acs.bin --ddr_type ${DDRFW_TYPE}
else
if [ -n "${CONFIG_JENKINS_SIGN}" ]; then
+ if [ ${BLX_NAME[$loop]} == "bl2" ]; then
+ ./${FIP_FOLDER}${CUR_SOC}/bin/gen-merge-bin.sh --input0 ${BUILD_PATH}/chip_acs.bin --size0 ${CHIPACS_SIZE} \
+ --input1 ${BUILD_PATH}/ddrfw_data.bin --size1 ${DDRFW_SIZE} --output ${BUILD_PATH}/chip_acs.bin
+ fi
/usr/bin/python3 ./sign.py --type ${BLX_NAME[$loop]} --in ${BUILD_PATH}/${BLX_RAWBIN_NAME[$loop]} \
--out ${BUILD_PATH}/${BLX_BIN_NAME[$loop]} --chip ${CHIPSET_NAME} --chipVariant ${CHIPSET_VARIANT} \
--keyType ${AMLOGIC_KEY_TYPE} --chipAcsFile ${BUILD_PATH}/chip_acs.bin --ddrType ${DDRFW_TYPE}
else
+ if [ ${BLX_NAME[$loop]} == "bl2" ]; then
+ ./${FIP_FOLDER}${CUR_SOC}/bin/gen-merge-bin.sh --input0 ${BUILD_PATH}/chip_acs.bin --size0 ${CHIPACS_SIZE} \
+ --input1 ${BUILD_PATH}/ddrfw_data.bin --size1 ${DDRFW_SIZE} --output ${BUILD_PATH}/chip_acs.bin
+ fi
/usr/bin/python3 ./${FIP_FOLDER}/jenkins_sign.py --type ${BLX_NAME[$loop]} --in ${BUILD_PATH}/${BLX_RAWBIN_NAME[$loop]} \
--out ${BUILD_PATH}/${BLX_BIN_NAME[$loop]} --chip ${CHIPSET_NAME} --chipVariant ${CHIPSET_VARIANT} --keyType ${AMLOGIC_KEY_TYPE} \
--chipAcsFile ${BUILD_PATH}/chip_acs.bin --ddrType ${DDRFW_TYPE}
@@ -665,8 +634,8 @@
dd if=${BUILD_PATH}/device_acs.bin of=${BUILD_PATH}/dvinit-params.bin conv=notrunc &> /dev/null
fi
- ./${FIP_FOLDER}${CUR_SOC}/bin/add-dvinit-params.sh ${BUILD_PATH}/bb1st.sto${CHIPSET_VARIANT_SUFFIX}.bin.signed ${BUILD_PATH}/dvinit-params.bin ${BUILD_PATH}/bb1st.sto${CHIPSET_VARIANT_SUFFIX}.bin.signed
- ./${FIP_FOLDER}${CUR_SOC}/bin/add-dvinit-params.sh ${BUILD_PATH}/bb1st.usb${CHIPSET_VARIANT_SUFFIX}.bin.signed ${BUILD_PATH}/dvinit-params.bin ${BUILD_PATH}/bb1st.usb${CHIPSET_VARIANT_SUFFIX}.bin.signed
+ ./${FIP_FOLDER}${CUR_SOC}/bin/add-dvinit-params.sh ${BUILD_PATH}/bb1st.sto${CHIPSET_VARIANT_SUFFIX}.bin.signed ${BUILD_PATH}/dvinit-params.bin ${BUILD_PATH}/bb1st.sto${CHIPSET_VARIANT_SUFFIX}.bin.signed ${CUR_SOC}
+ ./${FIP_FOLDER}${CUR_SOC}/bin/add-dvinit-params.sh ${BUILD_PATH}/bb1st.usb${CHIPSET_VARIANT_SUFFIX}.bin.signed ${BUILD_PATH}/dvinit-params.bin ${BUILD_PATH}/bb1st.usb${CHIPSET_VARIANT_SUFFIX}.bin.signed ${CUR_SOC}
# fix size for BL30 128KB
if [ -f ${BUILD_PATH}/bl30.bin ]; then
@@ -684,13 +653,6 @@
dd if=/dev/zero of=${BUILD_PATH}/bl30-payload.bin bs=${BL30_BIN_SIZE} count=1 &> /dev/null
dd if=${BUILD_PATH}/bl30.bin of=${BUILD_PATH}/bl30-payload.bin conv=notrunc &> /dev/null
- if [ "y" == "${CONFIG_AML_BL33_COMPRESS_ENABLE}" ]; then
- mv -f ${BUILD_PATH}/bl33.bin ${BUILD_PATH}/bl33.bin.org
- encrypt_step --bl3sig --input ${BUILD_PATH}/bl33.bin.org --output ${BUILD_PATH}/bl33.bin.org.lz4 --compress lz4 --level v3 --type bl33
- #get LZ4 format bl33 image from bl33.bin.enc with offset 0x720
- dd if=${BUILD_PATH}/bl33.bin.org.lz4 of=${BUILD_PATH}/bl33.bin bs=1 skip=1824 >& /dev/null
- fi
-
# fix size for BL33 1024KB
if [ ! -f ${BUILD_PATH}/bl33.bin ]; then
echo "Error: ${BUILD_PATH}/bl33.bin does not exist... abort"
@@ -786,10 +748,14 @@
function copy_other_soc() {
cp ${BL33_BUILD_FOLDER}${BOARD_DIR}/firmware/acs.bin ${BUILD_PATH}/device_acs.bin -f
+ if [ ! -f ${BUILD_PATH}/chip_acs.bin ]; then
+ cp ./${FIP_FOLDER}${CUR_SOC}/chip_acs.bin ${BUILD_PATH}/chip_acs.bin -f
+ fi
# device acs params parse for ddr timing
#./${FIP_FOLDER}parse ${BUILD_PATH}/device_acs.bin
}
+
function package() {
# BUILD_PATH without "/"
x=$((${#BUILD_PATH}-1))
diff --git a/t5m/chip_acs.bin b/t5m/chip_acs.bin
new file mode 100755
index 0000000..753af8f
--- /dev/null
+++ b/t5m/chip_acs.bin
Binary files differ
diff --git a/t5m/ddr3_1d.fw b/t5m/ddr3_1d.fw
deleted file mode 100755
index 16586ff..0000000
--- a/t5m/ddr3_1d.fw
+++ /dev/null
Binary files differ
diff --git a/t5m/ddr4_1d.fw b/t5m/ddr4_1d.fw
deleted file mode 100755
index 1e95928..0000000
--- a/t5m/ddr4_1d.fw
+++ /dev/null
Binary files differ
diff --git a/t5m/ddr4_2d.fw b/t5m/ddr4_2d.fw
deleted file mode 100755
index 19ba31c..0000000
--- a/t5m/ddr4_2d.fw
+++ /dev/null
Binary files differ
diff --git a/t5m/diag_lpddr4.fw b/t5m/diag_lpddr4.fw
deleted file mode 100755
index e752fa1..0000000
--- a/t5m/diag_lpddr4.fw
+++ /dev/null
Binary files differ
diff --git a/t5m/generate-binaires/bin/gen-boot-blobs.sh b/t5m/generate-binaires/bin/gen-boot-blobs.sh
index 6f86aee..a580b8a 100755
--- a/t5m/generate-binaires/bin/gen-boot-blobs.sh
+++ b/t5m/generate-binaires/bin/gen-boot-blobs.sh
@@ -23,6 +23,8 @@
BASEDIR_OUTPUT_BLOB=$2
+SOC_FAMILY=$3
+
input_postfix=.signed
output_postfix=.device.signed
@@ -79,6 +81,8 @@
### Features, flags and switches ###
BB1ST_ARGS="${BB1ST_ARGS} --switch-keep-device-lvl2-pubrsa=1"
+BB1ST_ARGS="${BB1ST_ARGS} --scs-family=${SOC_FAMILY}"
+
# arb info
BB1ST_ARGS="${BB1ST_ARGS} --val-device-scs-segid=${DEVICE_SCS_SEGID}"
BB1ST_ARGS="${BB1ST_ARGS} --val-device-vendor-segid=${DEVICE_VENDOR_SEGID}"
diff --git a/t5m/generate-binaires/run/common-rootrsa-x.mk b/t5m/generate-binaires/run/common-rootrsa-x.mk
index c20c2c3..ebc03ba 100644
--- a/t5m/generate-binaires/run/common-rootrsa-x.mk
+++ b/t5m/generate-binaires/run/common-rootrsa-x.mk
@@ -21,7 +21,7 @@
PROJECT=$(PROJECT) \
DEVICE_VARIANT_SUFFIX=${DEVICE_VARIANT_SUFFIX} \
DEVICE_STORAGE_SUFFIX=${DEVICE_STORAGE_SUFFIX} \
- $(GEN_BOOT_BLOBS) $(DEVICE_INPUT_PATH) $(DEVICE_OUTPUT_PATH)
+ $(GEN_BOOT_BLOBS) $(DEVICE_INPUT_PATH) $(DEVICE_OUTPUT_PATH) $(SOC_FAMILY)
device_fip:
#@-mkdir -p output
diff --git a/t5m/generate-device-keys/bin/gen_device_root_hash.sh b/t5m/generate-device-keys/bin/gen_device_root_hash.sh
index c6d90ce..3b36963 100755
--- a/t5m/generate-device-keys/bin/gen_device_root_hash.sh
+++ b/t5m/generate-device-keys/bin/gen_device_root_hash.sh
@@ -92,6 +92,9 @@
--device-tee-vers)
device_tee_vers="${argv[$i]}"
;;
+ --device-soc)
+ device_soc="${argv[$i]}"
+ ;;
--output-dir)
output_dir="${argv[$i]}"
;;
@@ -119,6 +122,7 @@
device_vendor_segid=0x0
device_scs_vers=0x0
device_tee_vers=0x0
+device_soc=""
parse_main "$@"
@@ -261,6 +265,8 @@
BB1ST_ARGS="${BB1ST_ARGS} --switch-device-sign-blob=0"
+BB1ST_ARGS="${BB1ST_ARGS} --scs-family=${device_soc}"
+
# arb info
BB1ST_ARGS="${BB1ST_ARGS} --val-device-scs-segid=${DEVICE_SCS_SEGID}"
BB1ST_ARGS="${BB1ST_ARGS} --val-device-vendor-segid=${DEVICE_VENDOR_SEGID}"
diff --git a/t5m/generate-device-keys/export_signing_keys_and_sign_template.sh b/t5m/generate-device-keys/export_signing_keys_and_sign_template.sh
index aa13989..2b17c0d 100755
--- a/t5m/generate-device-keys/export_signing_keys_and_sign_template.sh
+++ b/t5m/generate-device-keys/export_signing_keys_and_sign_template.sh
@@ -57,6 +57,7 @@
output_dir=""
boot_blobs_arb_args=
device_fip_arb_args=
+device_soc="s5"
parse_main() {
local i=0
@@ -86,6 +87,9 @@
--project)
part="${argv[$i]}"
;;
+ --device-soc)
+ device_soc="${argv[$i]}"
+ ;;
--template-dir)
template_dir="${argv[$i]}"
check_dir "${template_dir}"
@@ -141,7 +145,7 @@
${EXEC_BASEDIR}/bin/gen_device_aes_protkey.sh --rootkey-index "$rootkey_index" --key-dir "$key_dir" --project "$part" --template-dir "${template_dir}" ${device_fip_arb_args}
-${EXEC_BASEDIR}/bin/gen_device_root_hash.sh --rootkey-index "$rootkey_index" --key-dir "$key_dir" --project "$part" --template-dir "${template_dir}" ${boot_blobs_arb_args}
+${EXEC_BASEDIR}/bin/gen_device_root_hash.sh --rootkey-index "$rootkey_index" --key-dir "$key_dir" --project "$part" --device-soc "$device_soc" --template-dir "${template_dir}" ${boot_blobs_arb_args}
${EXEC_BASEDIR}/bin/export_dv_scs_signing_keys.sh --key-dir "$key_dir" --out-dir "$output_dir" --rootkey-index "$rootkey_index" --project "$part"
diff --git a/t5m/generate-device-keys/gen_all_device_key.sh b/t5m/generate-device-keys/gen_all_device_key.sh
index 8fef776..1425a20 100755
--- a/t5m/generate-device-keys/gen_all_device_key.sh
+++ b/t5m/generate-device-keys/gen_all_device_key.sh
@@ -55,6 +55,7 @@
template_dir=""
rootkey_index=0
output_dir=""
+device_soc="s5"
parse_main() {
local i=0
@@ -83,6 +84,9 @@
--project)
part="${argv[$i]}"
;;
+ --device-soc)
+ device_soc="${argv[$i]}"
+ ;;
--rsa-size)
size="${argv[$i]}"
;;
@@ -148,11 +152,14 @@
mkdir -p "$key_dir"/root/dvgk/"$part"
${EXEC_BASEDIR}/bin/dvgk_gen.sh "$key_dir"/root/dvgk/"$part"/dvgk
+mkdir -p "$key_dir"/root/dvuk/"$part"
+${EXEC_BASEDIR}/bin/dvuk_gen.sh "$key_dir"/root/dvuk/"$part"/dvuk
+
${EXEC_BASEDIR}/bin/derive_device_aes_rootkey.sh --key-dir "$key_dir" --mrk-bin "$key_dir"/root/dvgk/"$part"/dvgk.bin --mrk-name DVGK --project "$part"
${EXEC_BASEDIR}/bin/gen_device_aes_protkey.sh --rootkey-index "$rootkey_index" --key-dir "$key_dir" --project "$part" --template-dir "${template_dir}"
-${EXEC_BASEDIR}/bin/gen_device_root_hash.sh --rootkey-index "$rootkey_index" --key-dir "$key_dir" --project "$part" --template-dir "${template_dir}"
+${EXEC_BASEDIR}/bin/gen_device_root_hash.sh --rootkey-index "$rootkey_index" --key-dir "$key_dir" --project "$part" --device-soc "$device_soc" --template-dir "${template_dir}"
${EXEC_BASEDIR}/bin/export_dv_scs_signing_keys.sh --key-dir "$key_dir" --out-dir "$output_dir" --rootkey-index "$rootkey_index" --project "$part"
diff --git a/t5m/lpddr3_1d.fw b/t5m/lpddr3_1d.fw
deleted file mode 100755
index 7177d0d..0000000
--- a/t5m/lpddr3_1d.fw
+++ /dev/null
Binary files differ
diff --git a/t5m/lpddr4_1d.fw b/t5m/lpddr4_1d.fw
deleted file mode 100755
index 472c9c1..0000000
--- a/t5m/lpddr4_1d.fw
+++ /dev/null
Binary files differ
diff --git a/t5m/lpddr4_2d.fw b/t5m/lpddr4_2d.fw
deleted file mode 100755
index 2edcb0f..0000000
--- a/t5m/lpddr4_2d.fw
+++ /dev/null
Binary files differ
diff --git a/t5m/piei.fw b/t5m/piei.fw
deleted file mode 100755
index a51b550..0000000
--- a/t5m/piei.fw
+++ /dev/null
Binary files differ