Re: [PATCH 1/1] board: ae350: Support autoboot from RAM

2021-11-03 Thread Rick Chen
> From: Leo Yu-Chi Liang(梁育齊) 
> Sent: Thursday, November 04, 2021 9:53 AM
> To: u-boot@lists.denx.de
> Cc: Rick Jian-Zhi Chen(陳建志) ; Leo Yu-Chi Liang(梁育齊) 
> 
> Subject: [PATCH 1/1] board: ae350: Support autoboot from RAM
>
> Add boot command "bootcmd_ram" to support autoboot from RAM.
>
> This feature could be useful at the very initial state of chip design when 
> there is only a minimal set of peripheral. (e.g. without mmc and mac ..etc)
>
> The kernel image is default to be loaded at 0x200 via debug port, and the 
> following script serves as an example:
>
> spl()
> {
> cmd="riscv64-linux-gdb -q \
> -ex \"target remote $host:$port\" \
> -ex \"load\" \
> -ex \"thread apply all set \\\$pc=&_start\" \
> -ex \"thread apply all set \\\$a0=\\\$mhartid\" \
> -ex \"thread apply all set \\\$a1=\" \
> -ex \"restore u-boot.itb binary 0x20\" \
> -ex \"restore Image binary 0x200\" \
> -ex \"c\" \
> spl/u-boot-spl
> "
>
> echo $cmd
> eval $cmd
> }
>
> The address where the kernel is loaded can be altered by changing the value 
> of KERNEL_IMAGE_ADDR.
>
> Signed-off-by: Leo Yu-Chi Liang 
> ---
>  include/configs/ax25-ae350.h | 13 -
>  1 file changed, 12 insertions(+), 1 deletion(-)

Reviewed-by: Rick Chen 


[PATCH 1/1] board: ae350: Support autoboot from RAM

2021-11-03 Thread Leo Yu-Chi Liang
Add boot command "bootcmd_ram" to support autoboot from RAM.

This feature could be useful at the very initial state of chip design
when there is only a minimal set of peripheral. (e.g. without mmc and mac ..etc)

The kernel image is default to be loaded at 0x200 via debug port,
and the following script serves as an example:

spl()
{
cmd="riscv64-linux-gdb -q \
-ex \"target remote $host:$port\" \
-ex \"load\" \
-ex \"thread apply all set \\\$pc=&_start\" \
-ex \"thread apply all set \\\$a0=\\\$mhartid\" \
-ex \"thread apply all set \\\$a1=\" \
-ex \"restore u-boot.itb binary 0x20\" \
-ex \"restore Image binary 0x200\" \
-ex \"c\" \
spl/u-boot-spl
"

echo $cmd
eval $cmd
}

The address where the kernel is loaded can be altered by
changing the value of KERNEL_IMAGE_ADDR.

Signed-off-by: Leo Yu-Chi Liang 
---
 include/configs/ax25-ae350.h | 13 -
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/include/configs/ax25-ae350.h b/include/configs/ax25-ae350.h
index bf3f34e428..1c3f957d32 100644
--- a/include/configs/ax25-ae350.h
+++ b/include/configs/ax25-ae350.h
@@ -119,12 +119,23 @@
 /* Increase max gunzip size */
 #define CONFIG_SYS_BOOTM_LEN   (64 << 20)
 
+/* Support autoboot from RAM (kernel image is loaded via debug port) */
+#define KERNEL_IMAGE_ADDR  "0x200 "
+#define BOOTENV_DEV_NAME_RAM(devtypeu, devtypel, instance) \
+   "ram "
+#define BOOTENV_DEV_RAM(devtypeu, devtypel, instance) \
+   "bootcmd_ram=" \
+   "booti " \
+   KERNEL_IMAGE_ADDR \
+   "- $fdtcontroladdr\0"
+
 /* When we use RAM as ENV */
 
 /* Enable distro boot */
 #define BOOT_TARGET_DEVICES(func) \
func(MMC, mmc, 0) \
-   func(DHCP, dhcp, na)
+   func(DHCP, dhcp, na) \
+   func(RAM, ram, na)
 #include 
 
 #define CONFIG_EXTRA_ENV_SETTINGS  \
-- 
2.17.0