public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [PATCH 0/5] Add RAUC boot logic for phycore_imx8mp
@ 2024-03-11 13:03 Leonard Anderweit
  2024-03-11 13:03 ` [PATCH 1/5] phycore_imx8mp: Move environment from include/config to board Leonard Anderweit
                   ` (4 more replies)
  0 siblings, 5 replies; 9+ messages in thread
From: Leonard Anderweit @ 2024-03-11 13:03 UTC (permalink / raw)
  To: trini, t.remmet, festevam; +Cc: u-boot, upstream

This series adds RAUC boot logic for the phycore_imx8mp.
The first patch converts the environment from a CFG_EXTRA_ENV_SETTINGS #define
to a text environment for better readability and maintainability.
The second patch moves the default bootcmd from the defconfig to the board
environment.
The third patch enables the redundant environment on phycore_imx8mp.
Patch 4 adds RAUC boot logic common to all phytec boards.
Patch 5 adds the RAUC boot logic to phycore_imx8mp.

Leonard Anderweit (5):
  phycore_imx8mp: Move environment from include/config to board
  phycore_imx8mp: Move default bootcmd to board env
  configs: phycore-imx8mp_defconfig: Use redundant environment
  include: env: Add phytec RAUC boot logic
  board: phytec: phycore_imx8mp: Add RAUC boot logic to environment

 .../phytec/phycore_imx8mp/phycore_imx8mp.env  | 62 +++++++++++++++++++
 configs/phycore-imx8mp_defconfig              |  4 +-
 include/configs/phycore_imx8mp.h              | 43 -------------
 include/env/phytec/rauc.env                   | 52 ++++++++++++++++
 4 files changed, 116 insertions(+), 45 deletions(-)
 create mode 100644 board/phytec/phycore_imx8mp/phycore_imx8mp.env
 create mode 100644 include/env/phytec/rauc.env

-- 
2.25.1


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 1/5] phycore_imx8mp: Move environment from include/config to board
  2024-03-11 13:03 [PATCH 0/5] Add RAUC boot logic for phycore_imx8mp Leonard Anderweit
@ 2024-03-11 13:03 ` Leonard Anderweit
  2024-03-11 13:03 ` [PATCH 2/5] phycore_imx8mp: Move default bootcmd to board env Leonard Anderweit
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 9+ messages in thread
From: Leonard Anderweit @ 2024-03-11 13:03 UTC (permalink / raw)
  To: trini, t.remmet, festevam; +Cc: u-boot, upstream

Move the environment into the board directory and convert it from a C
header to a text file. Sort the variables alphabetically.
No functional changes.

Signed-off-by: Leonard Anderweit <l.anderweit@phytec.de>
---
 .../phytec/phycore_imx8mp/phycore_imx8mp.env  | 45 +++++++++++++++++++
 include/configs/phycore_imx8mp.h              | 43 ------------------
 2 files changed, 45 insertions(+), 43 deletions(-)
 create mode 100644 board/phytec/phycore_imx8mp/phycore_imx8mp.env

diff --git a/board/phytec/phycore_imx8mp/phycore_imx8mp.env b/board/phytec/phycore_imx8mp/phycore_imx8mp.env
new file mode 100644
index 000000000000..6d15b7f3dc9f
--- /dev/null
+++ b/board/phytec/phycore_imx8mp/phycore_imx8mp.env
@@ -0,0 +1,45 @@
+console=ttymxc0,115200
+dofastboot=0
+emmc_dev=2
+fastboot_raw_partition_all=0 4194304
+fastboot_raw_partition_bootloader=64 8128
+fdt_addr=0x48000000
+fdt_file=CONFIG_DEFAULT_FDT_FILE
+image=Image
+ip_dyn=yes
+loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}
+loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}
+mmcargs=
+	setenv bootargs console=${console}
+	root=/dev/mmcblk${mmcdev}p${mmcroot} rootwait rw
+mmcautodetect=yes
+mmcboot=
+	echo Booting from mmc ...;
+	run mmcargs;
+	if run loadfdt; then
+		booti ${loadaddr} - ${fdt_addr};
+	else
+		echo WARN: Cannot load the DT;
+	fi;
+mmcdev=CONFIG_SYS_MMC_ENV_DEV
+mmcpart=1
+mmcroot=2
+netargs=
+	setenv bootargs console=${console} root=/dev/nfs ip=dhcp
+	nfsroot=${serverip}:${nfsroot},v3,tcp
+netboot=
+	echo Booting from net ...;
+	run netargs;
+	if test ${ip_dyn} = yes; then
+		setenv get_cmd dhcp;
+	else
+		setenv get_cmd tftp;
+	fi;
+	${get_cmd} ${loadaddr} ${image};
+	if ${get_cmd} ${fdt_addr} ${fdt_file}; then
+		booti ${loadaddr} - ${fdt_addr};
+	else
+		echo WARN: Cannot load the DT;
+	fi;
+nfsroot=/nfs
+sd_dev=1
diff --git a/include/configs/phycore_imx8mp.h b/include/configs/phycore_imx8mp.h
index 11a17be7fe1d..206c4d50d276 100644
--- a/include/configs/phycore_imx8mp.h
+++ b/include/configs/phycore_imx8mp.h
@@ -13,49 +13,6 @@
 #define CFG_SYS_UBOOT_BASE \
 		(QSPI0_AMBA_BASE + CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR * 512)
 
-#define CFG_EXTRA_ENV_SETTINGS \
-	"image=Image\0" \
-	"console=ttymxc0,115200\0" \
-	"fdt_addr=0x48000000\0" \
-	"fdt_file=" CONFIG_DEFAULT_FDT_FILE "\0" \
-	"ip_dyn=yes\0" \
-	"dofastboot=0\0" \
-	"fastboot_raw_partition_bootloader=64 8128\0" \
-	"fastboot_raw_partition_all=0 4194304\0" \
-	"emmc_dev=2\0" \
-	"sd_dev=1\0" \
-	"mmcdev=" __stringify(CONFIG_SYS_MMC_ENV_DEV) "\0" \
-	"mmcpart=1\0" \
-	"mmcroot=2\0" \
-	"mmcautodetect=yes\0" \
-	"mmcargs=setenv bootargs console=${console} " \
-		"root=/dev/mmcblk${mmcdev}p${mmcroot} rootwait rw\0" \
-	"loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
-	"loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
-	"mmcboot=echo Booting from mmc ...; " \
-		"run mmcargs; " \
-		"if run loadfdt; then " \
-			"booti ${loadaddr} - ${fdt_addr}; " \
-		"else " \
-			"echo WARN: Cannot load the DT; " \
-		"fi;\0 " \
-	"nfsroot=/nfs\0" \
-	"netargs=setenv bootargs console=${console} root=/dev/nfs ip=dhcp " \
-		"nfsroot=${serverip}:${nfsroot},v3,tcp\0" \
-	"netboot=echo Booting from net ...; " \
-		"run netargs; " \
-		"if test ${ip_dyn} = yes; then " \
-			"setenv get_cmd dhcp; " \
-		"else " \
-			"setenv get_cmd tftp; " \
-		"fi; " \
-		"${get_cmd} ${loadaddr} ${image}; " \
-		"if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
-			"booti ${loadaddr} - ${fdt_addr}; " \
-		"else " \
-			"echo WARN: Cannot load the DT; " \
-		"fi;\0" \
-
 /* Link Definitions */
 
 #define CFG_SYS_INIT_RAM_ADDR	0x40000000
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 2/5] phycore_imx8mp: Move default bootcmd to board env
  2024-03-11 13:03 [PATCH 0/5] Add RAUC boot logic for phycore_imx8mp Leonard Anderweit
  2024-03-11 13:03 ` [PATCH 1/5] phycore_imx8mp: Move environment from include/config to board Leonard Anderweit
@ 2024-03-11 13:03 ` Leonard Anderweit
  2024-03-11 13:03 ` [PATCH 3/5] configs: phycore-imx8mp_defconfig: Use redundant environment Leonard Anderweit
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 9+ messages in thread
From: Leonard Anderweit @ 2024-03-11 13:03 UTC (permalink / raw)
  To: trini, t.remmet, festevam; +Cc: u-boot, upstream

Move the default bootcmd from the defconfig to the board environment.
No change in functionality.

Signed-off-by: Leonard Anderweit <l.anderweit@phytec.de>
---
 board/phytec/phycore_imx8mp/phycore_imx8mp.env | 12 ++++++++++++
 configs/phycore-imx8mp_defconfig               |  2 --
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/board/phytec/phycore_imx8mp/phycore_imx8mp.env b/board/phytec/phycore_imx8mp/phycore_imx8mp.env
index 6d15b7f3dc9f..73202c3b129a 100644
--- a/board/phytec/phycore_imx8mp/phycore_imx8mp.env
+++ b/board/phytec/phycore_imx8mp/phycore_imx8mp.env
@@ -1,3 +1,15 @@
+bootcmd=
+	if test ${dofastboot} = 1; then
+		fastboot 0;
+	fi;
+	mmc dev ${mmcdev};
+	if mmc rescan; then
+		if run loadimage; then
+			run mmcboot;
+		else
+			run netboot;
+		fi;
+	fi;
 console=ttymxc0,115200
 dofastboot=0
 emmc_dev=2
diff --git a/configs/phycore-imx8mp_defconfig b/configs/phycore-imx8mp_defconfig
index b3a7bbd79bb6..fd492eba3c10 100644
--- a/configs/phycore-imx8mp_defconfig
+++ b/configs/phycore-imx8mp_defconfig
@@ -25,8 +25,6 @@ CONFIG_FIT=y
 CONFIG_FIT_EXTERNAL_OFFSET=0x3000
 CONFIG_SPL_LOAD_FIT=y
 CONFIG_OF_SYSTEM_SETUP=y
-CONFIG_USE_BOOTCOMMAND=y
-CONFIG_BOOTCOMMAND="if test ${dofastboot} = 1; then fastboot 0; fi; mmc dev ${mmcdev}; if mmc rescan; then if run loadimage; then run mmcboot; else run netboot; fi; fi;"
 CONFIG_DEFAULT_FDT_FILE="oftree"
 CONFIG_SYS_CBSIZE=2048
 CONFIG_SYS_PBSIZE=2074
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 3/5] configs: phycore-imx8mp_defconfig: Use redundant environment
  2024-03-11 13:03 [PATCH 0/5] Add RAUC boot logic for phycore_imx8mp Leonard Anderweit
  2024-03-11 13:03 ` [PATCH 1/5] phycore_imx8mp: Move environment from include/config to board Leonard Anderweit
  2024-03-11 13:03 ` [PATCH 2/5] phycore_imx8mp: Move default bootcmd to board env Leonard Anderweit
@ 2024-03-11 13:03 ` Leonard Anderweit
  2024-03-11 14:05   ` Fabio Estevam
  2024-03-11 13:03 ` [PATCH 4/5] include: env: Add phytec RAUC boot logic Leonard Anderweit
  2024-03-11 13:04 ` [PATCH 5/5] board: phytec: phycore_imx8mp: Add RAUC boot logic to environment Leonard Anderweit
  4 siblings, 1 reply; 9+ messages in thread
From: Leonard Anderweit @ 2024-03-11 13:03 UTC (permalink / raw)
  To: trini, t.remmet, festevam; +Cc: u-boot, upstream

Add support for the redundant environment.

Signed-off-by: Leonard Anderweit <l.anderweit@phytec.de>
---
 configs/phycore-imx8mp_defconfig | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/configs/phycore-imx8mp_defconfig b/configs/phycore-imx8mp_defconfig
index fd492eba3c10..6c67f14b5559 100644
--- a/configs/phycore-imx8mp_defconfig
+++ b/configs/phycore-imx8mp_defconfig
@@ -19,6 +19,7 @@ CONFIG_SPL_SERIAL=y
 CONFIG_SPL_DRIVERS_MISC=y
 CONFIG_SPL_STACK=0x960000
 CONFIG_SPL=y
+CONFIG_ENV_OFFSET_REDUND=0x3e0000
 CONFIG_SPL_IMX_ROMAPI_LOADADDR=0x48000000
 CONFIG_SYS_LOAD_ADDR=0x40480000
 CONFIG_FIT=y
@@ -77,6 +78,7 @@ CONFIG_OF_CONTROL=y
 CONFIG_SPL_OF_CONTROL=y
 CONFIG_ENV_OVERWRITE=y
 CONFIG_ENV_IS_IN_MMC=y
+CONFIG_SYS_REDUNDAND_ENVIRONMENT=y
 CONFIG_SYS_RELOC_GD_ENV_ADDR=y
 CONFIG_SYS_MMC_ENV_DEV=2
 CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 4/5] include: env: Add phytec RAUC boot logic
  2024-03-11 13:03 [PATCH 0/5] Add RAUC boot logic for phycore_imx8mp Leonard Anderweit
                   ` (2 preceding siblings ...)
  2024-03-11 13:03 ` [PATCH 3/5] configs: phycore-imx8mp_defconfig: Use redundant environment Leonard Anderweit
@ 2024-03-11 13:03 ` Leonard Anderweit
  2024-03-11 13:04 ` [PATCH 5/5] board: phytec: phycore_imx8mp: Add RAUC boot logic to environment Leonard Anderweit
  4 siblings, 0 replies; 9+ messages in thread
From: Leonard Anderweit @ 2024-03-11 13:03 UTC (permalink / raw)
  To: trini, t.remmet, festevam; +Cc: u-boot, upstream

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@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;
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 5/5] board: phytec: phycore_imx8mp: Add RAUC boot logic to environment
  2024-03-11 13:03 [PATCH 0/5] Add RAUC boot logic for phycore_imx8mp Leonard Anderweit
                   ` (3 preceding siblings ...)
  2024-03-11 13:03 ` [PATCH 4/5] include: env: Add phytec RAUC boot logic Leonard Anderweit
@ 2024-03-11 13:04 ` Leonard Anderweit
  4 siblings, 0 replies; 9+ messages in thread
From: Leonard Anderweit @ 2024-03-11 13:04 UTC (permalink / raw)
  To: trini, t.remmet, festevam; +Cc: u-boot, upstream

Add RAUC boot logic to the environment. This is the first board to
utilize this environment.

Signed-off-by: Leonard Anderweit <l.anderweit@phytec.de>
---
 board/phytec/phycore_imx8mp/phycore_imx8mp.env | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/board/phytec/phycore_imx8mp/phycore_imx8mp.env b/board/phytec/phycore_imx8mp/phycore_imx8mp.env
index 73202c3b129a..d58d25476f6b 100644
--- a/board/phytec/phycore_imx8mp/phycore_imx8mp.env
+++ b/board/phytec/phycore_imx8mp/phycore_imx8mp.env
@@ -1,9 +1,14 @@
+#include <env/phytec/rauc.env>
+
 bootcmd=
 	if test ${dofastboot} = 1; then
 		fastboot 0;
 	fi;
 	mmc dev ${mmcdev};
 	if mmc rescan; then
+		if test ${doraucboot} = 1; then
+			run raucinit;
+		fi;
 		if run loadimage; then
 			run mmcboot;
 		else
@@ -23,7 +28,7 @@ loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}
 loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}
 mmcargs=
 	setenv bootargs console=${console}
-	root=/dev/mmcblk${mmcdev}p${mmcroot} rootwait rw
+	root=/dev/mmcblk${mmcdev}p${mmcroot} ${raucargs} rootwait rw
 mmcautodetect=yes
 mmcboot=
 	echo Booting from mmc ...;
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH 3/5] configs: phycore-imx8mp_defconfig: Use redundant environment
  2024-03-11 13:03 ` [PATCH 3/5] configs: phycore-imx8mp_defconfig: Use redundant environment Leonard Anderweit
@ 2024-03-11 14:05   ` Fabio Estevam
  2024-03-11 14:32     ` Leonard Anderweit
  0 siblings, 1 reply; 9+ messages in thread
From: Fabio Estevam @ 2024-03-11 14:05 UTC (permalink / raw)
  To: Leonard Anderweit; +Cc: trini, t.remmet, u-boot, upstream

Hi Leonard,

On Mon, Mar 11, 2024 at 10:04 AM Leonard Anderweit
<l.anderweit@phytec.de> wrote:
>
> Add support for the redundant environment.
>
> Signed-off-by: Leonard Anderweit <l.anderweit@phytec.de>

Please rebase this series against U-Boot next branch and resend.

There is an error while applying this patch against next.

Thanks

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 3/5] configs: phycore-imx8mp_defconfig: Use redundant environment
  2024-03-11 14:05   ` Fabio Estevam
@ 2024-03-11 14:32     ` Leonard Anderweit
  2024-03-11 15:35       ` Fabio Estevam
  0 siblings, 1 reply; 9+ messages in thread
From: Leonard Anderweit @ 2024-03-11 14:32 UTC (permalink / raw)
  To: festevam@gmail.com
  Cc: upstream@lists.phytec.de, trini@konsulko.com,
	u-boot@lists.denx.de, Teresa Remmet

Hi Fabio,

Am Montag, dem 11.03.2024 um 11:05 -0300 schrieb Fabio Estevam:
> Hi Leonard,
> 
> On Mon, Mar 11, 2024 at 10:04 AM Leonard Anderweit
> <l.anderweit@phytec.de> wrote:
> > 
> > Add support for the redundant environment.
> > 
> > Signed-off-by: Leonard Anderweit <l.anderweit@phytec.de>
> 
> Please rebase this series against U-Boot next branch and resend.

This series is based on the latest master branch.
> 
> There is an error while applying this patch against next.

I also got an error while applying this to next. To apply cleanly this
series requires the commit 19f657600781 (configs: Resync with
savedefconfig) which is on master but not on next.

If this missing commit is intended I'll resend this series based on
next.

Regards,
Leonard
> 
> Thanks


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 3/5] configs: phycore-imx8mp_defconfig: Use redundant environment
  2024-03-11 14:32     ` Leonard Anderweit
@ 2024-03-11 15:35       ` Fabio Estevam
  0 siblings, 0 replies; 9+ messages in thread
From: Fabio Estevam @ 2024-03-11 15:35 UTC (permalink / raw)
  To: Leonard Anderweit
  Cc: upstream@lists.phytec.de, trini@konsulko.com,
	u-boot@lists.denx.de, Teresa Remmet

Hi Leonard,

On Mon, Mar 11, 2024 at 11:32 AM Leonard Anderweit
<L.Anderweit@phytec.de> wrote:

> I also got an error while applying this to next. To apply cleanly this
> series requires the commit 19f657600781 (configs: Resync with
> savedefconfig) which is on master but not on next.
>
> If this missing commit is intended I'll resend this series based on
> next.

At this point, the master branch is open only for bug fixes.

This series is targeted at the next branch, so please send a v2 based
on next and I will apply it.

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2024-03-11 15:35 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-03-11 13:03 [PATCH 0/5] Add RAUC boot logic for phycore_imx8mp Leonard Anderweit
2024-03-11 13:03 ` [PATCH 1/5] phycore_imx8mp: Move environment from include/config to board Leonard Anderweit
2024-03-11 13:03 ` [PATCH 2/5] phycore_imx8mp: Move default bootcmd to board env Leonard Anderweit
2024-03-11 13:03 ` [PATCH 3/5] configs: phycore-imx8mp_defconfig: Use redundant environment Leonard Anderweit
2024-03-11 14:05   ` Fabio Estevam
2024-03-11 14:32     ` Leonard Anderweit
2024-03-11 15:35       ` Fabio Estevam
2024-03-11 13:03 ` [PATCH 4/5] include: env: Add phytec RAUC boot logic Leonard Anderweit
2024-03-11 13:04 ` [PATCH 5/5] board: phytec: phycore_imx8mp: Add RAUC boot logic to environment Leonard Anderweit

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox