Add DFU single-device targeting to arm64 SHI
This is a breaking change so this is a v2. The
device expects to receive a variable 'DFUethaddr'
from the TFTP server during DFU. If this matches
the MAC address of the device or if it's blank,
which means it's an update targeting all devices,
then the update is applied. This is backwards
compatible since omitted variables are empty
by default.
BUG: 144182574
Test: untested as yet
Change-Id: I2fde4d5de88d81ceee3095bb1960300e0f95b2e1
diff --git a/tools/create_base_image_arm.sh b/tools/create_base_image_arm.sh
index 4cd673b..d79334b 100755
--- a/tools/create_base_image_arm.sh
+++ b/tools/create_base_image_arm.sh
@@ -203,15 +203,17 @@
setenv OldSha ${Sha}
setenv Sha
env import -t ${scriptaddr} 0x8000 ManifestVersion
+ echo "Manifest version $ManifestVersion";
if test "$ManifestVersion" = "1"; then
run manifest1
+ elif test "$ManifestVersion" = "2"; then
+ run manifest2
else
run manifestX
fi
fi'
setenv manifestX 'echo "***** ERROR: Unknown manifest version! *****";'
setenv manifest1 '
-echo "Manifest version 1";
env import -t ${scriptaddr} 0x8000
if test "$Sha" != "$OldSha"; then
setenv serverip ${TftpServer}
@@ -228,6 +230,27 @@
else
echo "Already have ${Sha}. Booting..."
fi'
+setenv manifest2 '
+env import -t ${scriptaddr} 0x8000
+if test "$DFUethaddr" = "$ethaddr" || test "$DFUethaddr" = ""; then
+ if test "$Sha" != "$OldSha"; then
+ setenv serverip ${TftpServer}
+ setenv loadaddr 0x00200000
+ mmc dev 0 0;
+ file=$TplSplImg; offset=0x40; size=0x1f80; run tftpget1; setenv TplSplImg
+ file=$UbootItb; offset=0x4000; size=0x2000; run tftpget1; setenv UbootItb
+ file=$TrustImg; offset=0x6000; size=0x2000; run tftpget1; setenv TrustImg
+ file=$RootfsImg; offset=0x8000; size=0; run tftpget1; setenv RootfsImg
+ file=$UbootEnv; offset=0x1fc0; size=0x40; run tftpget1; setenv UbootEnv
+ mw.b ${scriptaddr} 0 0x8000
+ env export -b ${scriptaddr} 0x8000
+ mmc write ${scriptaddr} 0x1fc0 0x40
+ else
+ echo "Already have ${Sha}. Booting..."
+ fi
+else
+ echo "Update ${Sha} isn't for me. Booting..."
+fi'
setenv tftpget1 "
mw.b ${loadaddr} 0 0x400000
&& tftp ${file}