On 16:46-20251202, Anshul Dalal via lists.yoctoproject.org wrote:
> 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

Does this fw_env.config work for all machines?  

> 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"

If this config is not tested on all boards, it would be best to only append it
to the machines that are tested.

> +
> +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

Using devmem2 might be a bad idea. Consider using fw_setenv [1] to set
the bootcount to 0. 

[1] https://manpages.debian.org/testing/libubootenv-tool/fw_setenv.8.en.html

-- Yogesh 

>  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 (#16855): 
https://lists.yoctoproject.org/g/meta-arago/message/16855
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]]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to