Message ID | 20211104015326.32238-1-ycliang@andestech.com |
---|---|
State | Accepted |
Commit | 666da85dc98931b82efa68b0c1a96fc654b7a40b |
Delegated to: | Andes |
Headers | show |
Series | [1/1] board: ae350: Support autoboot from RAM | expand |
> From: Leo Yu-Chi Liang(梁育齊) <ycliang@andestech.com> > Sent: Thursday, November 04, 2021 9:53 AM > To: u-boot@lists.denx.de > Cc: Rick Jian-Zhi Chen(陳建志) <rick@andestech.com>; Leo Yu-Chi Liang(梁育齊) <ycliang@andestech.com> > 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 0x2000000 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=<dtb address>\" \ > -ex \"restore u-boot.itb binary 0x200000\" \ > -ex \"restore Image binary 0x2000000\" \ > -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 <ycliang@andestech.com> > --- > include/configs/ax25-ae350.h | 13 ++++++++++++- > 1 file changed, 12 insertions(+), 1 deletion(-) Reviewed-by: Rick Chen <rick@andestech.com>
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 "0x2000000 " +#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 <config_distro_bootcmd.h> #define CONFIG_EXTRA_ENV_SETTINGS \
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 0x2000000 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=<dtb address>\" \ -ex \"restore u-boot.itb binary 0x200000\" \ -ex \"restore Image binary 0x2000000\" \ -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 <ycliang@andestech.com> --- include/configs/ax25-ae350.h | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-)