U-Boot uses the 'bootpart' env variable to configure the rootfs for the kernel at boot. The BACKUP_REG0 MMR is also used to store bootcount as per U-Boot requirements[1].
After each reset, U-Boot increments the bootcount and it's reset to 0 by the swupdate service indicating a successful boot. If the kernel panics however (eg. if the update failed), the bootcount is never reset and keeps on getting incremented by U-Boot until it reaches certain threshold after which U-Boot switches to the other non-updated partition to ensure a successful boot. This patch adds support for the same to the final .swu image generated by the update-image recipe. [1]: https://docs.u-boot.org/en/latest/api/bootcount.html Signed-off-by: Anshul Dalal <[email protected]> --- .../recipes-swupdate/images/files/sw-description | 12 ++++++++++++ .../recipes-swupdate/libubootenv/files/fw_env.config | 5 +++++ .../libubootenv/libubootenv_%.bbappend | 10 ++++++++++ .../recipes-swupdate/swupdate/files/defconfig | 2 ++ .../recipes-swupdate/swupdate/files/swupdate.sh | 4 ++++ .../recipes-swupdate/swupdate/swupdate_%.bbappend | 2 ++ 6 files changed, 35 insertions(+) create mode 100644 meta-arago-distro/recipes-swupdate/libubootenv/files/fw_env.config create mode 100644 meta-arago-distro/recipes-swupdate/libubootenv/libubootenv_%.bbappend diff --git a/meta-arago-distro/recipes-swupdate/images/files/sw-description b/meta-arago-distro/recipes-swupdate/images/files/sw-description index 8dc4e2b2..241bc95c 100644 --- a/meta-arago-distro/recipes-swupdate/images/files/sw-description +++ b/meta-arago-distro/recipes-swupdate/images/files/sw-description @@ -15,6 +15,12 @@ software = compressed = "zlib"; }, ); + uboot: ( + { + name = "bootpart"; + value = "0:1"; + }, + ); }; copy2 : { @@ -26,6 +32,12 @@ software = compressed = "zlib"; }, ); + uboot: ( + { + name = "bootpart"; + value = "0:2"; + }, + ); }; }; } diff --git a/meta-arago-distro/recipes-swupdate/libubootenv/files/fw_env.config b/meta-arago-distro/recipes-swupdate/libubootenv/files/fw_env.config new file mode 100644 index 00000000..57eec5fc --- /dev/null +++ b/meta-arago-distro/recipes-swupdate/libubootenv/files/fw_env.config @@ -0,0 +1,5 @@ +# Describes the env location for U-Boot in the hw partition +# Second entry indicates redundant env +# Boot dev Offset Size +/dev/mmcblk0boot0 0x680000 0x20000 +/dev/mmcblk0boot0 0x6a0000 0x20000 diff --git a/meta-arago-distro/recipes-swupdate/libubootenv/libubootenv_%.bbappend b/meta-arago-distro/recipes-swupdate/libubootenv/libubootenv_%.bbappend new file mode 100644 index 00000000..e3d142f2 --- /dev/null +++ b/meta-arago-distro/recipes-swupdate/libubootenv/libubootenv_%.bbappend @@ -0,0 +1,10 @@ +FILESEXTRAPATHS:prepend := "${THISDIR}/files:" + +SRC_URI:append = " file://fw_env.config" + +do_install:append() { + install -d ${D}${sysconfdir} + install -m 644 ${WORKDIR}/fw_env.config ${D}${sysconfdir} +} + +FILES:${PN}:append = " ${sysconfdir}" diff --git a/meta-arago-distro/recipes-swupdate/swupdate/files/defconfig b/meta-arago-distro/recipes-swupdate/swupdate/files/defconfig index b1362eaa..4a2d78c0 100644 --- a/meta-arago-distro/recipes-swupdate/swupdate/files/defconfig +++ b/meta-arago-distro/recipes-swupdate/swupdate/files/defconfig @@ -1,8 +1,10 @@ CONFIG_HW_COMPATIBILITY=y # CONFIG_LUA is not set # CONFIG_BOOTLOADER_NONE is not set +CONFIG_UBOOT=y CONFIG_SYSTEMD=y CONFIG_WEBSERVER=y +CONFIG_BOOTLOADERHANDLER=y CONFIG_CFI=y CONFIG_EMMC_HANDLER=y CONFIG_RAW=y diff --git a/meta-arago-distro/recipes-swupdate/swupdate/files/swupdate.sh b/meta-arago-distro/recipes-swupdate/swupdate/files/swupdate.sh index bb3a3593..2083062e 100644 --- a/meta-arago-distro/recipes-swupdate/swupdate/files/swupdate.sh +++ b/meta-arago-distro/recipes-swupdate/swupdate/files/swupdate.sh @@ -8,4 +8,8 @@ else SELECTION="-e stable,copy2" fi +# BACKUP_REG0 MMR on AM62x +UBOOT_BOOTCOUNT_ADDR=0x4301c100 + +devmem2 $UBOOT_BOOTCOUNT_ADDR w 0 swupdate -H @MACHINE@:1.0 ${SELECTION} -p 'reboot' -f /etc/swupdate.cfg -w "-r /www -p 8080" diff --git a/meta-arago-distro/recipes-swupdate/swupdate/swupdate_%.bbappend b/meta-arago-distro/recipes-swupdate/swupdate/swupdate_%.bbappend index 0ce763f9..20f87435 100644 --- a/meta-arago-distro/recipes-swupdate/swupdate/swupdate_%.bbappend +++ b/meta-arago-distro/recipes-swupdate/swupdate/swupdate_%.bbappend @@ -2,6 +2,8 @@ inherit swupdate-lib FILESEXTRAPATHS:append := "${THISDIR}/files:" +RDEPENDS:${PN} += "devmem2" + FILES:${PN} += " \ ${SWUPDATE_HW_COMPATIBILITY_FILE} \ " -- 2.52.0 -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#16850): https://lists.yoctoproject.org/g/meta-arago/message/16850 Mute This Topic: https://lists.yoctoproject.org/mt/116574476/21656 Group Owner: [email protected] Unsubscribe: https://lists.yoctoproject.org/g/meta-arago/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
