swupdate: add u-boot swupdate support
This commit adds u-boot swupdate support for all platforms. Now u-boot can be updated with all our supported update options. Currently it will only update first partition u-boot partition. https://onedigi.atlassian.net/browse/DEL-8749 Signed-off-by: Mike Engel <Mike.Engel@digi.com>
This commit is contained in:
parent
fd70bf2fce
commit
e4bb4d69af
|
|
@ -80,3 +80,6 @@ UBOOT_ENV = "${@bb.utils.contains('TRUSTFENCE_FIT_IMG', '1', 'boot', '', d)}"
|
||||||
# Partitions to blacklist for swupdate:
|
# Partitions to blacklist for swupdate:
|
||||||
# fsbl1, fsbl2, metadata1, metadata2, fip-a, fip-b
|
# fsbl1, fsbl2, metadata1, metadata2, fip-a, fip-b
|
||||||
SWUPDATE_MTD_BLACKLIST = "0 1 2 3 4 5"
|
SWUPDATE_MTD_BLACKLIST = "0 1 2 3 4 5"
|
||||||
|
|
||||||
|
# Bootloader Flash offset
|
||||||
|
BOOTLOADER_SEEK_BOOT = "0"
|
||||||
|
|
|
||||||
|
|
@ -88,10 +88,29 @@ SWUPDATE_IS_IMAGES_UPDATE = "${@update_based_on_images(d)}"
|
||||||
|
|
||||||
# Determine the correct UBoot update script file to use depending on storage type.
|
# Determine the correct UBoot update script file to use depending on storage type.
|
||||||
SWUPDATE_UBOOT_SCRIPT = "${@oe.utils.conditional('STORAGE_MEDIA', 'mmc', 'swupdate_uboot_mmc.sh', 'swupdate_uboot_nand.sh', d)}"
|
SWUPDATE_UBOOT_SCRIPT = "${@oe.utils.conditional('STORAGE_MEDIA', 'mmc', 'swupdate_uboot_mmc.sh', 'swupdate_uboot_nand.sh', d)}"
|
||||||
|
SWUPDATE_UBOOT_SCRIPT_NAME = "${@os.path.basename(d.getVar('SWUPDATE_UBOOT_SCRIPT'))}"
|
||||||
|
|
||||||
UBOOT_EXT ?= ".${UBOOT_SUFFIX}"
|
SWUPDATE_UBOOT_PREFIX ?= "${UBOOT_PREFIX}"
|
||||||
|
SWUPDATE_UBOOT_PREFIX:ccmp1 ?= "fip"
|
||||||
|
SWUPDATE_UBOOT_PREFIX_TFA ?= "tf-a"
|
||||||
|
|
||||||
UBOOTIMG_OFFSET ?= "${BOOTLOADER_SEEK_BOOT}"
|
SWUPDATE_UBOOT_EXT ?= ".${UBOOT_SUFFIX}"
|
||||||
|
SWUPDATE_UBOOT_EXT_TFA ?= ".stm32"
|
||||||
|
|
||||||
|
SWUPDATE_UBOOT_NAME ?= "${SWUPDATE_UBOOT_PREFIX}-${MACHINE}${SWUPDATE_UBOOT_EXT}"
|
||||||
|
SWUPDATE_UBOOT_NAME:ccmp1 ?= "${SWUPDATE_UBOOT_PREFIX}-${MACHINE}-optee${SWUPDATE_UBOOT_EXT}"
|
||||||
|
SWUPDATE_UBOOT_NAME_TFA ?= "${@oe.utils.conditional('DEY_SOC_VENDOR', 'STM', '${SWUPDATE_UBOOT_PREFIX_TFA}-${MACHINE}-nand${SWUPDATE_UBOOT_EXT_TFA}', '', d)}"
|
||||||
|
|
||||||
|
SWUPDATE_UBOOT_OFFSET ?= "0"
|
||||||
|
SWUPDATE_UBOOT_OFFSET:ccimx6 ?= "1"
|
||||||
|
|
||||||
|
# Retrieve the correct encryption type.
|
||||||
|
def get_swupdate_uboot_enc(d):
|
||||||
|
if d.getVar('TRUSTFENCE_DEK_PATH') and d.getVar('TRUSTFENCE_DEK_PATH') != "0" :
|
||||||
|
return "enc"
|
||||||
|
return "normal"
|
||||||
|
|
||||||
|
SWUPDATE_UBOOT_ENC ?= "${@get_swupdate_uboot_enc(d)}"
|
||||||
|
|
||||||
#######################################
|
#######################################
|
||||||
########## SWU Update Script ##########
|
########## SWU Update Script ##########
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,13 @@ software =
|
||||||
images: (
|
images: (
|
||||||
##IMAGES_PRIMARY##
|
##IMAGES_PRIMARY##
|
||||||
);
|
);
|
||||||
|
##FILES_UBOOT##
|
||||||
scripts: (
|
scripts: (
|
||||||
{
|
{
|
||||||
filename = "@@SWUPDATE_SCRIPT_NAME@@";
|
filename = "@@SWUPDATE_SCRIPT_NAME@@";
|
||||||
type = "shellscript";
|
type = "shellscript";
|
||||||
}
|
}
|
||||||
|
##SCRIPT_UBOOT##
|
||||||
);
|
);
|
||||||
uboot: (
|
uboot: (
|
||||||
{
|
{
|
||||||
|
|
@ -25,11 +27,13 @@ software =
|
||||||
images: (
|
images: (
|
||||||
##IMAGES_SECONDARY##
|
##IMAGES_SECONDARY##
|
||||||
);
|
);
|
||||||
|
##FILES_UBOOT##
|
||||||
scripts: (
|
scripts: (
|
||||||
{
|
{
|
||||||
filename = "@@SWUPDATE_SCRIPT_NAME@@";
|
filename = "@@SWUPDATE_SCRIPT_NAME@@";
|
||||||
type = "shellscript";
|
type = "shellscript";
|
||||||
}
|
}
|
||||||
|
##SCRIPT_UBOOT##
|
||||||
);
|
);
|
||||||
uboot: (
|
uboot: (
|
||||||
{
|
{
|
||||||
|
|
@ -42,11 +46,13 @@ software =
|
||||||
images: (
|
images: (
|
||||||
##IMAGES_SINGLE##
|
##IMAGES_SINGLE##
|
||||||
);
|
);
|
||||||
|
##FILES_UBOOT##
|
||||||
scripts: (
|
scripts: (
|
||||||
{
|
{
|
||||||
filename = "@@SWUPDATE_SCRIPT_NAME@@";
|
filename = "@@SWUPDATE_SCRIPT_NAME@@";
|
||||||
type = "shellscript";
|
type = "shellscript";
|
||||||
}
|
}
|
||||||
|
##SCRIPT_UBOOT##
|
||||||
);
|
);
|
||||||
uboot: (
|
uboot: (
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,13 @@ software =
|
||||||
images: (
|
images: (
|
||||||
##IMAGES_PRIMARY##
|
##IMAGES_PRIMARY##
|
||||||
);
|
);
|
||||||
|
##FILES_UBOOT##
|
||||||
scripts: (
|
scripts: (
|
||||||
{
|
{
|
||||||
filename = "@@SWUPDATE_SCRIPT_NAME@@";
|
filename = "@@SWUPDATE_SCRIPT_NAME@@";
|
||||||
type = "shellscript";
|
type = "shellscript";
|
||||||
}
|
}
|
||||||
|
##SCRIPT_UBOOT##
|
||||||
);
|
);
|
||||||
uboot: (
|
uboot: (
|
||||||
{
|
{
|
||||||
|
|
@ -29,11 +31,13 @@ software =
|
||||||
images: (
|
images: (
|
||||||
##IMAGES_SECONDARY##
|
##IMAGES_SECONDARY##
|
||||||
);
|
);
|
||||||
|
##FILES_UBOOT##
|
||||||
scripts: (
|
scripts: (
|
||||||
{
|
{
|
||||||
filename = "@@SWUPDATE_SCRIPT_NAME@@";
|
filename = "@@SWUPDATE_SCRIPT_NAME@@";
|
||||||
type = "shellscript";
|
type = "shellscript";
|
||||||
}
|
}
|
||||||
|
##SCRIPT_UBOOT##
|
||||||
);
|
);
|
||||||
uboot: (
|
uboot: (
|
||||||
{
|
{
|
||||||
|
|
@ -50,11 +54,13 @@ software =
|
||||||
images: (
|
images: (
|
||||||
##IMAGES_SINGLE##
|
##IMAGES_SINGLE##
|
||||||
);
|
);
|
||||||
|
##FILES_UBOOT##
|
||||||
scripts: (
|
scripts: (
|
||||||
{
|
{
|
||||||
filename = "@@SWUPDATE_SCRIPT_NAME@@";
|
filename = "@@SWUPDATE_SCRIPT_NAME@@";
|
||||||
type = "shellscript";
|
type = "shellscript";
|
||||||
}
|
}
|
||||||
|
##SCRIPT_UBOOT##
|
||||||
);
|
);
|
||||||
uboot: (
|
uboot: (
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
filename = "##FILE_NAME##";
|
||||||
|
path = "##FILE_PATH##";
|
||||||
|
sha256 = "$swupdate_get_sha256(##FILE_NAME##)";
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
filename = "@@SWUPDATE_UBOOT_SCRIPT_NAME@@";
|
||||||
|
type = "preinstall";
|
||||||
|
data = "@@SWUPDATE_UBOOT_NAME@@ @@SWUPDATE_UBOOT_ENC@@ @@SWUPDATE_UBOOT_OFFSET@@ @@SWUPDATE_UBOOT_NAME_TFA@@";
|
||||||
|
sha256 = "$swupdate_get_sha256(@@SWUPDATE_UBOOT_SCRIPT_NAME@@)";
|
||||||
|
}
|
||||||
|
|
@ -13,6 +13,7 @@ software =
|
||||||
path = "/";
|
path = "/";
|
||||||
sha256 = "$swupdate_get_sha256(@@SWUPDATE_FILES_TARGZ_FILE_NAME@@)";
|
sha256 = "$swupdate_get_sha256(@@SWUPDATE_FILES_TARGZ_FILE_NAME@@)";
|
||||||
}
|
}
|
||||||
|
##FILES_UBOOT##
|
||||||
);
|
);
|
||||||
scripts: (
|
scripts: (
|
||||||
{
|
{
|
||||||
|
|
@ -20,6 +21,7 @@ software =
|
||||||
sha256 = "$swupdate_get_sha256(@@SWUPDATE_SCRIPT_NAME@@)";
|
sha256 = "$swupdate_get_sha256(@@SWUPDATE_SCRIPT_NAME@@)";
|
||||||
type = "shellscript";
|
type = "shellscript";
|
||||||
}
|
}
|
||||||
|
##SCRIPT_UBOOT##
|
||||||
);
|
);
|
||||||
uboot: (
|
uboot: (
|
||||||
{
|
{
|
||||||
|
|
@ -40,6 +42,7 @@ software =
|
||||||
path = "/system/";
|
path = "/system/";
|
||||||
sha256 = "$swupdate_get_sha256(@@SWUPDATE_FILES_TARGZ_FILE_NAME@@)";
|
sha256 = "$swupdate_get_sha256(@@SWUPDATE_FILES_TARGZ_FILE_NAME@@)";
|
||||||
}
|
}
|
||||||
|
##FILES_UBOOT##
|
||||||
);
|
);
|
||||||
scripts: (
|
scripts: (
|
||||||
{
|
{
|
||||||
|
|
@ -47,6 +50,7 @@ software =
|
||||||
sha256 = "$swupdate_get_sha256(@@SWUPDATE_SCRIPT_NAME@@)";
|
sha256 = "$swupdate_get_sha256(@@SWUPDATE_SCRIPT_NAME@@)";
|
||||||
type = "shellscript";
|
type = "shellscript";
|
||||||
}
|
}
|
||||||
|
##SCRIPT_UBOOT##
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
platform = {
|
platform = {
|
||||||
|
|
|
||||||
|
|
@ -8,12 +8,14 @@ software =
|
||||||
images: (
|
images: (
|
||||||
##IMAGES_PRIMARY##
|
##IMAGES_PRIMARY##
|
||||||
);
|
);
|
||||||
|
##FILES_UBOOT##
|
||||||
scripts: (
|
scripts: (
|
||||||
{
|
{
|
||||||
filename = "@@SWUPDATE_SCRIPT_NAME@@";
|
filename = "@@SWUPDATE_SCRIPT_NAME@@";
|
||||||
sha256 = "$swupdate_get_sha256(@@SWUPDATE_SCRIPT_NAME@@)";
|
sha256 = "$swupdate_get_sha256(@@SWUPDATE_SCRIPT_NAME@@)";
|
||||||
type = "shellscript";
|
type = "shellscript";
|
||||||
}
|
}
|
||||||
|
##SCRIPT_UBOOT##
|
||||||
);
|
);
|
||||||
uboot: (
|
uboot: (
|
||||||
{
|
{
|
||||||
|
|
@ -26,12 +28,14 @@ software =
|
||||||
images: (
|
images: (
|
||||||
##IMAGES_SECONDARY##
|
##IMAGES_SECONDARY##
|
||||||
);
|
);
|
||||||
|
##FILES_UBOOT##
|
||||||
scripts: (
|
scripts: (
|
||||||
{
|
{
|
||||||
filename = "@@SWUPDATE_SCRIPT_NAME@@";
|
filename = "@@SWUPDATE_SCRIPT_NAME@@";
|
||||||
sha256 = "$swupdate_get_sha256(@@SWUPDATE_SCRIPT_NAME@@)";
|
sha256 = "$swupdate_get_sha256(@@SWUPDATE_SCRIPT_NAME@@)";
|
||||||
type = "shellscript";
|
type = "shellscript";
|
||||||
}
|
}
|
||||||
|
##SCRIPT_UBOOT##
|
||||||
);
|
);
|
||||||
uboot: (
|
uboot: (
|
||||||
{
|
{
|
||||||
|
|
@ -44,12 +48,14 @@ software =
|
||||||
images: (
|
images: (
|
||||||
##IMAGES_SINGLE##
|
##IMAGES_SINGLE##
|
||||||
);
|
);
|
||||||
|
##FILES_UBOOT##
|
||||||
scripts: (
|
scripts: (
|
||||||
{
|
{
|
||||||
filename = "@@SWUPDATE_SCRIPT_NAME@@";
|
filename = "@@SWUPDATE_SCRIPT_NAME@@";
|
||||||
sha256 = "$swupdate_get_sha256(@@SWUPDATE_SCRIPT_NAME@@)";
|
sha256 = "$swupdate_get_sha256(@@SWUPDATE_SCRIPT_NAME@@)";
|
||||||
type = "shellscript";
|
type = "shellscript";
|
||||||
}
|
}
|
||||||
|
##SCRIPT_UBOOT##
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
platform = {
|
platform = {
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ software =
|
||||||
images: (
|
images: (
|
||||||
##IMAGES_PRIMARY##
|
##IMAGES_PRIMARY##
|
||||||
);
|
);
|
||||||
|
##FILES_UBOOT##
|
||||||
scripts: (
|
scripts: (
|
||||||
{
|
{
|
||||||
filename = "@@SWUPDATE_SCRIPT_NAME@@";
|
filename = "@@SWUPDATE_SCRIPT_NAME@@";
|
||||||
|
|
@ -15,6 +16,7 @@ software =
|
||||||
data = "$swupdate_get_sha256(@@SWUPDATE_RDIFF_ROOTFS_SOURCE_FILE@@)"
|
data = "$swupdate_get_sha256(@@SWUPDATE_RDIFF_ROOTFS_SOURCE_FILE@@)"
|
||||||
sha256 = "$swupdate_get_sha256(@@SWUPDATE_SCRIPT_NAME@@)";
|
sha256 = "$swupdate_get_sha256(@@SWUPDATE_SCRIPT_NAME@@)";
|
||||||
}
|
}
|
||||||
|
##SCRIPT_UBOOT##
|
||||||
);
|
);
|
||||||
uboot: (
|
uboot: (
|
||||||
{
|
{
|
||||||
|
|
@ -27,6 +29,7 @@ software =
|
||||||
images: (
|
images: (
|
||||||
##IMAGES_SECONDARY##
|
##IMAGES_SECONDARY##
|
||||||
);
|
);
|
||||||
|
##FILES_UBOOT##
|
||||||
scripts: (
|
scripts: (
|
||||||
{
|
{
|
||||||
filename = "@@SWUPDATE_SCRIPT_NAME@@";
|
filename = "@@SWUPDATE_SCRIPT_NAME@@";
|
||||||
|
|
@ -34,6 +37,7 @@ software =
|
||||||
data = "$swupdate_get_sha256(@@SWUPDATE_RDIFF_ROOTFS_SOURCE_FILE@@)"
|
data = "$swupdate_get_sha256(@@SWUPDATE_RDIFF_ROOTFS_SOURCE_FILE@@)"
|
||||||
sha256 = "$swupdate_get_sha256(@@SWUPDATE_SCRIPT_NAME@@)";
|
sha256 = "$swupdate_get_sha256(@@SWUPDATE_SCRIPT_NAME@@)";
|
||||||
}
|
}
|
||||||
|
##SCRIPT_UBOOT##
|
||||||
);
|
);
|
||||||
uboot: (
|
uboot: (
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,77 +0,0 @@
|
||||||
software =
|
|
||||||
{
|
|
||||||
version = "##FW_VERSION##";
|
|
||||||
description = "##DESCRIPTION##";
|
|
||||||
|
|
||||||
mmc = {
|
|
||||||
platform: {
|
|
||||||
images: (
|
|
||||||
{
|
|
||||||
filename = "##BOOTIMG_NAME##";
|
|
||||||
device = "##BOOT_DEV##";
|
|
||||||
type = "raw";
|
|
||||||
sha256 = "$swupdate_get_sha256(##BOOTIMG_NAME##)";
|
|
||||||
installed-directly = true;
|
|
||||||
},
|
|
||||||
{
|
|
||||||
filename = "##ROOTIMG_NAME##";
|
|
||||||
device = "##ROOTFS_DEV##";
|
|
||||||
type = "raw";
|
|
||||||
sha256 = "$swupdate_get_sha256(##ROOTIMG_NAME##)";
|
|
||||||
compressed = "zlib";
|
|
||||||
installed-directly = true;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
files: (
|
|
||||||
{
|
|
||||||
filename = "##UBOOTIMG_NAME##";
|
|
||||||
path = "##UBOOT_IMAGE_PATH##";
|
|
||||||
sha256 = "$swupdate_get_sha256(##UBOOTIMG_NAME##)";
|
|
||||||
}
|
|
||||||
);
|
|
||||||
scripts: (
|
|
||||||
{
|
|
||||||
filename = "##SWUPDATE_UBOOT_SCRIPT##";
|
|
||||||
type = "preinstall";
|
|
||||||
data = "##UBOOTIMG_NAME## ##UBOOTIMG_ENC## ##UBOOTIMG_OFFSET##;
|
|
||||||
sha256 = "$swupdate_get_sha256(##SWUPDATE_UBOOT_SCRIPT##)";
|
|
||||||
}
|
|
||||||
);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
mtd = {
|
|
||||||
platform: {
|
|
||||||
images: (
|
|
||||||
{
|
|
||||||
filename = "##BOOTIMG_NAME##";
|
|
||||||
volume = "##BOOT_DEV##";
|
|
||||||
type = "ubivol";
|
|
||||||
sha256 = "$swupdate_get_sha256(##BOOTIMG_NAME##)";
|
|
||||||
installed-directly = true;
|
|
||||||
},
|
|
||||||
{
|
|
||||||
filename = "##ROOTIMG_NAME##";
|
|
||||||
volume = "##ROOTFS_DEV##";
|
|
||||||
type = "ubivol";
|
|
||||||
sha256 = "$swupdate_get_sha256(##ROOTIMG_NAME##)";
|
|
||||||
installed-directly = true;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
files: (
|
|
||||||
{
|
|
||||||
filename = "##UBOOTIMG_NAME##";
|
|
||||||
path = "##UBOOT_IMAGE_PATH##";
|
|
||||||
sha256 = "$swupdate_get_sha256(##UBOOTIMG_NAME##)";
|
|
||||||
}
|
|
||||||
);
|
|
||||||
scripts: (
|
|
||||||
{
|
|
||||||
filename = "##SWUPDATE_UBOOT_SCRIPT##";
|
|
||||||
type = "postinstall";
|
|
||||||
data = "##UBOOTIMG_NAME## ##UBOOTIMG_ENC##";
|
|
||||||
sha256 = "$swupdate_get_sha256(##SWUPDATE_UBOOT_SCRIPT##)";
|
|
||||||
}
|
|
||||||
);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
#
|
#
|
||||||
# Copyright (C) 2022 by Digi International Inc.
|
# Copyright (C) 2022-2023 by Digi International Inc.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify it
|
# This program is free software; you can redistribute it and/or modify it
|
||||||
|
|
@ -15,6 +15,7 @@
|
||||||
|
|
||||||
UBOOT_FILE="$1"
|
UBOOT_FILE="$1"
|
||||||
UBOOT_ENC="$2"
|
UBOOT_ENC="$2"
|
||||||
|
TFA_FILE="$4"
|
||||||
|
|
||||||
echo "**** Start U-Boot update process *****"
|
echo "**** Start U-Boot update process *****"
|
||||||
|
|
||||||
|
|
@ -70,7 +71,31 @@ dump_dek ()
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
install_fwu ()
|
||||||
|
{
|
||||||
|
FLASH_DEV="$1"
|
||||||
|
FW_FILE="$2"
|
||||||
|
|
||||||
|
flash_eraseall ${FLASH_DEV}
|
||||||
|
rc=$?
|
||||||
|
if [ "$rc" -ne 0 ]; then
|
||||||
|
echo "U-Boot: erasing ${FLASH_DEV} failed"
|
||||||
|
exit $rc
|
||||||
|
fi
|
||||||
|
nandwrite -p ${FLASH_DEV} /tmp/${FW_FILE}
|
||||||
|
if [ "$rc" -ne 0 ]; then
|
||||||
|
echo "U-Boot: failed to write firmware to ${FLASH_DEV}"
|
||||||
|
exit $rc
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
COMP_CCMP1=$(cat /proc/device-tree/compatible | grep "\bdigi,ccmp1\b")
|
||||||
|
|
||||||
if [ "${UBOOT_ENC}" = "enc" ]; then
|
if [ "${UBOOT_ENC}" = "enc" ]; then
|
||||||
|
if [ "${COMP_CCMP1}" = "digi,ccmp1" ]; then
|
||||||
|
# Currently not supported for these platforms
|
||||||
|
echo "*** Encrypted U-boot currently not support for CCMP1 ***"
|
||||||
|
else
|
||||||
dump_dek
|
dump_dek
|
||||||
rc=$?
|
rc=$?
|
||||||
if [ "$rc" -ne 0 ]; then
|
if [ "$rc" -ne 0 ]; then
|
||||||
|
|
@ -84,10 +109,22 @@ if [ "${UBOOT_ENC}" = "enc" ]; then
|
||||||
exit $rc
|
exit $rc
|
||||||
fi
|
fi
|
||||||
UBOOT_FILE="${ENCRYPTED_UBOOT_DEK}"
|
UBOOT_FILE="${ENCRYPTED_UBOOT_DEK}"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# install U-Boot onto the Nand Flash
|
if [ "${COMP_CCMP1}" = "digi,ccmp1" ]; then
|
||||||
kobs-ng init -x -v /mnt/update/${UBOOT_FILE}
|
# install TF-A onto fsbl1 partition
|
||||||
|
mtd_num="$(sed -ne "/fsbl1/s,^mtd\([0-9]\+\).*,\1,g;T;p" /proc/mtd)"
|
||||||
|
TFA_DEV="/dev/mtd${mtd_num}"
|
||||||
|
install_fwu ${TFA_DEV} ${TFA_FILE}
|
||||||
|
# install U-Boot onto FIP-a partition
|
||||||
|
mtd_num="$(sed -ne "/fip-a/s,^mtd\([0-9]\+\).*,\1,g;T;p" /proc/mtd)"
|
||||||
|
FIP_DEV="/dev/mtd${mtd_num}"
|
||||||
|
install_fwu ${FIP_DEV} ${UBOOT_FILE}
|
||||||
|
else
|
||||||
|
# install U-Boot onto the Nand Flash
|
||||||
|
kobs-ng init -x -v /tmp/${UBOOT_FILE}
|
||||||
|
fi
|
||||||
rc=$?
|
rc=$?
|
||||||
if [ "$rc" -ne 0 ]; then
|
if [ "$rc" -ne 0 ]; then
|
||||||
echo "u-Boot: Updating U-Boot partition failed"
|
echo "u-Boot: Updating U-Boot partition failed"
|
||||||
|
|
|
||||||
|
|
@ -9,13 +9,14 @@ SRC_URI = " \
|
||||||
file://sw-description-images_template \
|
file://sw-description-images_template \
|
||||||
file://sw-description-files_template \
|
file://sw-description-files_template \
|
||||||
file://sw-description-rdiff_template \
|
file://sw-description-rdiff_template \
|
||||||
file://sw-description-uboot \
|
|
||||||
file://swupdate_uboot_nand.sh \
|
file://swupdate_uboot_nand.sh \
|
||||||
file://swupdate_uboot_mmc.sh \
|
file://swupdate_uboot_mmc.sh \
|
||||||
file://image_template_mmc \
|
file://image_template_mmc \
|
||||||
file://image_template_nand \
|
file://image_template_nand \
|
||||||
file://image_template_rdiff_mmc \
|
file://image_template_rdiff_mmc \
|
||||||
file://image_template_rdiff_nand \
|
file://image_template_rdiff_nand \
|
||||||
|
file://file_template_uboot \
|
||||||
|
file://script_template_uboot\
|
||||||
file://update_images.sh \
|
file://update_images.sh \
|
||||||
file://update_files.sh \
|
file://update_files.sh \
|
||||||
file://update_rdiff.sh \
|
file://update_rdiff.sh \
|
||||||
|
|
@ -31,8 +32,7 @@ SWUPDATE_IMAGES = " \
|
||||||
${@oe.utils.ifelse(d.getVar('SWUPDATE_IS_IMAGES_UPDATE') == 'true', '${IMG_NAME}', '')} \
|
${@oe.utils.ifelse(d.getVar('SWUPDATE_IS_IMAGES_UPDATE') == 'true', '${IMG_NAME}', '')} \
|
||||||
${@oe.utils.ifelse(d.getVar('SWUPDATE_IS_FILES_UPDATE') == 'true', '${SWUPDATE_FILES_TARGZ_FILE_NAME}', '')} \
|
${@oe.utils.ifelse(d.getVar('SWUPDATE_IS_FILES_UPDATE') == 'true', '${SWUPDATE_FILES_TARGZ_FILE_NAME}', '')} \
|
||||||
${@oe.utils.ifelse(d.getVar('SWUPDATE_IS_RDIFF_UPDATE') == 'true', '${IMG_NAME} ${SWUPDATE_RDIFF_ROOTFS_DELTA_FILE_NAME}', '')} \
|
${@oe.utils.ifelse(d.getVar('SWUPDATE_IS_RDIFF_UPDATE') == 'true', '${IMG_NAME} ${SWUPDATE_RDIFF_ROOTFS_DELTA_FILE_NAME}', '')} \
|
||||||
${@oe.utils.ifelse(d.getVar('SWUPDATE_UBOOTIMG') == 'true', '${UBOOT_PREFIX}', '')} \
|
${@oe.utils.ifelse(d.getVar('SWUPDATE_UBOOTIMG') == 'true', '${SWUPDATE_UBOOT_NAME} ${SWUPDATE_UBOOT_NAME_TFA} ${SWUPDATE_UBOOT_SCRIPT_NAME}', '')} \
|
||||||
${@oe.utils.ifelse(d.getVar('SWUPDATE_UBOOTIMG') == 'true', '${SWUPDATE_UBOOT_SCRIPT}', '')} \
|
|
||||||
${SWUPDATE_SCRIPT_NAME} \
|
${SWUPDATE_SCRIPT_NAME} \
|
||||||
"
|
"
|
||||||
|
|
||||||
|
|
@ -43,8 +43,11 @@ python () {
|
||||||
img_fstypes = img_fstypes + " " + d.getVar('ROOTFS_EXT')
|
img_fstypes = img_fstypes + " " + d.getVar('ROOTFS_EXT')
|
||||||
d.setVarFlag("SWUPDATE_IMAGES_FSTYPES", d.getVar('IMG_NAME'), img_fstypes)
|
d.setVarFlag("SWUPDATE_IMAGES_FSTYPES", d.getVar('IMG_NAME'), img_fstypes)
|
||||||
if (d.getVar('SWUPDATE_UBOOTIMG') == "true"):
|
if (d.getVar('SWUPDATE_UBOOTIMG') == "true"):
|
||||||
uboot_fstypes = d.getVar('UBOOT_EXT')
|
uboot_fstypes = d.getVar('SWUPDATE_UBOOT_EXT')
|
||||||
d.setVarFlag("SWUPDATE_IMAGES_FSTYPES", d.getVar('UBOOT_PREFIX'), uboot_fstypes)
|
d.setVarFlag("SWUPDATE_IMAGES_FSTYPES", d.getVar('SWUPDATE_UBOOT_PREFIX'), uboot_fstypes)
|
||||||
|
if (d.getVar('DEY_SOC_VENDOR') == "STM"):
|
||||||
|
uboot_tfa_fstypes = d.getVar('SWUPDATE_UBOOT_EXT_TFA')
|
||||||
|
d.setVarFlag("SWUPDATE_IMAGES_FSTYPES", d.getVar('SWUPDATE_UBOOT_PREFIX_TFA'), uboot_tfa_fstypes)
|
||||||
}
|
}
|
||||||
|
|
||||||
# Execute extra tasks before creating SWU update package.
|
# Execute extra tasks before creating SWU update package.
|
||||||
|
|
@ -65,6 +68,15 @@ python do_swuimage:prepend() {
|
||||||
updatescript = os.path.join(workdir, updatescript)
|
updatescript = os.path.join(workdir, updatescript)
|
||||||
if os.path.isfile(updatescript):
|
if os.path.isfile(updatescript):
|
||||||
shutil.copyfile(updatescript, os.path.join(imgdeploydir, os.path.basename(updatescript)))
|
shutil.copyfile(updatescript, os.path.join(imgdeploydir, os.path.basename(updatescript)))
|
||||||
|
|
||||||
|
# Copy U-Boot script file.
|
||||||
|
if d.getVar('SWUPDATE_UBOOTIMG') == "true":
|
||||||
|
uboot_updatescript = d.getVar('SWUPDATE_UBOOT_SCRIPT_NAME', True)
|
||||||
|
if "/" not in uboot_updatescript:
|
||||||
|
workdir = d.getVar('WORKDIR', True)
|
||||||
|
uboot_updatescript = os.path.join(workdir, uboot_updatescript)
|
||||||
|
if os.path.isfile(uboot_updatescript):
|
||||||
|
shutil.copyfile(uboot_updatescript, os.path.join(imgdeploydir, os.path.basename(uboot_updatescript)))
|
||||||
}
|
}
|
||||||
|
|
||||||
# Upgrade available.
|
# Upgrade available.
|
||||||
|
|
@ -73,18 +85,7 @@ UPGRADE_AVAILABLE:ccimx6 = "1"
|
||||||
|
|
||||||
# Create and fill 'sw-description' file.
|
# Create and fill 'sw-description' file.
|
||||||
fill_description() {
|
fill_description() {
|
||||||
if [ "${SWUPDATE_UBOOTIMG}" = "true" ]; then
|
if [ "${SWUPDATE_IS_FILES_UPDATE}" = "true" ]; then
|
||||||
cp ${WORKDIR}/sw-description-uboot ${WORKDIR}/sw-description
|
|
||||||
cp ${WORKDIR}/${SWUPDATE_UBOOT_SCRIPT} ${DEPLOY_DIR_IMAGE}/${SWUPDATE_UBOOT_SCRIPT}
|
|
||||||
if [ "${TRUSTFENCE_DEK_PATH}" != "0" ] && [ "${TRUSTFENCE_DEK_PATH}" != "default" ]; then
|
|
||||||
sed -i -e "s,##UBOOTIMG_ENC##,enc,g" "${WORKDIR}/sw-description"
|
|
||||||
else
|
|
||||||
sed -i -e "s,##UBOOTIMG_ENC##,normal,g" "${WORKDIR}/sw-description"
|
|
||||||
fi
|
|
||||||
sed -i -e "s,##UBOOTIMG_NAME##,${UBOOT_PREFIX}-${MACHINE}${UBOOT_EXT},g" "${WORKDIR}/sw-description"
|
|
||||||
sed -i -e "s,##SWUPDATE_UBOOT_SCRIPT##,${SWUPDATE_UBOOT_SCRIPT},g" "${WORKDIR}/sw-description"
|
|
||||||
sed -i -e "s,##UBOOTIMG_OFFSET##,${UBOOTIMG_OFFSET},g" "${WORKDIR}/sw-description"
|
|
||||||
elif [ "${SWUPDATE_IS_FILES_UPDATE}" = "true" ]; then
|
|
||||||
cp ${WORKDIR}/sw-description-files_template ${WORKDIR}/sw-description
|
cp ${WORKDIR}/sw-description-files_template ${WORKDIR}/sw-description
|
||||||
elif [ "${SWUPDATE_IS_RDIFF_UPDATE}" = "true" ]; then
|
elif [ "${SWUPDATE_IS_RDIFF_UPDATE}" = "true" ]; then
|
||||||
cp ${WORKDIR}/sw-description-rdiff_template ${WORKDIR}/sw-description
|
cp ${WORKDIR}/sw-description-rdiff_template ${WORKDIR}/sw-description
|
||||||
|
|
@ -92,7 +93,45 @@ fill_description() {
|
||||||
cp ${WORKDIR}/sw-description-images_template ${WORKDIR}/sw-description
|
cp ${WORKDIR}/sw-description-images_template ${WORKDIR}/sw-description
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Add U-Boot sections if required.
|
||||||
|
if [ "${SWUPDATE_UBOOTIMG}" = "true" ]; then
|
||||||
|
# Add U-Boot files section.
|
||||||
|
UBOOT_FILE_TEMPLATE="file_template_uboot"
|
||||||
|
FILES_TEMPLATE="%s\n"
|
||||||
|
if [ "${DEY_SOC_VENDOR}" = "STM" ]; then
|
||||||
|
FILES_TEMPLATE="%s,\n%s\n"
|
||||||
|
fi
|
||||||
|
if [ "${SWUPDATE_IS_FILES_UPDATE}" != "true" ]; then
|
||||||
|
FILES_TEMPLATE=" files: (\n${FILES_TEMPLATE} );\n"
|
||||||
|
else
|
||||||
|
FILES_TEMPLATE=" ,\n${FILES_TEMPLATE}"
|
||||||
|
fi
|
||||||
|
if [ "${DEY_SOC_VENDOR}" = "STM" ]; then
|
||||||
|
printf "${FILES_TEMPLATE}" \
|
||||||
|
"$(sed -e "s,##FILE_NAME##,${SWUPDATE_UBOOT_NAME},g" -e "s,##FILE_PATH##,/tmp/${SWUPDATE_UBOOT_NAME},g" "${UBOOT_FILE_TEMPLATE}")" \
|
||||||
|
"$(sed -e "s,##FILE_NAME##,${SWUPDATE_UBOOT_NAME_TFA},g" -e "s,##FILE_PATH##,/tmp/${SWUPDATE_UBOOT_NAME_TFA},g" "${UBOOT_FILE_TEMPLATE}")" \
|
||||||
|
> template_out.txt
|
||||||
|
else
|
||||||
|
printf "${FILES_TEMPLATE}" \
|
||||||
|
"$(sed -e "s,##FILE_NAME##,${SWUPDATE_UBOOT_NAME},g" -e "s,##FILE_PATH##,/tmp/${SWUPDATE_UBOOT_NAME},g" "${UBOOT_FILE_TEMPLATE}")" \
|
||||||
|
> template_out.txt
|
||||||
|
fi
|
||||||
|
sed -i -e "/##FILES_UBOOT##/r template_out.txt" -e "/##FILES_UBOOT##/d" "${WORKDIR}/sw-description"
|
||||||
|
|
||||||
|
# Add U-Boot script section.
|
||||||
|
UBOOT_SCRIPT_TEMPLATE="script_template_uboot"
|
||||||
|
printf " ,\n%s\n" \
|
||||||
|
"$(cat "${UBOOT_SCRIPT_TEMPLATE}")" \
|
||||||
|
> template_out.txt
|
||||||
|
sed -i -e "/##SCRIPT_UBOOT##/r template_out.txt" -e "/##SCRIPT_UBOOT##/d" "${WORKDIR}/sw-description"
|
||||||
|
else
|
||||||
|
# Remove U-Boot entries if U-Boot is not being updated.
|
||||||
|
sed -i -e "s,##FILES_UBOOT##,,g" "${WORKDIR}/sw-description"
|
||||||
|
sed -i -e "s,##SCRIPT_UBOOT##,,g" "${WORKDIR}/sw-description"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "${SWUPDATE_IS_FILES_UPDATE}" = "true" ]; then
|
if [ "${SWUPDATE_IS_FILES_UPDATE}" = "true" ]; then
|
||||||
|
rm -f template_out.txt
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
@ -111,23 +150,23 @@ fill_description() {
|
||||||
printf "%s,\n%s\n" \
|
printf "%s,\n%s\n" \
|
||||||
"$(sed -e "s,##IMG_NAME##,${BOOT_IMAGE_NAME},g" -e "s,##DEV##,${BOOT_DEV_NAME_A},g" -e "/compressed/d" "${BOOT_IMAGE_TEMPLATE}")" \
|
"$(sed -e "s,##IMG_NAME##,${BOOT_IMAGE_NAME},g" -e "s,##DEV##,${BOOT_DEV_NAME_A},g" -e "/compressed/d" "${BOOT_IMAGE_TEMPLATE}")" \
|
||||||
"$(sed -e "s,##IMG_NAME##,${ROOTFS_IMAGE_NAME},g" -e "s,##DEV##,${ROOTFS_DEV_NAME_A},g" "${ROOTFS_IMAGE_TEMPLATE}")" \
|
"$(sed -e "s,##IMG_NAME##,${ROOTFS_IMAGE_NAME},g" -e "s,##DEV##,${ROOTFS_DEV_NAME_A},g" "${ROOTFS_IMAGE_TEMPLATE}")" \
|
||||||
> images_temp.txt
|
> template_out.txt
|
||||||
sed -i -e "/##IMAGES_PRIMARY##/r images_temp.txt" -e "/##IMAGES_PRIMARY##/d" "${WORKDIR}/sw-description"
|
sed -i -e "/##IMAGES_PRIMARY##/r template_out.txt" -e "/##IMAGES_PRIMARY##/d" "${WORKDIR}/sw-description"
|
||||||
|
|
||||||
# Add secondary bank images section for dual boot systems.
|
# Add secondary bank images section for dual boot systems.
|
||||||
printf "%s,\n%s\n" \
|
printf "%s,\n%s\n" \
|
||||||
"$(sed -e "s,##IMG_NAME##,${BOOT_IMAGE_NAME},g" -e "s,##DEV##,${BOOT_DEV_NAME_B},g" -e "/compressed/d" "${BOOT_IMAGE_TEMPLATE}")" \
|
"$(sed -e "s,##IMG_NAME##,${BOOT_IMAGE_NAME},g" -e "s,##DEV##,${BOOT_DEV_NAME_B},g" -e "/compressed/d" "${BOOT_IMAGE_TEMPLATE}")" \
|
||||||
"$(sed -e "s,##IMG_NAME##,${ROOTFS_IMAGE_NAME},g" -e "s,##DEV##,${ROOTFS_DEV_NAME_B},g" "${ROOTFS_IMAGE_TEMPLATE}")" \
|
"$(sed -e "s,##IMG_NAME##,${ROOTFS_IMAGE_NAME},g" -e "s,##DEV##,${ROOTFS_DEV_NAME_B},g" "${ROOTFS_IMAGE_TEMPLATE}")" \
|
||||||
> images_temp.txt
|
> template_out.txt
|
||||||
sed -i -e "/##IMAGES_SECONDARY##/r images_temp.txt" -e "/##IMAGES_SECONDARY##/d" "${WORKDIR}/sw-description"
|
sed -i -e "/##IMAGES_SECONDARY##/r template_out.txt" -e "/##IMAGES_SECONDARY##/d" "${WORKDIR}/sw-description"
|
||||||
|
|
||||||
# Add images section for single boot systems.
|
# Add images section for single boot systems.
|
||||||
if [ "${SWUPDATE_IS_RDIFF_UPDATE}" != "true" ]; then
|
if [ "${SWUPDATE_IS_RDIFF_UPDATE}" != "true" ]; then
|
||||||
printf "%s,\n%s\n" \
|
printf "%s,\n%s\n" \
|
||||||
"$(sed -e "s,##IMG_NAME##,${BOOT_IMAGE_NAME},g" -e "s,##DEV##,${BOOT_DEV_NAME},g" -e "/compressed/d" "${BOOT_IMAGE_TEMPLATE}")" \
|
"$(sed -e "s,##IMG_NAME##,${BOOT_IMAGE_NAME},g" -e "s,##DEV##,${BOOT_DEV_NAME},g" -e "/compressed/d" "${BOOT_IMAGE_TEMPLATE}")" \
|
||||||
"$(sed -e "s,##IMG_NAME##,${ROOTFS_IMAGE_NAME},g" -e "s,##DEV##,${ROOTFS_DEV_NAME_FINAL},g" "${ROOTFS_IMAGE_TEMPLATE}")" \
|
"$(sed -e "s,##IMG_NAME##,${ROOTFS_IMAGE_NAME},g" -e "s,##DEV##,${ROOTFS_DEV_NAME_FINAL},g" "${ROOTFS_IMAGE_TEMPLATE}")" \
|
||||||
> images_temp.txt
|
> template_out.txt
|
||||||
sed -i -e "/##IMAGES_SINGLE##/r images_temp.txt" -e "/##IMAGES_SINGLE##/d" "${WORKDIR}/sw-description"
|
sed -i -e "/##IMAGES_SINGLE##/r template_out.txt" -e "/##IMAGES_SINGLE##/d" "${WORKDIR}/sw-description"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Remove 'compressed' flag for read-only file systems as they use 'squashfs' images.
|
# Remove 'compressed' flag for read-only file systems as they use 'squashfs' images.
|
||||||
|
|
@ -136,7 +175,7 @@ fill_description() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Clean dir.
|
# Clean dir.
|
||||||
rm -f images_temp.txt
|
rm -f template_out.txt
|
||||||
}
|
}
|
||||||
fill_description[dirs] = "${DEPLOY_DIR_IMAGE} ${WORKDIR}"
|
fill_description[dirs] = "${DEPLOY_DIR_IMAGE} ${WORKDIR}"
|
||||||
do_unpack[postfuncs] += "fill_description"
|
do_unpack[postfuncs] += "fill_description"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue