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.anderw...@phytec.de>
Tested-by: Teresa Remmet <t.rem...@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