board: rpi: tizen_rpi: Add a backup_ver to update a backup image 94/322194/2 tizen
authorJaehoon Chung <jh80.chung@samsung.com>
Fri, 4 Apr 2025 11:02:30 +0000 (20:02 +0900)
committerJaehoon Chung <jh80.chung@samsung.com>
Mon, 7 Apr 2025 21:44:54 +0000 (06:44 +0900)
Add a backup_ver to check if it needs to update a backup image.
If backup_version is a lower than recovery.ver.64/32, it will be
updated.
If want to update its image by force, use "setenv backup_update_force
1". Then it will be updated a image and version file.

Change-Id: I6603c0b0e98bcf31d734d94189dc891de2888039
Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
board/raspberrypi/rpi/tizen_rpi.env
tizen/bootscript/tizen-boot-rpi4.scr

index 88644dbf5a08e9a460c43d91a007d08ff4c89165..040b8a69cf7835e113db6c3329dc192e46f0115e 100644 (file)
@@ -158,6 +158,7 @@ slotfile=partition-ab.info
 slot_addr=0x02200000
 rebootparam_addr=0x02100000
 upgradetype_addr=0x02300000
+backup_addr=0x02310000
 upgradetype_online_val=696c6e6f
 upgrade_val=72677075
 recovery_val=72766372
@@ -175,6 +176,10 @@ disable_delay=setenv console console=ram; setenv bootdelay 0; saveenv
 enable_delay=env delete console; setenv bootdelay 2; saveenv
 gpt_parts=GPT_PARTS_DEFAULT
 update_gpt_part=gpt write ${devtype} ${devnum} ${gpt_parts}
-reboot_param_clear=CLEAR_REBOOT_PARAM 
+reboot_param_clear=CLEAR_REBOOT_PARAM
 tizen_bootarg=cgroup_enable=memory TIZEN_VC_MEM 8250.nr_uarts=1 dma.dmachans=0x7f35 bcm2709.serial=0xed6687d3 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 bcm2709.uart_clock=48000000 dwc_otg.lpm_enable=0
 
+/* Backup Version needs to increase when ramdisk-recovery image in bakcup partition has to update */
+/* Current Version is 1.0 , check 4byte. */
+backup_ver=00302e31
+backup_ver_size=4
index d9eaf12ab996aa8ce6feb942a2059a52d8b2e2a6..3f2faa876ab66b41ec0f9478228e2c22042570f4 100644 (file)
@@ -114,13 +114,38 @@ if test -n "${ramdiskpart}"; then;
        if test "${bootmode}" = "flash" && env exists use_backup && env exists backuppart; then;
                if test "${cpu}" = "armv8"; then;
                        setenv backup_file recovery.img.64
+                       setenv backup_ver_file recovery.ver.64
                else
                        setenv backup_file recovery.img.32
+                       setenv backup_ver_file recovery.ver.32
                fi
-               echo "Using the ${backup_file} from backup partition"
-               if test -e $devtype $devnum:$backuppart $backup_file; then;
+
+               # Check backup_version if needs to update
+               if test -e $devtype $devnum:$backuppart $backup_ver_file; then;
+                       # Compare version at heare
+                       load $devtype $devnum:$backuppart $backup_addr $backup_ver_file $backup_ver_size
+                       if itest.l *${backup_addr} < "${backup_ver}" || env exists backup_update_force; then;
+                               setenv backup_update 1
+                       fi
+               else
+                       setenv backup_update 1
+               fi
+
+               if env exists backup_update; then;
+                       echo "Update ${backup_file}..."
+                       mw.l $backup_addr $backup_ver
+                       ext4write $devtype $devnum:$backuppart $backup_addr $backup_ver_file $backup_ver_size
+
+                       #Copy ramdisk-recovery -> recovery.img.64 or rcovery.img.32
+                       setexpr file_size $ramdisk_size * 200
+                       # Load it
+                       ext4write $devtype $devnum:$backuppart $ramdisk_addr_r $backup_file $file_size;
+               elif test -e $devtype $devnum:$backuppart $backup_file; then;
+                       echo "Using the ${backup_file} from backup partition"
+
                        load $devtype $devnum:$backuppart  $ramdisk_addr_r $backup_file;
                else
+                       echo "Create the ${backup_file} from backup partition"
                        #Copy ramdisk-recovery -> recovery.img.64 or rcovery.img.32
                        setexpr file_size $ramdisk_size * 200
                        # Load it