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]]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to