[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