meta: consolidate flash helper logic into one script

While some of the initial discovery/setup logic varies between the t194 and t234
chips, a lot of what the two flash helper scripts do is the same.  To simplify
future BSP updates, and prevent the duplicate logic from accidentally getting out
of sync over time, this commit switches to using a single script to support both SoCs:

1. tegra{194,234}-flash-helper.sh merged into tegra-flash-helper.sh
2. image_types_tegra.bbclass updated to reference the new script
3. CHIPID= setting added in appropriate places so the script knows which SoC to expect
4. Eliminate fuselevel variable checking in helper script, since we can only
   support production chips anyway
5. New script has uniform 4-space indentation, no hard tabs

Signed-off-by: Matt Madison <matt@madison.systems>
This commit is contained in:
Matt Madison
2023-10-01 06:10:58 -07:00
committed by Matt Madison
parent edeba22222
commit 12f7a59061
4 changed files with 356 additions and 777 deletions

View File

@@ -361,6 +361,7 @@ create_tegraflash_pkg:tegra194() {
cat >> ./flashvars <<EOF cat >> ./flashvars <<EOF
BOOTCONTROL_OVERLAYS="${@tegra_bootcontrol_overlay_list(d)}" BOOTCONTROL_OVERLAYS="${@tegra_bootcontrol_overlay_list(d)}"
PLUGIN_MANAGER_OVERLAYS="${@','.join(d.getVar('TEGRA_PLUGIN_MANAGER_OVERLAYS').split())}" PLUGIN_MANAGER_OVERLAYS="${@','.join(d.getVar('TEGRA_PLUGIN_MANAGER_OVERLAYS').split())}"
CHIPID=${NVIDIA_CHIP}
EOF EOF
for f in ${STAGING_DATADIR}/tegraflash/tegra19[4x]-*.cfg; do for f in ${STAGING_DATADIR}/tegraflash/tegra19[4x]-*.cfg; do
cp $f . cp $f .
@@ -393,14 +394,14 @@ EOF
rm -f doflash.sh rm -f doflash.sh
cat > doflash.sh <<END cat > doflash.sh <<END
#!/bin/sh #!/bin/sh
MACHINE=${TNSPEC_MACHINE} ./tegra194-flash-helper.sh $DATAARGS flash.xml.in ${DTBFILE} ${EMMC_BCT},${EMMC_BCT_OVERRIDE} ${ODMDATA} ${LNXFILE} ${IMAGE_BASENAME}.${IMAGE_TEGRAFLASH_FS_TYPE} "\$@" MACHINE=${TNSPEC_MACHINE} ./tegra-flash-helper.sh $DATAARGS flash.xml.in ${DTBFILE} ${EMMC_BCT},${EMMC_BCT_OVERRIDE} ${ODMDATA} ${LNXFILE} ${IMAGE_BASENAME}.${IMAGE_TEGRAFLASH_FS_TYPE} "\$@"
END END
chmod +x doflash.sh chmod +x doflash.sh
if [ -n "${IMAGE_TEGRAFLASH_INITRD_FLASHER}" ]; then if [ -n "${IMAGE_TEGRAFLASH_INITRD_FLASHER}" ]; then
rm -f .env.initrd-flash rm -f .env.initrd-flash
cat > .env.initrd-flash <<END cat > .env.initrd-flash <<END
FLASH_HELPER=${SOC_FAMILY}-flash-helper.sh FLASH_HELPER=tegra-flash-helper.sh
BOOTDEV="${TNSPEC_BOOTDEV}" BOOTDEV="${TNSPEC_BOOTDEV}"
ROOTFS_DEVICE="${ROOTFS_DEVICE_FOR_INITRD_FLASH}" ROOTFS_DEVICE="${ROOTFS_DEVICE_FOR_INITRD_FLASH}"
CHIPID="${NVIDIA_CHIP}" CHIPID="${NVIDIA_CHIP}"
@@ -425,7 +426,7 @@ END
if [ -e ./odmfuse_pkc.xml ]; then if [ -e ./odmfuse_pkc.xml ]; then
cat > burnfuses.sh <<END cat > burnfuses.sh <<END
#!/bin/sh #!/bin/sh
MACHINE=${TNSPEC_MACHINE} ./tegra194-flash-helper.sh -c "burnfuses odmfuse_pkc.xml" --no-flash $DATAARGS flash.xml.in ${DTBFILE} ${EMMC_BCT},${EMMC_BCT_OVERRIDE} ${ODMDATA} ${LNXFILE} ${IMAGE_BASENAME}.${IMAGE_TEGRAFLASH_FS_TYPE} "\$@" MACHINE=${TNSPEC_MACHINE} ./tegra-flash-helper.sh -c "burnfuses odmfuse_pkc.xml" --no-flash $DATAARGS flash.xml.in ${DTBFILE} ${EMMC_BCT},${EMMC_BCT_OVERRIDE} ${ODMDATA} ${LNXFILE} ${IMAGE_BASENAME}.${IMAGE_TEGRAFLASH_FS_TYPE} "\$@"
END END
chmod +x burnfuses.sh chmod +x burnfuses.sh
fi fi
@@ -433,7 +434,7 @@ END
rm -f dosdcard.sh rm -f dosdcard.sh
cat > dosdcard.sh <<END cat > dosdcard.sh <<END
#!/bin/sh #!/bin/sh
MACHINE=${TNSPEC_MACHINE} BOARDID=\${BOARDID:-${TEGRA_BOARDID}} FAB=\${FAB:-${TEGRA_FAB}} CHIPREV=\${CHIPREV:-${TEGRA_CHIPREV}} BOARDSKU=\${BOARDSKU:-${TEGRA_BOARDSKU}} fuselevel=\${fuselevel:-fuselevel_production} ./tegra194-flash-helper.sh --sdcard -B ${TEGRA_BLBLOCKSIZE} -s ${TEGRAFLASH_SDCARD_SIZE} -b ${IMAGE_BASENAME} $DATAARGS flash.xml.in ${DTBFILE} ${EMMC_BCT},${EMMC_BCT_OVERRIDE} ${ODMDATA} ${LNXFILE} ${IMAGE_BASENAME}.${IMAGE_TEGRAFLASH_FS_TYPE} "\$@" MACHINE=${TNSPEC_MACHINE} BOARDID=\${BOARDID:-${TEGRA_BOARDID}} FAB=\${FAB:-${TEGRA_FAB}} CHIPREV=\${CHIPREV:-${TEGRA_CHIPREV}} BOARDSKU=\${BOARDSKU:-${TEGRA_BOARDSKU}} fuselevel=\${fuselevel:-fuselevel_production} ./tegra-flash-helper.sh --sdcard -B ${TEGRA_BLBLOCKSIZE} -s ${TEGRAFLASH_SDCARD_SIZE} -b ${IMAGE_BASENAME} $DATAARGS flash.xml.in ${DTBFILE} ${EMMC_BCT},${EMMC_BCT_OVERRIDE} ${ODMDATA} ${LNXFILE} ${IMAGE_BASENAME}.${IMAGE_TEGRAFLASH_FS_TYPE} "\$@"
END END
chmod +x dosdcard.sh chmod +x dosdcard.sh
elif [ "${TEGRA_ROOTFS_AND_KERNEL_ON_SDCARD}" = "1" ]; then elif [ "${TEGRA_ROOTFS_AND_KERNEL_ON_SDCARD}" = "1" ]; then
@@ -441,14 +442,14 @@ END
cat > doflash.sh <<END cat > doflash.sh <<END
#!/bin/sh #!/bin/sh
./nvflashxmlparse --split=flash-sdcard.xml.in --change-device-type=sdcard --output=flash-mmc.xml.in --sdcard-size=${TEGRAFLASH_SDCARD_SIZE} flash.xml.in ./nvflashxmlparse --split=flash-sdcard.xml.in --change-device-type=sdcard --output=flash-mmc.xml.in --sdcard-size=${TEGRAFLASH_SDCARD_SIZE} flash.xml.in
MACHINE=${TNSPEC_MACHINE} ./tegra194-flash-helper.sh $DATAARGS flash-mmc.xml.in ${DTBFILE} ${EMMC_BCT},${EMMC_BCT_OVERRIDE} ${ODMDATA} ${LNXFILE} ${IMAGE_BASENAME}.${IMAGE_TEGRAFLASH_FS_TYPE} "\$@" MACHINE=${TNSPEC_MACHINE} ./tegra-flash-helper.sh $DATAARGS flash-mmc.xml.in ${DTBFILE} ${EMMC_BCT},${EMMC_BCT_OVERRIDE} ${ODMDATA} ${LNXFILE} ${IMAGE_BASENAME}.${IMAGE_TEGRAFLASH_FS_TYPE} "\$@"
END END
chmod +x doflash.sh chmod +x doflash.sh
rm -f dosdcard.sh rm -f dosdcard.sh
cat > dosdcard.sh <<END cat > dosdcard.sh <<END
#!/bin/sh #!/bin/sh
./nvflashxmlparse --split=flash-sdcard.xml.in --change-device-type=sdcard --output=flash-mmc.xml.in --sdcard-size=${TEGRAFLASH_SDCARD_SIZE} flash.xml.in ./nvflashxmlparse --split=flash-sdcard.xml.in --change-device-type=sdcard --output=flash-mmc.xml.in --sdcard-size=${TEGRAFLASH_SDCARD_SIZE} flash.xml.in
MACHINE=${TNSPEC_MACHINE} BOARDID=\${BOARDID:-${TEGRA_BOARDID}} FAB=\${FAB:-${TEGRA_FAB}} CHIPREV=\${CHIPREV:-${TEGRA_CHIPREV}} BOARDSKU=\${BOARDSKU:-${TEGRA_BOARDSKU}} BOARDREV=\${BOARDREV:-${TEGRA_BOARDREV}} fuselevel=\${fuselevel:-fuselevel_production} ./tegra194-flash-helper.sh --sdcard -B ${TEGRA_BLBLOCKSIZE} -s ${TEGRAFLASH_SDCARD_SIZE} -b ${IMAGE_BASENAME} $DATAARGS flash-sdcard.xml.in ${DTBFILE} ${EMMC_BCT},${EMMC_BCT_OVERRIDE} ${ODMDATA} ${LNXFILE} ${IMAGE_BASENAME}.${IMAGE_TEGRAFLASH_FS_TYPE} "\$@" MACHINE=${TNSPEC_MACHINE} BOARDID=\${BOARDID:-${TEGRA_BOARDID}} FAB=\${FAB:-${TEGRA_FAB}} CHIPREV=\${CHIPREV:-${TEGRA_CHIPREV}} BOARDSKU=\${BOARDSKU:-${TEGRA_BOARDSKU}} BOARDREV=\${BOARDREV:-${TEGRA_BOARDREV}} fuselevel=\${fuselevel:-fuselevel_production} ./tegra-flash-helper.sh --sdcard -B ${TEGRA_BLBLOCKSIZE} -s ${TEGRAFLASH_SDCARD_SIZE} -b ${IMAGE_BASENAME} $DATAARGS flash-sdcard.xml.in ${DTBFILE} ${EMMC_BCT},${EMMC_BCT_OVERRIDE} ${ODMDATA} ${LNXFILE} ${IMAGE_BASENAME}.${IMAGE_TEGRAFLASH_FS_TYPE} "\$@"
END END
chmod +x dosdcard.sh chmod +x dosdcard.sh
fi fi
@@ -488,6 +489,7 @@ create_tegraflash_pkg:tegra234() {
cat >> ./flashvars <<EOF cat >> ./flashvars <<EOF
BOOTCONTROL_OVERLAYS="${@tegra_bootcontrol_overlay_list(d)}" BOOTCONTROL_OVERLAYS="${@tegra_bootcontrol_overlay_list(d)}"
PLUGIN_MANAGER_OVERLAYS="${@','.join(d.getVar('TEGRA_PLUGIN_MANAGER_OVERLAYS').split())}" PLUGIN_MANAGER_OVERLAYS="${@','.join(d.getVar('TEGRA_PLUGIN_MANAGER_OVERLAYS').split())}"
CHIPID=${NVIDIA_CHIP}
EOF EOF
for f in ${STAGING_DATADIR}/tegraflash/bpmp_t234-*.bin; do for f in ${STAGING_DATADIR}/tegraflash/bpmp_t234-*.bin; do
@@ -525,14 +527,14 @@ EOF
rm -f doflash.sh rm -f doflash.sh
cat > doflash.sh <<END cat > doflash.sh <<END
#!/bin/sh #!/bin/sh
MACHINE=${TNSPEC_MACHINE} ./tegra234-flash-helper.sh $DATAARGS flash.xml.in ${DTBFILE} ${EMMC_BCT} ${ODMDATA} ${LNXFILE} ${IMAGE_BASENAME}.${IMAGE_TEGRAFLASH_FS_TYPE} "\$@" MACHINE=${TNSPEC_MACHINE} ./tegra-flash-helper.sh $DATAARGS flash.xml.in ${DTBFILE} ${EMMC_BCT} ${ODMDATA} ${LNXFILE} ${IMAGE_BASENAME}.${IMAGE_TEGRAFLASH_FS_TYPE} "\$@"
END END
chmod +x doflash.sh chmod +x doflash.sh
chmod +x doflash.sh chmod +x doflash.sh
if [ -n "${IMAGE_TEGRAFLASH_INITRD_FLASHER}" ]; then if [ -n "${IMAGE_TEGRAFLASH_INITRD_FLASHER}" ]; then
cat > .env.initrd-flash <<END cat > .env.initrd-flash <<END
FLASH_HELPER=${SOC_FAMILY}-flash-helper.sh FLASH_HELPER=tegra-flash-helper.sh
BOOTDEV="${TNSPEC_BOOTDEV}" BOOTDEV="${TNSPEC_BOOTDEV}"
ROOTFS_DEVICE="${ROOTFS_DEVICE_FOR_INITRD_FLASH}" ROOTFS_DEVICE="${ROOTFS_DEVICE_FOR_INITRD_FLASH}"
CHIPID="${NVIDIA_CHIP}" CHIPID="${NVIDIA_CHIP}"
@@ -557,7 +559,7 @@ END
if [ -e ./odmfuse_pkc.xml ]; then if [ -e ./odmfuse_pkc.xml ]; then
cat > burnfuses.sh <<END cat > burnfuses.sh <<END
#!/bin/sh #!/bin/sh
MACHINE=${TNSPEC_MACHINE} ./tegra234-flash-helper.sh -c "burnfuses odmfuse_pkc.xml" --no-flash $DATAARGS flash.xml.in ${DTBFILE} ${EMMC_BCT} ${ODMDATA} ${LNXFILE} ${IMAGE_BASENAME}.${IMAGE_TEGRAFLASH_FS_TYPE} "\$@" MACHINE=${TNSPEC_MACHINE} ./tegra-flash-helper.sh -c "burnfuses odmfuse_pkc.xml" --no-flash $DATAARGS flash.xml.in ${DTBFILE} ${EMMC_BCT} ${ODMDATA} ${LNXFILE} ${IMAGE_BASENAME}.${IMAGE_TEGRAFLASH_FS_TYPE} "\$@"
END END
chmod +x burnfuses.sh chmod +x burnfuses.sh
fi fi
@@ -565,7 +567,7 @@ END
rm -f dosdcard.sh rm -f dosdcard.sh
cat > dosdcard.sh <<END cat > dosdcard.sh <<END
#!/bin/sh #!/bin/sh
MACHINE=${TNSPEC_MACHINE} BOARDID=\${BOARDID:-${TEGRA_BOARDID}} FAB=\${FAB:-${TEGRA_FAB}} CHIPREV=\${CHIPREV:-${TEGRA_CHIPREV}} BOARDSKU=\${BOARDSKU:-${TEGRA_BOARDSKU}} fuselevel=\${fuselevel:-fuselevel_production} ./tegra234-flash-helper.sh --sdcard -B ${TEGRA_BLBLOCKSIZE} -s ${TEGRAFLASH_SDCARD_SIZE} -b ${IMAGE_BASENAME} $DATAARGS flash.xml.in ${DTBFILE} ${EMMC_BCT} ${ODMDATA} ${LNXFILE} ${IMAGE_BASENAME}.${IMAGE_TEGRAFLASH_FS_TYPE} "\$@" MACHINE=${TNSPEC_MACHINE} BOARDID=\${BOARDID:-${TEGRA_BOARDID}} FAB=\${FAB:-${TEGRA_FAB}} CHIPREV=\${CHIPREV:-${TEGRA_CHIPREV}} BOARDSKU=\${BOARDSKU:-${TEGRA_BOARDSKU}} fuselevel=\${fuselevel:-fuselevel_production} ./tegra-flash-helper.sh --sdcard -B ${TEGRA_BLBLOCKSIZE} -s ${TEGRAFLASH_SDCARD_SIZE} -b ${IMAGE_BASENAME} $DATAARGS flash.xml.in ${DTBFILE} ${EMMC_BCT} ${ODMDATA} ${LNXFILE} ${IMAGE_BASENAME}.${IMAGE_TEGRAFLASH_FS_TYPE} "\$@"
END END
chmod +x dosdcard.sh chmod +x dosdcard.sh
tegraflash_custom_post tegraflash_custom_post
@@ -595,6 +597,7 @@ export BOARDID=${TEGRA_BOARDID}
export fuselevel=fuselevel_production export fuselevel=fuselevel_production
export localbootfile=${LNXFILE} export localbootfile=${LNXFILE}
export CHIPREV=${TEGRA_CHIPREV} export CHIPREV=${TEGRA_CHIPREV}
export CHIPID=${NVIDIA_CHIP}
EOF EOF
if [ "${SOC_FAMILY}" = "tegra194" ]; then if [ "${SOC_FAMILY}" = "tegra194" ]; then
sdramcfg="${EMMC_BCT},${EMMC_BCT_OVERRIDE}" sdramcfg="${EMMC_BCT},${EMMC_BCT_OVERRIDE}"
@@ -613,7 +616,7 @@ EOF
buptype_arg="" buptype_arg=""
fi fi
cat <<EOF >> $outfile cat <<EOF >> $outfile
MACHINE=${TNSPEC_MACHINE} FAB="$fab" BOARDSKU="$boardsku" BOARDREV="$boardrev" ./${SOC_FAMILY}-flash-helper.sh --bup $buptype_arg ./flash-stripped.xml.in ${DTBFILE} $sdramcfg ${ODMDATA} "\$@" MACHINE=${TNSPEC_MACHINE} FAB="$fab" BOARDSKU="$boardsku" BOARDREV="$boardrev" ./tegra-flash-helper.sh --bup $buptype_arg ./flash-stripped.xml.in ${DTBFILE} $sdramcfg ${ODMDATA} "\$@"
EOF EOF
done done
chmod +x $outfile chmod +x $outfile

View File

@@ -7,8 +7,7 @@ INHIBIT_DEFAULT_DEPS = "1"
inherit native inherit native
SRC_URI = " \ SRC_URI = " \
file://tegra194-flash-helper.sh \ file://tegra-flash-helper.sh \
file://tegra234-flash-helper.sh \
file://nvflashxmlparse.py \ file://nvflashxmlparse.py \
file://make-sdcard.sh \ file://make-sdcard.sh \
file://tegra-signimage-helper.sh \ file://tegra-signimage-helper.sh \
@@ -22,8 +21,7 @@ S = "${WORKDIR}"
do_install() { do_install() {
install -d ${D}${bindir}/tegra-flash install -d ${D}${bindir}/tegra-flash
install -m 0755 ${S}/tegra194-flash-helper.sh ${D}${bindir}/tegra-flash/ install -m 0755 ${S}/tegra-flash-helper.sh ${D}${bindir}/tegra-flash/
install -m 0755 ${S}/tegra234-flash-helper.sh ${D}${bindir}/tegra-flash/
install -m 0755 ${S}/nvflashxmlparse.py ${D}${bindir}/tegra-flash/nvflashxmlparse install -m 0755 ${S}/nvflashxmlparse.py ${D}${bindir}/tegra-flash/nvflashxmlparse
install -m 0755 ${S}/make-sdcard.sh ${D}${bindir}/tegra-flash/make-sdcard install -m 0755 ${S}/make-sdcard.sh ${D}${bindir}/tegra-flash/make-sdcard
install -m 0755 ${S}/tegra-signimage-helper.sh ${D}${bindir}/tegra-flash/tegra-signimage-helper install -m 0755 ${S}/tegra-signimage-helper.sh ${D}${bindir}/tegra-flash/tegra-signimage-helper

View File

@@ -1,4 +1,5 @@
#!/bin/bash #!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
bup_blob=0 bup_blob=0
bup_type= bup_type=
rcm_boot=0 rcm_boot=0
@@ -37,11 +38,10 @@ process_l4t_conf_dtbo() {
} }
partition_exists_in_PT_table() { partition_exists_in_PT_table() {
# Return failure status here [ "$1" = "secondary_gpt_backup" -o "$1" = "BCT-boot-chain_backup" ]
return 1
} }
ARGS=$(getopt -n $(basename "$0") -l "bup,bup-type:,no-flash,sign,sdcard,spi-only,boot-only,external-device,rcm-boot,datafile:,usb-instance:" -o "u:v:s:b:B:yc:" -- "$@") ARGS=$(getopt -n $(basename "$0") -l "bup,bup-type:,no-flash,sign,sdcard,spi-only,boot-only,external-device,rcm-boot,datafile:,usb-instance:,uefi-enc:" -o "u:v:s:b:B:yc:" -- "$@")
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo "Error parsing options" >&2 echo "Error parsing options" >&2
exit 1 exit 1
@@ -57,9 +57,9 @@ while true; do
shift shift
;; ;;
--bup-type) --bup-type)
bup_type="$2" bup_type="$2"
shift 2 shift 2
;; ;;
--no-flash) --no-flash)
no_flash=1 no_flash=1
shift shift
@@ -82,7 +82,7 @@ while true; do
;; ;;
--external-device) --external-device)
external_device=1 external_device=1
extdevargs="--external_device" extdevargs="--external_device"
shift shift
;; ;;
--datafile) --datafile)
@@ -157,6 +157,11 @@ if [ -z "$FLASHVARS" ]; then
exit 1 exit 1
fi fi
if [ -z "$CHIPID" ]; then
echo "ERR: CHIPID variable not set" >&2
exit 1
fi
have_odmsign_func=0 have_odmsign_func=0
[ ! -e "$here/odmsign.func" ] || have_odmsign_func=1 [ ! -e "$here/odmsign.func" ] || have_odmsign_func=1
if [ -n "$keyfile" -o -n "$sbk_keyfile" ] && [ $have_odmsign_func -eq 0 ]; then if [ -n "$keyfile" -o -n "$sbk_keyfile" ] && [ $have_odmsign_func -eq 0 ]; then
@@ -185,6 +190,8 @@ if [ -n "$overlay_dtb_files" ]; then
overlay_dtb_arg="--overlay_dtb $overlay_dtb_files" overlay_dtb_arg="--overlay_dtb $overlay_dtb_files"
fi fi
fuselevel="fuselevel_production"
# Temp file for storing cvm.bin in, if we need to query the board for its # Temp file for storing cvm.bin in, if we need to query the board for its
# attributes # attributes
cvm_bin=$(mktemp cvm.bin.XXXXX) cvm_bin=$(mktemp cvm.bin.XXXXX)
@@ -192,47 +199,73 @@ cvm_bin=$(mktemp cvm.bin.XXXXX)
skipuid="" skipuid=""
bootauth="" bootauth=""
BR_CID= BR_CID=
if [ -z "$CHIPREV" -o -z "$fuselevel" ]; then if [ -z "$CHIPREV" ]; then
BR_CID=$($here/tegrarcm_v2 --new_session --chip 0x23 ${inst_args} --uid | grep BR_CID | cut -d' ' -f2) chipidargs=
if [ "$CHIPID" = "0x23" ]; then
chipidargs="--new_session --chip $CHIPID"
fi
BR_CID=$($here/tegrarcm_v2 ${chipidargs} ${inst_args} --uid | grep BR_CID | cut -d' ' -f2)
chipid="$BR_CID" chipid="$BR_CID"
if [ -z "$chipid" ]; then if [ -z "$chipid" ]; then
echo "ERR: could not retrieve chip ID" >&2 echo "ERR: could not retrieve chip ID" >&2
exit 1 exit 1
fi fi
if [ "${chipid:6:2}" != "23" ]; then if [ "${chipid:6:2}" = "23" ]; then
echo "ERR: chip ID mismatch for Orin" >&2 if [ "$CHIPID" != "0x23" ]; then
echo "ERR: CHIPID ($CHIPID) does not match actual chip ID (0x${chipid:6:2})" >&2
exit 1
fi
flval="0x${chipid:2:1}"
flval=$(printf "%x" "$((flval & 0x8))")
tmp_1="0x${chipid:3:2}"
tmp_1=$(printf "%2.2x" "$((tmp_1 & 0xf0))")
flval="${flval}${tmp_1}"
case "${flval}" in
000)
# The public L4T kit includes only production binaries
echo "ERR: non-production chip found" >&2
exit 1
;;
800)
bootauth="NS"
# non-secured
;;
810|820|830|840|850)
bootauth="PKC"
# RSA/ECDSA P-256/ECDSA P-512/ED25519/XMSS
;;
890|8a0|8b0|8c0|8d0)
bootauth="SBKPKC"
# SBK + RSA/ECDSA P-256/ECDSA P-512/ED25519/XMSS
;;
*)
echo "ERR: unrecognized fused configuration 0x$flval" >&2
exit 1
esac
elif [ "${chipid:3:2}" = "80" -a "${chipid:6:2}" = "19" ]; then
if [ "$CHIPID" != "0x19" ]; then
echo "ERR: CHIPID ($CHIPID) does not match actual chip ID (0x${chipid:6:2})" >&2
exit 1
fi
case "${chipid:2:1}" in
8)
bootauth="NS"
;;
9|a)
bootauth="PKC"
;;
d|e)
bootauth="SBKPKC"
;;
*)
echo "ERR: non-production chip found" >&2
exit 1
;;
esac
else
echo "ERR: unrecognized chip ID: 0x${chipid:6:2}" >&2
exit 1 exit 1
fi fi
flval="0x${chipid:2:1}"
flval=$(printf "%x" "$((flval & 0x8))")
tmp_1="0x${chipid:3:2}"
tmp_1=$(printf "%2.2x" "$((tmp_1 & 0xf0))")
flval="${flval}${tmp_1}"
case "${flval}" in
000)
# The public L4T kit includes only production binaries
echo "ERR: non-production chip found" >&2
exit 1
;;
800)
fuselevel="fuselevel_production"
bootauth="NS"
# non-secured
;;
810|820|830|840|850)
fuselevel="fuselevel_production"
bootauth="PKC"
# RSA/ECDSA P-256/ECDSA P-512/ED25519/XMSS
;;
890|8a0|8b0|8c0|8d0)
fuselevel="fuselevel_production"
bootauth="SBKPKC"
# SBK + RSA/ECDSA P-256/ECDSA P-512/ED25519/XMSS
;;
*)
echo "ERR: unrecognized fused configuration 0x$flval" >&2
exit 1
esac
CHIPREV="${chipid:5:1}" CHIPREV="${chipid:5:1}"
skipuid="--skipuid" skipuid="--skipuid"
case $bootauth in case $bootauth in
@@ -250,7 +283,7 @@ if [ -z "$CHIPREV" -o -z "$fuselevel" ]; then
fi fi
;; ;;
esac esac
else elif [ "$CHIPID" = "0x23" ]; then
skipuid="--skipuid" skipuid="--skipuid"
fi fi
@@ -259,30 +292,38 @@ keyargs=
[ -z "$keyfile" ] || keyargs="$keyargs --key $keyfile" [ -z "$keyfile" ] || keyargs="$keyargs --key $keyfile"
[ -z "$sbk_keyfile" ] || keyargs="$keyargs --encrypt_key $sbk_keyfile" [ -z "$sbk_keyfile" ] || keyargs="$keyargs --encrypt_key $sbk_keyfile"
if [ -z "$FAB" -o -z "$BOARDID" ]; then if [ -z "$FAB" -o -z "$BOARDID" ]; then
if [ "$fuselevel" = "fuselevel_production" ]; then if [ -n "$EMC_FUSE_DEV_PARAMS" ]; then
sed -i "s/preprod_dev_sign = <1>/preprod_dev_sign = <0>/" "${EMC_FUSE_DEV_PARAMS}"; sed -i "s/preprod_dev_sign = <1>/preprod_dev_sign = <0>/" "$EMC_FUSE_DEV_PARAMS"
fi fi
rm -f rcm_state rm -f rcm_state
if ! python3 $flashappname ${inst_args} --chip 0x23 $skipuid $keyargs \ if [ "$CHIPID" = "0x19" ]; then
--applet mb1_t234_prod.bin \ if ! python3 $flashappname ${inst_args} --chip 0x19 --applet mb1_t194_prod.bin $skipuid --soft_fuses tegra194-mb1-soft-fuses-l4t.cfg \
--dev_params $EMC_FUSE_DEV_PARAMS \ --bins "mb2_applet nvtboot_applet_t194.bin" --cmd "dump eeprom boardinfo ${cvm_bin};reboot recovery" $keyargs; then
--cfg readinfo_t234_min_prod.xml \ echo "ERR: could not retrieve EEPROM board information" >&2
--device_config $DEVICE_CONFIG --misc_config $MISC_CONFIG --bins "mb2_applet applet_t234.bin" \ exit 1
--cmd "dump eeprom cvm ${cvm_bin}; dump custinfo ${custinfo_out}; reboot recovery"; then fi
echo "ERR: could not retrieve EEPROM board information" >&2 else
exit 1 if ! python3 $flashappname ${inst_args} --chip 0x23 $skipuid $keyargs \
--applet mb1_t234_prod.bin \
--dev_params $EMC_FUSE_DEV_PARAMS \
--cfg readinfo_t234_min_prod.xml \
--device_config $DEVICE_CONFIG --misc_config $MISC_CONFIG --bins "mb2_applet applet_t234.bin" \
--cmd "dump eeprom cvm ${cvm_bin}; dump custinfo ${custinfo_out}; reboot recovery"; then
echo "ERR: could not retrieve EEPROM board information" >&2
exit 1
fi
# The chip_info.bin_bak file is created as a side effect of the above tegraflash.py invocation
if [ ! -e chip_info.bin_bak ]; then
echo "ERR: chip_info.bin_bak missing after dumping boardinfo" >&2
exit 1
fi
CHIP_SKU=$($here/chkbdinfo -C chip_info.bin_bak | tr -d '[:space:]')
# XXX- these don't appear to be used
# chip_minor_revision=$($here/chkbdinfo -M chip_info.bin_bak)
# bootrom_revision=$($here/chkbdinfo -O chip_info.bin_bak)
# ramcode_id=$($here/chkbdinfo -R chip_info.bin_bak)
# -XXX
fi fi
# The chip_info.bin_bak file is created as a side effect of the above tegraflash.py invocation
if [ ! -e chip_info.bin_bak ]; then
echo "ERR: chip_info.bin_bak missing after dumping boardinfo" >&2
exit 1
fi
CHIP_SKU=$($here/chkbdinfo -C chip_info.bin_bak | tr -d '[:space:]')
# XXX- these don't appear to be used
# chip_minor_revision=$($here/chkbdinfo -M chip_info.bin_bak)
# bootrom_revision=$($here/chkbdinfo -O chip_info.bin_bak)
# ramcode_id=$($here/chkbdinfo -R chip_info.bin_bak)
# -XXX
skipuid="" skipuid=""
have_boardinfo="yes" have_boardinfo="yes"
fi fi
@@ -290,36 +331,36 @@ fi
if [ -n "$BOARDID" ]; then if [ -n "$BOARDID" ]; then
boardid="$BOARDID" boardid="$BOARDID"
else else
boardid=`$here/chkbdinfo -i ${cvm_bin} | tr -d '[:space:]'` boardid=$($here/chkbdinfo -i ${cvm_bin} | tr -d '[:space:]')
BOARDID="$boardid" BOARDID="$boardid"
fi fi
if [ -z "$CHIP_SKU" ]; then if [ "$CHIPID" = "0x23" -a -z "$CHIP_SKU" ]; then
# see DEFAULT_CHIP_SKU in p3701.conf.common # see DEFAULT_CHIP_SKU in p3701.conf.common
# or DFLT_CHIP_SKU in p3767.conf.common # or DFLT_CHIP_SKU in p3767.conf.common
if [ "$BOARDID" = "3767" ]; then if [ "$BOARDID" = "3767" ]; then
CHIP_SKU="00:00:00:D3" CHIP_SKU="00:00:00:D3"
else else
CHIP_SKU="00:00:00:D0" CHIP_SKU="00:00:00:D0"
fi fi
fi fi
if [ -n "$FAB" ]; then if [ -n "$FAB" ]; then
board_version="$FAB" board_version="$FAB"
else else
board_version=`$here/chkbdinfo -f ${cvm_bin} | tr -d '[:space:]' | tr [a-z] [A-Z]` board_version=$(here/chkbdinfo -f ${cvm_bin} | tr -d '[:space:]' | tr [a-z] [A-Z])
FAB="$board_version" FAB="$board_version"
fi fi
if [ -n "$BOARDSKU" ]; then if [ -n "$BOARDSKU" ]; then
board_sku="$BOARDSKU" board_sku="$BOARDSKU"
elif [ -n "$have_boardinfo" ]; then elif [ -n "$have_boardinfo" ]; then
board_sku=`$here/chkbdinfo -k ${cvm_bin} | tr -d '[:space:]' | tr [a-z] [A-Z]` board_sku=$($here/chkbdinfo -k ${cvm_bin} | tr -d '[:space:]' | tr [a-z] [A-Z])
BOARDSKU="$board_sku" BOARDSKU="$board_sku"
fi fi
if [ -n "$BOARDREV" ]; then if [ -n "$BOARDREV" ]; then
board_revision="$BOARDREV" board_revision="$BOARDREV"
elif [ -n "$have_boardinfo" ]; then elif [ -n "$have_boardinfo" ]; then
board_revision=`$here/chkbdinfo -r ${cvm_bin} | tr -d '[:space:]' | tr [a-z] [A-Z]` board_revision=$($here/chkbdinfo -r ${cvm_bin} | tr -d '[:space:]' | tr [a-z] [A-Z])
BOARDREV="$board_revision" BOARDREV="$board_revision"
fi fi
if [ -z "$serial_number" -a -n "$have_boardinfo" ]; then if [ -z "$serial_number" -a -n "$have_boardinfo" ]; then
@@ -328,11 +369,6 @@ fi
[ -f ${cvm_bin} ] && rm -f ${cvm_bin} [ -f ${cvm_bin} ] && rm -f ${cvm_bin}
[ -n "$BOARDID" ] || BOARDID=3701
[ -n "$FAB" ] || FAB=TS4
[ -n "$fuselevel" ] || fuselevel=fuselevel_production
[ -n "$BOOTDEV" ] || BOOTDEV="mmcblk0p1"
rm -f boardvars.sh rm -f boardvars.sh
cat >boardvars.sh <<EOF cat >boardvars.sh <<EOF
BOARDID="$BOARDID" BOARDID="$BOARDID"
@@ -340,7 +376,6 @@ FAB="$FAB"
BOARDSKU="$BOARDSKU" BOARDSKU="$BOARDSKU"
BOARDREV="$BOARDREV" BOARDREV="$BOARDREV"
CHIPREV="$CHIPREV" CHIPREV="$CHIPREV"
fuselevel="$fuselevel"
EOF EOF
if [ -n "$serial_number" ]; then if [ -n "$serial_number" ]; then
echo "serial_number=$serial_number" >>boardvars.sh echo "serial_number=$serial_number" >>boardvars.sh
@@ -351,6 +386,9 @@ fi
if [ -n "$BR_CID" ]; then if [ -n "$BR_CID" ]; then
echo "BR_CID=\"$BR_CID\"" >>boardvars.sh echo "BR_CID=\"$BR_CID\"" >>boardvars.sh
fi fi
if [ -n "$CHIP_SKU" ]; then
echo "CHIP_SKU=\"$CHIP_SKU\"" >>boardvars.sh
fi
if [ "$BOARDID" = "3701" -a "$FAB" = "301" ]; then if [ "$BOARDID" = "3701" -a "$FAB" = "301" ]; then
RAMCODE=0 RAMCODE=0
@@ -362,74 +400,137 @@ else
chip_sku=$CHIP_SKU chip_sku=$CHIP_SKU
fi fi
if [ "$BOARDID" = "3701" ]; then if [ "$CHIPID" = "0x19" ]; then
case $chip_sku in # Adapted from p2972-0000.conf.common in L4T kit
00) TOREV="a01"
;; BPFDTBREV="a01"
90) PMICREV="a01"
BPF_FILE=$(echo "$BPF_FILE" | sed -e"s,T.*-A1,TE992M-A1,")
case "$boardid" in
2888)
case $board_version in
[01][0-9][0-9])
;;
2[0-9][0-9])
TOREV="a02"
PMICREV="a02"
BPFDTBREV="a02"
;;
[34][0-9][0-9])
TOREV="a02"
PMICREV="a04"
BPFDTBREV="a02"
if [ $board_sku -ge 4 ] || [ $board_version -gt 300 -a `expr "$board_revision" \> "D.0"` -eq 1 ]; then
PMICREV="a04-E-0"
BPFDTBREV="a04"
fi
;;
[06][0-9][0-9]) # 600 range is the board version of the Jetson AGX Xavier Industrial
;;
*)
echo "ERR: unrecognized board version $board_version" >&2
exit 1
;;
esac
if [ "$board_sku" = "0005" ]; then
# AGX Xavier 64GB
BPFDTBREV="0005-a04-maxn"
fi
;; ;;
97|9E) 3668)
BPF_FILE=$(echo "$BPF_FILE" | sed -e"s,T.*-A1,TA990SA-A1,") # No revision-specific settings
;; ;;
D0|D2) *)
BPF_FILE=$(echo "$BPF_FILE" | sed -e"s,T.*-A1,TE990M-A1,") echo "ERR: unrecognized board ID $boardid" >&2
;;
*)
echo "ERR: unrecognized chip SKU: $chip_sku" >&2
exit 1 exit 1
;; ;;
esac esac
if [ "$BOARDSKU" != "0005" ]; then
if [ "$chip_sku" = "00" -o "$chip_sku" = "D0" ] && echo "$FAB" | egrep -q '^(TS[123]|EB[123]|[012]00)$'; then
PINMUX_CONFIG="tegra234-mb1-bct-pinmux-p3701-0000.dtsi"
PMC_CONFIG="tegra234-mb1-bct-padvoltage-p3701-0000.dtsi"
fi
fi
if ! [ "$BOARDSKU" = "0000" -o "$BOARDSKU" = "0001" -o "$BOARDSKU" = "0002" ]; then
BPFDTB_FILE=$(echo "$BPFDTB_FILE" | sed -e"s,3701-0000,3701-$BOARDSKU,")
if [ "$BOARDSKU" = "0005" -o "$BOARDSKU" = "0008" ]; then
EMMC_BCT=$(echo "$EMMC_BCT" | sed -e"s,3701-0000,3701-$BOARDSKU,")
WB0SDRAM_BCT=$(echo "$WB0SDRAM_BCT" | sed -e"s,3701-0000,3701-$BOARDSKU,")
else
dtb_file=$(echo "$dtb_file" | sed -e"s,p3701-0000,p3701-$BOARDSKU,")
fi
fi
if [ "$BOARDSKU" = "0002" -o "$BOARDSKU" = "0008" ]; then
fsifw_binsarg="fsi_fw fsi-fw-ecc.bin;"
else
fsifw_binsarg=
fi
elif [ "$BOARDID" = "3767" ]; then
PINMUXREV="a03"
BPFDTBREV="a02"
PMCREV="a03"
PMICREV="a02"
if [ "$BOARDSKU" = "0000" -o "$BOARDSKU" = "0002" ]; then
if [ "$FAB" = "TS1" -o "$FAB" = "EB1" ]; then
PINMUXREV="a01"
BPFDTBREV="a00"
PMCREV="a01"
PMICREV="a00"
fi
fi
if [ "$BOARDSKU" = "0001" -o "$BOARDSKU" = "0003" -o "$BOARDSKU" = "0005" ]; then
EMMC_BCT="tegra234-p3767-0001-sdram-l4t.dts"
WB0SDRAM_BCT="tegra234-p3767-0001-wb0sdram-l4t.dts"
elif [ "$BOARDSKU" = "0004" ]; then
EMMC_BCT="tegra234-p3767-0004-sdram-l4t.dts"
WB0SDRAM_BCT="tegra234-p3767-0004-wb0sdram-l4t.dts"
fi
if [ "$BOARDSKU" = "0003" -o "$BOARDSKU" = "0004" -o "$BOARDSKU" = "0005" ]; then
BPF_FILE="bpmp_t234-TE950M-A1_prod.bin"
fi
PINMUX_CONFIG=$(echo "$PINMUX_CONFIG" | sed -e"s,@PINMUXREV@,$PINMUXREV,")
PMC_CONFIG=$(echo "$PMC_CONFIG" | sed -e"s,@PMCREV@,$PMCREV,")
PMIC_CONFIG=$(echo "$PMIC_CONFIG" | sed -e"s,@PMICREV@,$PMICREV,")
BPFDTB_FILE=$(echo "$BPFDTB_FILE" | sed -e"s,@BPFDTBREV@,$BPFDTBREV,")
fi
if [ "${fuselevel}" = "fuselevel_production" ]; then ramcodeargs=
if [ "$boardid" = "2888" -a "$board_sku" = "0008" ]; then
# AGX Xavier Industrial
ramcodeargs="--ramcode 1"
fi
for var in $FLASHVARS; do
eval pat=$`echo $var`
if [ -z "${pat+definedmaybeempty}" ]; then
echo "ERR: missing variable: $var" >&2
exit 1
elif [ -n "$pat" ]; then
val=$(echo $pat | sed -e"s,@BPFDTBREV@,$BPFDTBREV," -e"s,@BOARDREV@,$TOREV," -e"s,@PMICREV@,$PMICREV," -e"s,@CHIPREV@,$CHIPREV,")
eval $var='$val'
fi
done
elif [ "$CHIPID" = "0x23" ]; then
if [ "$BOARDID" = "3701" ]; then
case $chip_sku in
00)
;;
90)
BPF_FILE=$(echo "$BPF_FILE" | sed -e"s,T.*-A1,TE992M-A1,")
;;
97|9E)
BPF_FILE=$(echo "$BPF_FILE" | sed -e"s,T.*-A1,TA990SA-A1,")
;;
D0|D2)
BPF_FILE=$(echo "$BPF_FILE" | sed -e"s,T.*-A1,TE990M-A1,")
;;
*)
echo "ERR: unrecognized chip SKU: $chip_sku" >&2
exit 1
;;
esac
if [ "$BOARDSKU" != "0005" ]; then
if [ "$chip_sku" = "00" -o "$chip_sku" = "D0" ] && echo "$FAB" | egrep -q '^(TS[123]|EB[123]|[012]00)$'; then
PINMUX_CONFIG="tegra234-mb1-bct-pinmux-p3701-0000.dtsi"
PMC_CONFIG="tegra234-mb1-bct-padvoltage-p3701-0000.dtsi"
fi
fi
if ! [ "$BOARDSKU" = "0000" -o "$BOARDSKU" = "0001" -o "$BOARDSKU" = "0002" ]; then
BPFDTB_FILE=$(echo "$BPFDTB_FILE" | sed -e"s,3701-0000,3701-$BOARDSKU,")
if [ "$BOARDSKU" = "0005" -o "$BOARDSKU" = "0008" ]; then
EMMC_BCT=$(echo "$EMMC_BCT" | sed -e"s,3701-0000,3701-$BOARDSKU,")
WB0SDRAM_BCT=$(echo "$WB0SDRAM_BCT" | sed -e"s,3701-0000,3701-$BOARDSKU,")
else
dtb_file=$(echo "$dtb_file" | sed -e"s,p3701-0000,p3701-$BOARDSKU,")
fi
fi
if [ "$BOARDSKU" = "0002" -o "$BOARDSKU" = "0008" ]; then
fsifw_binsarg="fsi_fw fsi-fw-ecc.bin;"
else
fsifw_binsarg=
fi
elif [ "$BOARDID" = "3767" ]; then
PINMUXREV="a03"
BPFDTBREV="a02"
PMCREV="a03"
PMICREV="a02"
if [ "$BOARDSKU" = "0000" -o "$BOARDSKU" = "0002" ]; then
if [ "$FAB" = "TS1" -o "$FAB" = "EB1" ]; then
PINMUXREV="a01"
BPFDTBREV="a00"
PMCREV="a01"
PMICREV="a00"
fi
fi
if [ "$BOARDSKU" = "0001" -o "$BOARDSKU" = "0003" -o "$BOARDSKU" = "0005" ]; then
EMMC_BCT="tegra234-p3767-0001-sdram-l4t.dts"
WB0SDRAM_BCT="tegra234-p3767-0001-wb0sdram-l4t.dts"
elif [ "$BOARDSKU" = "0004" ]; then
EMMC_BCT="tegra234-p3767-0004-sdram-l4t.dts"
WB0SDRAM_BCT="tegra234-p3767-0004-wb0sdram-l4t.dts"
fi
if [ "$BOARDSKU" = "0003" -o "$BOARDSKU" = "0004" -o "$BOARDSKU" = "0005" ]; then
BPF_FILE="bpmp_t234-TE950M-A1_prod.bin"
fi
PINMUX_CONFIG=$(echo "$PINMUX_CONFIG" | sed -e"s,@PINMUXREV@,$PINMUXREV,")
PMC_CONFIG=$(echo "$PMC_CONFIG" | sed -e"s,@PMCREV@,$PMCREV,")
PMIC_CONFIG=$(echo "$PMIC_CONFIG" | sed -e"s,@PMICREV@,$PMICREV,")
BPFDTB_FILE=$(echo "$BPFDTB_FILE" | sed -e"s,@BPFDTBREV@,$BPFDTBREV,")
fi
sed -i "s/preprod_dev_sign = <1>/preprod_dev_sign = <0>/" "${DEV_PARAMS}"; sed -i "s/preprod_dev_sign = <1>/preprod_dev_sign = <0>/" "${DEV_PARAMS}";
sed -i "s/preprod_dev_sign = <1>/preprod_dev_sign = <0>/" "${DEV_PARAMS_B}"; sed -i "s/preprod_dev_sign = <1>/preprod_dev_sign = <0>/" "${DEV_PARAMS_B}";
sed -i "s/preprod_dev_sign = <1>/preprod_dev_sign = <0>/" "${EMC_FUSE_DEV_PARAMS}"; sed -i "s/preprod_dev_sign = <1>/preprod_dev_sign = <0>/" "${EMC_FUSE_DEV_PARAMS}";
@@ -467,8 +568,8 @@ elif [ $no_flash -ne 0 ]; then
else else
pre_sdcard_sed="-es,APPFILE_b,$appfile, -es,APPFILE,$appfile," pre_sdcard_sed="-es,APPFILE_b,$appfile, -es,APPFILE,$appfile,"
if [ -n "$datafile" ]; then if [ -n "$datafile" ]; then
pre_sdcard_sed="$pre_sdcard_sed -es,DATAFILE,$datafile," pre_sdcard_sed="$pre_sdcard_sed -es,DATAFILE,$datafile,"
touch DATAFILE touch DATAFILE
fi fi
touch APPFILE APPFILE_b touch APPFILE APPFILE_b
fi fi
@@ -494,11 +595,38 @@ else
cp "$flash_in" flash.xml.tmp cp "$flash_in" flash.xml.tmp
fi fi
sed -e"s,VERFILE,${MACHINE}_bootblob_ver.txt," -e"s,BPFDTB_FILE,$BPFDTB_FILE," \ sed -e"s,VERFILE,${MACHINE}_bootblob_ver.txt," -e"s,BPFDTB_FILE,$BPFDTB_FILE," \
-e"s, DTB_FILE,$kernel_dtbfile," -e"s,BPFFILE,$BPF_FILE," \ -e"s,TBCDTB-FILE,$dtb_file," -e"s, DTB_FILE,$kernel_dtbfile," -e"s,BPFFILE,$BPF_FILE," \
$appfile_sed flash.xml.tmp > flash.xml $appfile_sed flash.xml.tmp > flash.xml
rm flash.xml.tmp rm flash.xml.tmp
BINSARGS="psc_fw pscfw_t234_prod.bin; \ if [ "$CHIPID" = "0x19" ]; then
BINSARGS="mb2_bootloader nvtboot_recovery_t194.bin; \
mts_preboot preboot_c10_prod_cr.bin; \
mts_mce mce_c10_prod_cr.bin; \
mts_proper mts_c10_prod_cr.bin; \
bpmp_fw bpmp-2_t194.bin; \
bpmp_fw_dtb $BPFDTB_FILE; \
spe_fw spe_t194.bin; \
tos tos-optee_t194.img; \
eks eks.img; \
bootloader_dtb $dtb_file"
bctargs="$UPHY_CONFIG $MINRATCHET_CONFIG \
--device_config $DEVICE_CONFIG \
--misc_config $MISC_CONFIG \
--misc_cold_boot_config $MISC_COLD_BOOT_CONFIG \
--pinmux_config $PINMUX_CONFIG \
--gpioint_config $GPIOINT_CONFIG \
--pmic_config $PMIC_CONFIG \
--pmc_config $PMC_CONFIG \
--prod_config $PROD_CONFIG \
--scr_config $SCR_CONFIG \
--scr_cold_boot_config $SCR_COLD_BOOT_CONFIG \
--br_cmd_config $BR_CMD_CONFIG \
--dev_params $DEV_PARAMS,$DEV_PARAMS_B \
$overlay_dtb_arg"
flashername=nvtboot_recovery_cpu_t194.bin
else
BINSARGS="psc_fw pscfw_t234_prod.bin; \
mts_mce mce_flash_o10_cr_prod.bin; \ mts_mce mce_flash_o10_cr_prod.bin; \
mb2_applet applet_t234.bin; \ mb2_applet applet_t234.bin; \
mb2_bootloader mb2_t234.bin; \ mb2_bootloader mb2_t234.bin; \
@@ -513,17 +641,7 @@ ape_fw adsp-fw.bin; \
spe_fw spe_t234.bin; $fsifw_binsarg \ spe_fw spe_t234.bin; $fsifw_binsarg \
tos tos-optee_t234.img; \ tos tos-optee_t234.img; \
eks eks.img" eks eks.img"
bctargs="$UPHY_CONFIG $MINRATCHET_CONFIG \
if [ $rcm_boot -ne 0 ]; then
BINSARGS="$BINSARGS; kernel $kernfile; kernel_dtb $kernel_dtbfile"
fi
custinfo_args=
if [ -f "$custinfo_out" ]; then
custinfo_args="--cust_info $custinfo_out"
fi
bctargs="$UPHY_CONFIG $MINRATCHET_CONFIG \
--device_config $DEVICE_CONFIG \ --device_config $DEVICE_CONFIG \
--misc_config $MISC_CONFIG \ --misc_config $MISC_CONFIG \
--scr_config $SCR_CONFIG \ --scr_config $SCR_CONFIG \
@@ -541,6 +659,16 @@ bctargs="$UPHY_CONFIG $MINRATCHET_CONFIG \
--concat_cpubl_bldtb \ --concat_cpubl_bldtb \
--cpubl uefi_jetson.bin \ --cpubl uefi_jetson.bin \
$overlay_dtb_arg $custinfo_args" $overlay_dtb_arg $custinfo_args"
fi
if [ $rcm_boot -ne 0 ]; then
BINSARGS="$BINSARGS; kernel $kernfile; kernel_dtb $kernel_dtbfile"
fi
custinfo_args=
if [ -f "$custinfo_out" ]; then
custinfo_args="--cust_info $custinfo_out"
fi
if [ $bup_blob -ne 0 -o $to_sign -ne 0 -o "$sdcard" = "yes" -o $external_device -eq 1 ]; then if [ $bup_blob -ne 0 -o $to_sign -ne 0 -o "$sdcard" = "yes" -o $external_device -eq 1 ]; then
tfcmd=sign tfcmd=sign
@@ -566,7 +694,7 @@ if [ -n "$keyfile" ] || [ $rcm_boot -eq 1 ] || [ $no_flash -eq 1 -a $to_sign -eq
want_signing=1 want_signing=1
fi fi
if [ $have_odmsign_func -eq 1 -a $want_signing -eq 1 ]; then if [ $have_odmsign_func -eq 1 -a $want_signing -eq 1 ]; then
if [ -n "$sbk_keyfile" ]; then if [ "$CHIPID" = "0x23" -a -n "$sbk_keyfile" ]; then
rm -rf signed_bootimg_dir rm -rf signed_bootimg_dir
mkdir signed_bootimg_dir mkdir signed_bootimg_dir
cp xusb_t234_prod.bin signed_bootimg_dir/ cp xusb_t234_prod.bin signed_bootimg_dir/
@@ -577,7 +705,6 @@ if [ $have_odmsign_func -eq 1 -a $want_signing -eq 1 ]; then
done done
fi fi
fi fi
CHIPID="0x23"
tegraid="$CHIPID" tegraid="$CHIPID"
localcfgfile="flash.xml" localcfgfile="flash.xml"
dtbfilename="$kernel_dtbfile" dtbfilename="$kernel_dtbfile"
@@ -585,35 +712,44 @@ if [ $have_odmsign_func -eq 1 -a $want_signing -eq 1 ]; then
bpfdtbfilename="$BPFDTB_FILE" bpfdtbfilename="$BPFDTB_FILE"
localbootfile="$kernfile" localbootfile="$kernfile"
BINSARGS="--bins \"$BINSARGS\"" BINSARGS="--bins \"$BINSARGS\""
flashername="uefi_jetson_with_dtb.bin"
UEFIBL="uefi_jetson_with_dtb.bin"
mb1filename="mb1_t234_prod.bin"
pscbl1filename="psc_bl1_t234_prod.bin"
tbcfilename="uefi_jetson.bin"
custinfofilename="custinfo_out.bin"
BL_DIR="."
BCT="--sdram_config" BCT="--sdram_config"
bctfilename=`echo $sdramcfg_files | cut -d, -f1`
bctfile1name=`echo $sdramcfg_files | cut -d, -f2`
boot_chain_select="A" boot_chain_select="A"
SOSARGS="--applet mb1_t234_prod.bin " if [ "$CHIPID" = "0x19" ]; then
NV_ARGS=" " flashername=nvtboot_recovery_cpu_t194.bin
SOSARGS="--applet mb1_t194_prod.bin "
NV_ARGS="--soft_fuses tegra194-mb1-soft-fuses-l4t.cfg "
BCTARGS="$bctargs --bct_backup --secondary_gpt_backup"
elif [ "$CHIPID" = "0x23" ]; then
flashername="uefi_jetson_with_dtb.bin"
UEFIBL="uefi_jetson_with_dtb.bin"
mb1filename="mb1_t234_prod.bin"
pscbl1filename="psc_bl1_t234_prod.bin"
tbcfilename="uefi_jetson.bin"
custinfofilename="custinfo_out.bin"
SOSARGS="--applet mb1_t234_prod.bin "
NV_ARGS=" "
fi
BL_DIR="."
bctfilename=$(echo $sdramcfg_files | cut -d, -f1)
bctfile1name=$(echo $sdramcfg_files | cut -d, -f2)
BCTARGS="$bctargs --bct_backup --secondary_gpt_backup" BCTARGS="$bctargs --bct_backup --secondary_gpt_backup"
L4T_CONF_DTBO="L4TConfiguration.dtbo" L4T_CONF_DTBO="L4TConfiguration.dtbo"
rootfs_ab=0 rootfs_ab=0
. "$here/odmsign.func" . "$here/odmsign.func"
(odmsign_ext_sign_and_flash) || exit 1 (odmsign_ext_sign_and_flash) || exit 1
cp uefi_jetson.bin rcmboot_uefi_jetson.bin if [ "$CHIPID" = "0x23" ]; then
rcm_overlay_dtbs="$rcm_bootcontrol_overlay" cp uefi_jetson.bin rcmboot_uefi_jetson.bin
if [ -n "$PLUGIN_MANAGER_OVERLAYS" ]; then rcm_overlay_dtbs="$rcm_bootcontrol_overlay"
rcm_overlay_dtbs="$rcm_overlay_dtbs,$PLUGIN_MANAGER_OVERLAYS" if [ -n "$PLUGIN_MANAGER_OVERLAYS" ]; then
fi rcm_overlay_dtbs="$rcm_overlay_dtbs,$PLUGIN_MANAGER_OVERLAYS"
if [ -n "$OVERLAY_DTB_FILE" ]; then fi
rcm_overlay_dtbs="$rcm_overlay_dtbs,$OVERLAY_DTB_FILE" if [ -n "$OVERLAY_DTB_FILE" ]; then
fi rcm_overlay_dtbs="$rcm_overlay_dtbs,$OVERLAY_DTB_FILE"
rcmbootsigncmd="python3 $flashappname $keyargs --chip 0x23 --odmdata $odmdata --bldtb $dtb_file --concat_cpubl_bldtb --overlay_dtb $rcm_overlay_dtbs \ fi
rcmbootsigncmd="python3 $flashappname $keyargs --chip 0x23 --odmdata $odmdata --bldtb $dtb_file --concat_cpubl_bldtb --overlay_dtb $rcm_overlay_dtbs \
--cmd \"sign rcmboot_uefi_jetson.bin bootloader_stage2 A_cpu-bootloader\"" --cmd \"sign rcmboot_uefi_jetson.bin bootloader_stage2 A_cpu-bootloader\""
eval $rcmbootsigncmd || exit 1 eval $rcmbootsigncmd || exit 1
fi
if [ $bup_blob -eq 0 -a $no_flash -ne 0 ]; then if [ $bup_blob -eq 0 -a $no_flash -ne 0 ]; then
if [ -f flashcmd.txt ]; then if [ -f flashcmd.txt ]; then
chmod +x flashcmd.txt chmod +x flashcmd.txt
@@ -629,7 +765,21 @@ if [ $have_odmsign_func -eq 1 -a $want_signing -eq 1 ]; then
touch odmsign.func touch odmsign.func
fi fi
flashcmd="python3 $flashappname ${inst_args} --chip 0x23 --bl uefi_jetson_with_dtb.bin \ if [ "$CHIPID" = "0x19" ]; then
flashcmd="python3 $flashappname ${inst_args} --chip 0x19 --bl nvtboot_recovery_cpu_t194.bin \
--sdram_config $sdramcfg_files \
--odmdata $odmdata \
--bldtb $dtb_file \
--applet mb1_t194_prod.bin \
--soft_fuses tegra194-mb1-soft-fuses-l4t.cfg \
--cmd \"$tfcmd\" $skipuid \
--cfg flash.xml \
--bct_backup \
--secondary_gpt_backup \
$bctargs $ramcodeargs $extdevargs \
--bins \"$BINSARGS\""
else
flashcmd="python3 $flashappname ${inst_args} --chip 0x23 --bl uefi_jetson_with_dtb.bin \
--sdram_config $sdramcfg_files \ --sdram_config $sdramcfg_files \
--odmdata $odmdata \ --odmdata $odmdata \
--applet mb1_t234_prod.bin \ --applet mb1_t234_prod.bin \
@@ -639,6 +789,7 @@ flashcmd="python3 $flashappname ${inst_args} --chip 0x23 --bl uefi_jetson_with_d
--secondary_gpt_backup \ --secondary_gpt_backup \
$bctargs $extdevargs \ $bctargs $extdevargs \
--bins \"$BINSARGS\"" --bins \"$BINSARGS\""
fi
if [ $bup_blob -ne 0 ]; then if [ $bup_blob -ne 0 ]; then
[ -z "$keyfile" ] || flashcmd="${flashcmd} --key \"$keyfile\"" [ -z "$keyfile" ] || flashcmd="${flashcmd} --key \"$keyfile\""
@@ -649,13 +800,17 @@ if [ $bup_blob -ne 0 ]; then
tbcdtbfilename="$dtb_file" tbcdtbfilename="$dtb_file"
bpfdtbfilename="$BPFDTB_FILE" bpfdtbfilename="$BPFDTB_FILE"
localbootfile="boot.img" localbootfile="boot.img"
if [ "$CHIPID" = "0x19" ]; then
TBCFILE="uefi_jetson.bin"
TOSFILE="tos-optee_t194.img"
fi
. "$here/l4t_bup_gen.func" . "$here/l4t_bup_gen.func"
spec="${BOARDID}-${FAB}-${BOARDSKU}-${BOARDREV}-1-${CHIPREV}-${MACHINE}-" spec="${BOARDID}-${FAB}-${BOARDSKU}-${BOARDREV}-1-${CHIPREV}-${MACHINE}-"
if [ $(expr length "$spec") -ge 128 ]; then if [ $(expr length "$spec") -ge 128 ]; then
echo "ERR: TNSPEC must be shorter than 128 characters: $spec" >&2 echo "ERR: TNSPEC must be shorter than 128 characters: $spec" >&2
exit 1 exit 1
fi fi
l4t_bup_gen "$flashcmd" "$spec" "$fuselevel" t186ref "$keyfile" "$sbk_keyfile" 0x23 || exit 1 l4t_bup_gen "$flashcmd" "$spec" "$fuselevel" t186ref "$keyfile" "$sbk_keyfile" $CHIPID || exit 1
exit 0 exit 0
fi fi
@@ -671,13 +826,13 @@ if [ $no_flash -ne 0 ]; then
else else
eval $flashcmd < /dev/null || exit 1 eval $flashcmd < /dev/null || exit 1
if [ -n "$sdcard" -o $external_device -eq 1 ]; then if [ -n "$sdcard" -o $external_device -eq 1 ]; then
if [ $external_device -eq 1 ]; then if [ $external_device -eq 1 ]; then
if [ -z "$serial_number" ]; then if [ -z "$serial_number" ]; then
echo "ERR: missing serial number for initrd-flashing external device" >&2 echo "ERR: missing serial number for initrd-flashing external device" >&2
exit 1 exit 1
fi fi
make_sdcard_args="$make_sdcard_args --serial-number $serial_number" make_sdcard_args="$make_sdcard_args --serial-number $serial_number"
fi fi
if [ -n "$pre_sdcard_sed" ]; then if [ -n "$pre_sdcard_sed" ]; then
rm -f signed/flash.xml.tmp.in rm -f signed/flash.xml.tmp.in
mv signed/flash.xml.tmp signed/flash.xml.tmp.in mv signed/flash.xml.tmp signed/flash.xml.tmp.in

View File

@@ -1,577 +0,0 @@
#!/bin/bash
bup_blob=0
bup_type=
rcm_boot=0
keyfile=
sbk_keyfile=
spi_only=
external_device=0
sdcard=
no_flash=0
to_sign=0
flash_cmd=
imgfile=
dataimg=
inst_args=""
extdevargs=
blocksize=4096
# These functions are used in odmsign.func but do not
# need to do anything when run from this script, as we
# have already copied needed files to the current working
# directory.
mkfilesoft() {
:
}
cp2local() {
:
}
signimage() {
:
}
process_l4t_conf_dtbo() {
:
}
partition_exists_in_PT_table() {
[ "$1" = "secondary_gpt_backup" -o "$1" = "BCT-boot-chain_backup" ]
}
ARGS=$(getopt -n $(basename "$0") -l "bup,bup-type:,no-flash,sign,sdcard,spi-only,boot-only,external-device,rcm-boot,datafile:,usb-instance:,uefi-enc:" -o "u:v:s:b:B:yc:" -- "$@")
if [ $? -ne 0 ]; then
echo "Error parsing options" >&2
exit 1
fi
eval set -- "$ARGS"
unset ARGS
while true; do
case "$1" in
--bup)
bup_blob=1
no_flash=1
shift
;;
--bup-type)
bup_type="$2"
shift 2
;;
--no-flash)
no_flash=1
shift
;;
--sign)
to_sign=1
shift
;;
--sdcard)
sdcard=yes
shift
;;
--spi-only|--boot-only)
spi_only=yes
shift
;;
--rcm-boot)
rcm_boot=1
shift
;;
--external-device)
external_device=1
extdevargs="--external_device"
shift
;;
--datafile)
dataimg="$2"
shift 2
;;
--usb-instance)
usb_instance="$2"
inst_args="--instance ${usb_instance}"
shift 2
;;
-u)
keyfile="$2"
shift 2
;;
-v)
sbk_keyfile="$2"
shift 2
;;
-s)
make_sdcard_args="$make_sdcard_args -s $2"
shift 2
;;
-b)
make_sdcard_args="$make_sdcard_args -b $2"
shift 2
;;
-B)
blocksize="$2"
shift 2
;;
-y)
make_sdcard_args="$make_sdcard_args -y"
shift
;;
-c)
flash_cmd="$2"
shift 2
;;
--)
shift
break
;;
*)
echo "Error processing options" >&2
exit 1
;;
esac
done
flash_in="$1"
dtb_file="$2"
sdramcfg_files="$3"
odmdata="$4"
kernfile="$5"
imgfile="$6"
shift 6
here=$(readlink -f $(dirname "$0"))
flashappname="tegraflash.py"
if [ ! -e ./flashvars ]; then
echo "ERR: missing flash variables file" >&2
exit 1
fi
. ./flashvars
if [ -z "$FLASHVARS" ]; then
echo "ERR: flash variable set not defined" >&2
exit 1
fi
# Temp file for storing cvm.bin in, if we need to query the board for its
# attributes
cvm_bin=$(mktemp cvm.bin.XXXXX)
skipuid=""
bootauth=""
BR_CID=
if [ -z "$CHIPREV" -o -z "$fuselevel" ]; then
BR_CID=$($here/tegrarcm_v2 ${inst_args} --uid | grep BR_CID | cut -d' ' -f2)
chipid="$BR_CID"
if [ -z "$chipid" ]; then
echo "ERR: could not retrieve chip ID" >&2
exit 1
fi
if [ "${chipid:3:2}" != "80" -o "${chipid:6:2}" != "19" ]; then
echo "ERR: chip ID mismatch for Xavier" >&2
exit 1
fi
case "${chipid:2:1}" in
8)
fuselevel="fuselevel_production"
bootauth="NS"
;;
9|a)
fuselevel="fuselevel_production"
bootauth="PKC"
;;
d|e)
fuselevel="fuselevel_production"
bootauth="SBKPKC"
;;
*)
echo "ERR: non-production chip found" >&2
exit 1
;;
esac
CHIPREV="${chipid:5:1}"
skipuid="--skipuid"
case $bootauth in
PKC|SBKPKC)
if [ -z "$keyfile" -o -z "$sbk_keyfile" ]; then
echo "ERR: Target is configured for secure boot ($bootauth); use -u and -v options to specify key files" >&2
exit 1
fi
;;
NS)
if [ -n "$keyfile" -o -n "$sbk_keyfile" ]; then
echo "WARN: Target is not secured; ignoring key files" >&2
keyfile=
sbk_keyfile=
fi
;;
esac
fi
have_boardinfo=
if [ -z "$FAB" -o -z "$BOARDID" ]; then
keyargs=
[ -z "$keyfile" ] || keyargs="$keyargs --key $keyfile"
[ -z "$sbk_keyfile" ] || keyargs="$keyargs --encrypt_key $sbk_keyfile"
rm -f rcm_state
if ! python3 $flashappname ${inst_args} --chip 0x19 --applet mb1_t194_prod.bin $skipuid --soft_fuses tegra194-mb1-soft-fuses-l4t.cfg \
--bins "mb2_applet nvtboot_applet_t194.bin" --cmd "dump eeprom boardinfo ${cvm_bin};reboot recovery" $keyargs; then
echo "ERR: could not retrieve EEPROM board information" >&2
exit 1
fi
have_boardinfo="yes"
skipuid=""
fi
if [ -n "$BOARDID" ]; then
boardid="$BOARDID"
else
boardid=`$here/chkbdinfo -i ${cvm_bin} | tr -d '[:space:]'`
BOARDID="$boardid"
fi
if [ -n "$FAB" ]; then
board_version="$FAB"
else
board_version=`$here/chkbdinfo -f ${cvm_bin} | tr -d '[:space:]' | tr [a-z] [A-Z]`
FAB="$board_version"
fi
if [ -n "$BOARDSKU" ]; then
board_sku="$BOARDSKU"
elif [ -n "$have_boardinfo" ]; then
board_sku=`$here/chkbdinfo -k ${cvm_bin} | tr -d '[:space:]' | tr [a-z] [A-Z]`
BOARDSKU="$board_sku"
fi
if [ -n "$BOARDREV" ]; then
board_revision="$BOARDREV"
elif [ -n "$have_boardinfo" ]; then
board_revision=`$here/chkbdinfo -r ${cvm_bin} | tr -d '[:space:]' | tr [a-z] [A-Z]`
BOARDREV="$board_revision"
fi
if [ -z "$serial_number" -a -n "$have_boardinfo" ]; then
serial_number=$($here/chkbdinfo -a ${cvm_bin} | tr -d '[:space:]')
fi
[ -f ${cvm_bin} ] && rm -f ${cvm_bin}
rm -f boardvars.sh
cat >boardvars.sh <<EOF
BOARDID="$BOARDID"
FAB="$FAB"
BOARDSKU="$BOARDSKU"
BOARDREV="$BOARDREV"
CHIPREV="$CHIPREV"
fuselevel="$fuselevel"
EOF
if [ -n "$serial_number" ]; then
echo "serial_number=$serial_number" >>boardvars.sh
fi
if [ -n "$usb_instance" ]; then
echo "usb_instance=$usb_instance" >>boardvars.sh
fi
if [ -n "$BR_CID" ]; then
echo "BR_CID=\"$BR_CID\"" >>boardvars.sh
fi
# Adapted from p2972-0000.conf.common in L4T kit
TOREV="a01"
BPFDTBREV="a01"
PMICREV="a01"
case "$boardid" in
2888)
case $board_version in
[01][0-9][0-9])
;;
2[0-9][0-9])
TOREV="a02"
PMICREV="a02"
BPFDTBREV="a02"
;;
[34][0-9][0-9])
TOREV="a02"
PMICREV="a04"
BPFDTBREV="a02"
if [ $board_sku -ge 4 ] || [ $board_version -gt 300 -a `expr "$board_revision" \> "D.0"` -eq 1 ]; then
PMICREV="a04-E-0"
BPFDTBREV="a04"
fi
;;
[06][0-9][0-9]) # 600 range is the board version of the Jetson AGX Xavier Industrial
;;
*)
echo "ERR: unrecognized board version $board_version" >&2
exit 1
;;
esac
if [ "$board_sku" = "0005" ]; then
# AGX Xavier 64GB
BPFDTBREV="0005-a04-maxn"
fi
;;
3668)
# No revision-specific settings
;;
*)
echo "ERR: unrecognized board ID $boardid" >&2
exit 1
;;
esac
ramcodeargs=
if [ "$boardid" = "2888" -a "$board_sku" = "0008" ]; then
# AGX Xavier Industrial
ramcodeargs="--ramcode 1"
fi
for var in $FLASHVARS; do
eval pat=$`echo $var`
if [ -z "${pat+definedmaybeempty}" ]; then
echo "ERR: missing variable: $var" >&2
exit 1
elif [ -n "$pat" ]; then
val=$(echo $pat | sed -e"s,@BPFDTBREV@,$BPFDTBREV," -e"s,@BOARDREV@,$TOREV," -e"s,@PMICREV@,$PMICREV," -e"s,@CHIPREV@,$CHIPREV,")
eval $var='$val'
fi
done
[ -n "$BOARDID" ] || BOARDID=2888
[ -n "$FAB" ] || FAB=400
[ -n "$fuselevel" ] || fuselevel=fuselevel_production
[ -n "$BOOTDEV" ] || BOOTDEV="mmcblk0p1"
echo "Board ID($BOARDID) version($FAB) sku($BOARDSKU) revision($BOARDREV)"
rm -f ${MACHINE}_bootblob_ver.txt
echo "NV4" >${MACHINE}_bootblob_ver.txt
. bsp_version
echo "# R$BSP_BRANCH , REVISION: $BSP_MAJOR.$BSP_MINOR" >>${MACHINE}_bootblob_ver.txt
echo "BOARDID=$BOARDID BOARDSKU=$BOARDSKU FAB=$FAB" >>${MACHINE}_bootblob_ver.txt
date "+%Y%m%d%H%M%S" >>${MACHINE}_bootblob_ver.txt
printf "0x%x\n" $(( (BSP_BRANCH<<16) | (BSP_MAJOR<<8) | BSP_MINOR )) >>${MACHINE}_bootblob_ver.txt
bytes=$(wc -c ${MACHINE}_bootblob_ver.txt | cut -d' ' -f1)
cksum=$(python3 -c "import zlib; print(\"%X\" % (zlib.crc32(open(\"${MACHINE}_bootblob_ver.txt\", \"rb\").read()) & 0xFFFFFFFF))")
echo "BYTES:$bytes CRC32:$cksum" >>${MACHINE}_bootblob_ver.txt
if [ -z "$sdcard" -a $external_device -eq 0 ]; then
appfile=$(basename "$imgfile").img
if [ -n "$dataimg" ]; then
datafile=$(basename "$dataimg").img
fi
else
appfile="$imgfile"
datafile="$dataimg"
fi
appfile_sed=
if [ $bup_blob -ne 0 -o $rcm_boot -ne 0 ]; then
kernfile="${kernfile:-boot.img}"
appfile_sed="-e/APPFILE/d -e/DATAFILE/d"
elif [ $no_flash -eq 0 -a -z "$sdcard" -a $external_device -eq 0 ]; then
appfile_sed="-es,APPFILE_b,$appfile, -es,APPFILE,$appfile, -es,DATAFILE,$datafile,"
elif [ $no_flash -ne 0 ]; then
touch APPFILE APPFILE_b DATAFILE
else
pre_sdcard_sed="-es,APPFILE_b,$appfile, -es,APPFILE,$appfile,"
if [ -n "$datafile" ]; then
pre_sdcard_sed="$pre_sdcard_sed -es,DATAFILE,$datafile,"
fi
fi
dtb_file_basename=$(basename "$dtb_file")
kernel_dtbfile="kernel_$dtb_file_basename"
rm -f "$kernel_dtbfile"
if [ -e "$dtb_file.signed" ]; then
cp "$dtb_file.signed" "$kernel_dtbfile"
else
cp "$dtb_file" "$kernel_dtbfile"
fi
if [ "$spi_only" = "yes" -o $external_device -eq 1 ]; then
if [ ! -e "$here/nvflashxmlparse" ]; then
echo "ERR: missing nvflashxmlparse script" >&2
exit 1
fi
fi
if [ "$spi_only" = "yes" ] || [ $bup_blob -ne 0 -a "$bup_type" = "bl" ]; then
"$here/nvflashxmlparse" --extract -t boot -o flash.xml.tmp "$flash_in" || exit 1
else
cp "$flash_in" flash.xml.tmp
fi
sed -e"s,VERFILE,${MACHINE}_bootblob_ver.txt," -e"s,BPFDTB_FILE,$BPFDTB_FILE," \
-e"s,TBCDTB-FILE,$dtb_file," -e"s, DTB_FILE,$kernel_dtbfile," \
$appfile_sed flash.xml.tmp > flash.xml
rm flash.xml.tmp
BINSARGS="mb2_bootloader nvtboot_recovery_t194.bin; \
mts_preboot preboot_c10_prod_cr.bin; \
mts_mce mce_c10_prod_cr.bin; \
mts_proper mts_c10_prod_cr.bin; \
bpmp_fw bpmp-2_t194.bin; \
bpmp_fw_dtb $BPFDTB_FILE; \
spe_fw spe_t194.bin; \
tos tos-optee_t194.img; \
eks eks.img; \
bootloader_dtb $dtb_file"
have_odmsign_func=0
[ ! -e "$here/odmsign.func" ] || have_odmsign_func=1
if [ -n "$keyfile" -o -n "$sbk_keyfile" ] && [ $have_odmsign_func -eq 0 ]; then
echo "ERR: missing odmsign.func from secureboot package, signing not supported" >&2
exit 1
fi
if [ $rcm_boot -ne 0 ]; then
BINSARGS="$BINSARGS; kernel $kernfile; kernel_dtb $kernel_dtbfile"
fi
overlay_dtb_files="$BOOTCONTROL_OVERLAYS"
if [ -z "$overlay_dtb_files" ]; then
overlay_dtb_files="$PLUGIN_MANAGER_OVERLAYS"
elif [ -n "$PLUGIN_MANAGER_OVERLAYS" ]; then
overlay_dtb_files="$overlay_dtb_files,$PLUGIN_MANAGER_OVERLAYS"
fi
if [ -z "$overlay_dtb_files" ]; then
overlay_dtb_files="$OVERLAY_DTB_FILE"
elif [ -n "$OVERLAY_DTB_FILE" ]; then
overlay_dtb_files="$overlay_dtb_files,$OVERLAY_DTB_FILE"
fi
overlay_dtb_arg=
if [ -n "$overlay_dtb_files" ]; then
overlay_dtb_arg="--overlay_dtb $overlay_dtb_files"
fi
bctargs="$UPHY_CONFIG $MINRATCHET_CONFIG \
--device_config $DEVICE_CONFIG \
--misc_config $MISC_CONFIG \
--misc_cold_boot_config $MISC_COLD_BOOT_CONFIG \
--pinmux_config $PINMUX_CONFIG \
--gpioint_config $GPIOINT_CONFIG \
--pmic_config $PMIC_CONFIG \
--pmc_config $PMC_CONFIG \
--prod_config $PROD_CONFIG \
--scr_config $SCR_CONFIG \
--scr_cold_boot_config $SCR_COLD_BOOT_CONFIG \
--br_cmd_config $BR_CMD_CONFIG \
--dev_params $DEV_PARAMS,$DEV_PARAMS_B \
$overlay_dtb_arg"
if [ $bup_blob -ne 0 -o $to_sign -ne 0 -o "$sdcard" = "yes" -o $external_device -eq 1 ]; then
tfcmd=sign
skipuid="--skipuid"
elif [ $rcm_boot -ne 0 ]; then
tfcmd=rcmboot
else
if [ -z "$sdcard" -a $external_device -eq 0 -a $no_flash -eq 0 -a "$spi_only" != "yes" ]; then
rm -f "$appfile"
echo "Creating sparseimage ${appfile}..."
$here/mksparse -b ${blocksize} --fillpattern=0 "$imgfile" "$appfile" || exit 1
if [ -n "$datafile" ]; then
rm -f "$datafile"
echo "Creating sparseimage ${datafile}..."
$here/mksparse -b ${blocksize} --fillpattern=0 "$dataimg" "$datafile" || exit 1
fi
fi
tfcmd=${flash_cmd:-"flash;reboot"}
fi
want_signing=0
if [ -n "$keyfile" ] || [ $rcm_boot -eq 1 ] || [ $no_flash -eq 1 -a $to_sign -eq 1 ]; then
want_signing=1
fi
if [ $have_odmsign_func -eq 1 -a $want_signing -eq 1 ]; then
CHIPID="0x19"
tegraid="$CHIPID"
localcfgfile="flash.xml"
dtbfilename="$kernel_dtbfile"
tbcdtbfilename="$dtb_file"
bpfdtbfilename="$BPFDTB_FILE"
localbootfile="$kernfile"
BINSARGS="--bins \"$BINSARGS\""
flashername=nvtboot_recovery_cpu_t194.bin
BCT="--sdram_config"
bctfilename=`echo $sdramcfg_files | cut -d, -f1`
bctfile1name=`echo $sdramcfg_files | cut -d, -f2`
boot_chain_select="A"
SOSARGS="--applet mb1_t194_prod.bin "
NV_ARGS="--soft_fuses tegra194-mb1-soft-fuses-l4t.cfg "
BCTARGS="$bctargs --bct_backup --secondary_gpt_backup"
rootfs_ab=0
. "$here/odmsign.func"
(odmsign_ext_sign_and_flash) || exit 1
if [ $bup_blob -eq 0 -a $no_flash -ne 0 ]; then
if [ -f flashcmd.txt ]; then
chmod +x flashcmd.txt
ln -sf flashcmd.txt ./secureflash.sh
else
echo "WARN: signing completed successfully, but flashcmd.txt missing" >&2
fi
rm -f APPFILE APPFILE_b DATAFILE
fi
if [ $bup_blob -eq 0 ]; then
exit 0
fi
touch odmsign.func
fi
flashcmd="python3 $flashappname ${inst_args} --chip 0x19 --bl nvtboot_recovery_cpu_t194.bin \
--sdram_config $sdramcfg_files \
--odmdata $odmdata \
--bldtb $dtb_file \
--applet mb1_t194_prod.bin \
--soft_fuses tegra194-mb1-soft-fuses-l4t.cfg \
--cmd \"$tfcmd\" $skipuid \
--cfg flash.xml \
--bct_backup \
--secondary_gpt_backup \
$bctargs $ramcodeargs $extdevargs \
--bins \"$BINSARGS\""
if [ $bup_blob -ne 0 ]; then
[ -z "$keyfile" ] || flashcmd="${flashcmd} --key \"$keyfile\""
[ -z "$sbk_keyfile" ] || flashcmd="${flashcmd} --encrypt_key \"$sbk_keyfile\""
support_multi_spec=1
clean_up=0
dtbfilename="$kernel_dtbfile"
tbcdtbfilename="$dtb_file"
bpfdtbfilename="$BPFDTB_FILE"
localbootfile="boot.img"
TBCFILE="uefi_jetson.bin"
TOSFILE="tos-optee_t194.img"
. "$here/l4t_bup_gen.func"
spec="${BOARDID}-${FAB}-${BOARDSKU}-${BOARDREV}-1-${CHIPREV}-${MACHINE}-"
if [ $(expr length "$spec") -ge 128 ]; then
echo "ERR: TNSPEC must be shorter than 128 characters: $spec" >&2
exit 1
fi
l4t_bup_gen "$flashcmd" "$spec" "$fuselevel" t186ref "$keyfile" "$sbk_keyfile" 0x19 || exit 1
exit 0
fi
if [ $to_sign -ne 0 ]; then
eval $flashcmd < /dev/null || exit 1
exit 0
fi
if [ $no_flash -ne 0 ]; then
echo "$flashcmd" | sed -e 's,--skipuid,,g' > flashcmd.txt
chmod +x flashcmd.txt
rm -f APPFILE APPFILE_b DATAFILE
else
eval $flashcmd < /dev/null || exit 1
if [ -n "$sdcard" -o $external_device -eq 1 ]; then
if [ $external_device -eq 1 ]; then
if [ -z "$serial_number" ]; then
echo "ERR: missing serial number for initrd-flashing external device" >&2
exit 1
fi
make_sdcard_args="$make_sdcard_args --serial-number $serial_number"
fi
if [ -n "$pre_sdcard_sed" ]; then
rm -f signed/flash.xml.tmp.in
mv signed/flash.xml.tmp signed/flash.xml.tmp.in
sed $pre_sdcard_sed signed/flash.xml.tmp.in > signed/flash.xml.tmp
fi
$here/make-sdcard $make_sdcard_args signed/flash.xml.tmp "$@"
fi
fi