On Wed Dec 3, 2025 at 11:28 AM IST, Yogesh Hegde wrote:
> 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?
>
No, AM64x and J7200 make use of different offsets. Though it might make
sense to move the libubootenv configuration to meta-ti altogether with
the config under libubootenv/files/<SOC_OVERRIDE>/fw_env.config.
Since this config is not only useful for SWUpdate with arago but anybody
trying to make use fw_* tools on our platforms.
>> 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.
>
That's fair, perhaps we should error out on builds with untested
platforms with 'ti-swupdate' active.
>> +
>> +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.
>
Yeah, this should be trivial to support with libubootenv-bin added to
IMAGE_INSTALL.
Regards,
Anshul
>
>> 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 (#16857):
https://lists.yoctoproject.org/g/meta-arago/message/16857
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]]
-=-=-=-=-=-=-=-=-=-=-=-