[PATCH v2 4/5] include: env: Add phytec RAUC boot logic
Teresa Remmet
T.Remmet at phytec.de
Tue Mar 12 15:15:21 CET 2024
Am Dienstag, dem 12.03.2024 um 09:59 +0100 schrieb Leonard Anderweit:
> Add logic for booting systems with the RAUC update mechanism. This
> can
> be reused by other phytec boards.
>
> Signed-off-by: Leonard Anderweit <l.anderweit at phytec.de>
Tested-by: Teresa Remmet <t.remmet at phytec.de>
> ---
> include/env/phytec/rauc.env | 52
> +++++++++++++++++++++++++++++++++++++
> 1 file changed, 52 insertions(+)
> create mode 100644 include/env/phytec/rauc.env
>
> diff --git a/include/env/phytec/rauc.env
> b/include/env/phytec/rauc.env
> new file mode 100644
> index 000000000000..89e17ff70ec6
> --- /dev/null
> +++ b/include/env/phytec/rauc.env
> @@ -0,0 +1,52 @@
> +/* SPDX-License-Identifier: GPL-2.0+ */
> +
> +/* Logic to select a boot partition based on environment variables
> and switch
> + * to the other if the boot fails. */
> +
> +doraucboot=0
> +
> +raucbootpart0=1
> +raucrootpart0=5
> +raucbootpart1=2
> +raucrootpart1=6
> +
> +raucinit=
> + echo Booting RAUC A/B system;
> + test -n "${BOOT_ORDER}" || env set BOOT_ORDER "system0
> system1";
> + test -n "${BOOT_system0_LEFT}" || env set BOOT_system0_LEFT
> 3;
> + test -n "${BOOT_system1_LEFT}" || env set BOOT_system1_LEFT
> 3;
> + env set raucstatus;
> + for BOOT_SLOT in "${BOOT_ORDER}"; do
> + if test "x${raucstatus}" != "x"; then
> + echo Skipping remaing slots!;
> + elif test "x${BOOT_SLOT}" = "xsystem0"; then
> + if test ${BOOT_system0_LEFT} -gt 0; then
> + echo Found valid slot A,
> ${BOOT_system0_LEFT} attempts remaining;
> + setexpr BOOT_system0_LEFT
> ${BOOT_system0_LEFT} - 1;
> + env set mmcpart ${raucbootpart0};
> + env set mmcroot ${raucrootpart0};
> + env set raucargs rauc.slot=system0;
> + env set raucstatus success;
> + fi;
> + elif test "x${BOOT_SLOT}" = "xsystem1"; then
> + if test ${BOOT_system1_LEFT} -gt 0; then
> + echo Found valid slot B,
> ${BOOT_system1_LEFT} attempts remaining;
> + setexpr BOOT_system1_LEFT
> ${BOOT_system1_LEFT} - 1;
> + env set mmcpart ${raucbootpart1};
> + env set mmcroot ${raucrootpart1};
> + env set raucargs rauc.slot=system1;
> + env set raucstatus success;
> + fi;
> + fi;
> + done;
> + if test -n "${raucstatus}"; then
> + env delete raucstatus;
> + env save;
> + else
> + echo WARN: No valid slot found;
> + env set BOOT_system0_LEFT 3;
> + env set BOOT_system1_LEFT 3;
> + env delete raucstatus;
> + env save;
> + reset;
> + fi;
--
PHYTEC Messtechnik GmbH | Barcelona-Allee 1 | 55129 Mainz, Germany
Geschäftsführer: Dipl.-Ing. Michael Mitezki, Dipl.-Ing. Bodo Huber,
Dipl.-Ing. (FH) Markus Lickes | Handelsregister Mainz HRB 4656 |
Finanzamt Mainz | St.Nr. 266500608, DE 149059855
More information about the U-Boot
mailing list