tizen: bootscript: vf2: Support a ramdisk booting 41/293941/2
authorJaehoon Chung <jh80.chung@samsung.com>
Fri, 9 Jun 2023 00:03:44 +0000 (09:03 +0900)
committerJaehoon Chung <jh80.chung@samsung.com>
Fri, 9 Jun 2023 04:55:31 +0000 (04:55 +0000)
Support a ramdisk booting.
It will not mount a ramdisk partition directly.
Instead, it will be loading ramdisk image to ram area.

Change-Id: Iec0f3863d42b54405a55171aead0da97a0ad8d7d
Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
tizen/bootscript/tizen-boot-vf2.scr

index 7370238..4b519f6 100644 (file)
@@ -11,16 +11,19 @@ fi
 if test -e $bootdev $mmcbootdev:$mmcinformpart $slotfile; then;
        ext4load $bootdev $mmcbootdev:$mmcinformpart $slot_addr $slotfile;
        if itest.b *${slot_addr} == 0x62; then;
-               setenv ramdiskpart 14
+               setenv ramdiskpart 0xf
+               setenv part 15
                setenv partition_ab b
                echo "boot from slot_b";
        else
                setenv ramdiskpart 9
+               setenv part 9
                setenv partition_ab a
                echo "boot from slot_a";
        fi
 else
        setenv ramdiskpart 9
+       setenv part 9
        setenv partition_ab a
        echo "boot from slot_a";
 fi
@@ -29,23 +32,28 @@ if test -e $bootdev $mmcbootdev:$mmcinformpart $rebootparamfile; then;
        ext4load $bootdev $mmcbootdev:$mmcinformpart $rebootparam_addr $rebootparamfile;
        if itest.l *${rebootparam_addr} == ${upgrade_val}; then;
                if test "${partition_ab}" = "b"; then
-                       setenv ramdiskpart 15
+                       setenv ramdiskpart 0x10
+                       setenv part 16
                else
                        setenv ramdiskpart 9
+                       setenv part 9
                fi
                setenv bootmode fota
        elif itest.l *${rebootparam_addr} == ${recovery_val}; then;
                if test "${partition_ab}" = "b"; then
-                       setenv ramdiskpart 15
+                       setenv ramdiskpart 0x10
+                       setenv part 16
                else
                        setenv ramdiskpart 9
                fi
                setenv bootmode recovery
        elif itest.l *${rebootparam_addr} == ${download_val}; then;
                if test "${partition_ab}" = "b"; then
-                       setenv ramdiskpart 15
+                       setenv ramdiskpart 0x10
+                       setenv part 16
                else
                        setenv ramdiskpart 9
+                       setenv part 9
                fi
                setenv bootmode flash
        elif itest.l *${rebootparam_addr} == ${nodef_val}; then;
@@ -56,9 +64,11 @@ fi
 # This is for jumping to flash mode on u-boot.
 if test "${bootmode}" = "download"; then;
        if test "${partition_ab}" = "b"; then
-               setenv ramdiskpart 15
+               setenv ramdiskpart 0x10
+               setenv part 16
        else
                setenv ramdiskpart 9
+               setenv part 9
        fi
        setenv bootmode flash
 fi
@@ -71,12 +81,7 @@ fi
 
 # boot from ramdisk if there is sbin
 if test -e $bootdev $mmcrootdev:$ramdiskpart sbin/init; then;
-       if test "${bootdev}" = "mmc"; then;
-               setenv rootdev mmcblk${mmcrootdev}p${ramdiskpart}
-       fi
-       if test "${bootdev}" = "usb"; then;
-               setenv rootdev sda${ramdiskpart}
-       fi
+       setenv rootdev ram0
 else
        if test "${bootdev}" = "mmc"; then;
                setenv rootdev mmcblk${mmcrootdev}p${mmcrootpart}
@@ -99,11 +104,25 @@ setenv boot_prefixes \"/\"
 # To use cmdline for using serial console. /* Normal mode */
 setenv bootargs \"${tizen_bootarg} root=/dev/${rootdev} rw bootmode=${bootmode} partition_ab=${partition_ab} rootwait ${console} ${opts} ${ip_opt} stmmaceth=chain_mode:1\"
 
+# Find the ramdisk offset and block count
+part start $bootdev $mmcrootdev $ramdiskpart ramdisk_start
+part size $bootdev $mmcrootdev $ramdiskpart ramdisk_size
+
+# Set to ramdisksize with real partition size. (Need to multiply block-size 0x200)
+setexpr ramdisksize $ramdisk_size * 200
+setexpr tizen_kernel_addr_r $ramdisk_addr_r + $ramdisksize
+
 echo "Searching for kernel in"; for prefix in $boot_prefixes; do
-if load $bootdev $mmcbootdev:$mmcbootpart $kernel_addr_r $prefix$kernel; then;
-       echo ${bootmode} "boot from" ${rootdev};
+if load $bootdev $mmcbootdev:$mmcbootpart $tizen_kernel_addr_r $prefix$kernel; then;
+       echo ${bootmode} "boot";
+
+       if test -e $bootdev $mmcrootdev:$ramdiskpart sbin/init; then;
+               echo "Loading Ramdisk from partition"${part};
+               echo "Environment value of ramdiskpart is" ${ramdiskpart};
+               $bootdev read $ramdisk_addr_r $ramdisk_start $ramdisk_size;
+       fi
 
        load $bootdev $mmcrootdev:$mmcbootpart $fdt_addr_r $fdtfile
-       booti $kernel_addr_r - $fdt_addr_r;
+       booti $tizen_kernel_addr_r $ramdisk_addr_r:$ramdisksize $fdt_addr_r;
 fi
 done