Boot from 64-bit memory address?
Rick Chen
rickchen36 at gmail.com
Fri Feb 24 07:32:57 CET 2023
Hi Philip,
> From: U-Boot <u-boot-bounces at lists.denx.de> On Behalf Of Bernard, Philip
> Sent: Thursday, February 23, 2023 9:21 AM
> To: u-boot at lists.denx.de
> Subject: Boot from 64-bit memory address?
>
> Hi,
>
> Is it possible to boot from a DRAM memory address beyond the 32-bit boundary? I'm trying to configure a new RISC-V board which has 2GB of DRAM starting at offset 0x40_0000_0000. I started from the settings for an existing RISC-V board and made
I think it is possible to boot from a DRAM memory beyond the 32-bit
boundary. But maybe you need to modify some code to achieve that.
I have tried to boot an internal AE350-like platform whose DRAM base
is at 0x400000000.
adjustments for my HW, but when I try to boot, I run into an "out of
memory" error.
>
> From https://u-boot.readthedocs.io/en/latest/develop/uefi/u-boot_on_efi.html#tables I noticed that U-Boot will only use "conventional" memory which is 4GB and below, so it seems like this may not be possible? Looking through the repo, I also noticed that nearly every device is configuring settings like CONFIG_SYS_LOAD_ADDR with a 32-bit value, so I haven't found any examples to emulate for my use case.
CONFIG_SYS_LOAD_ADDR is not important. Maybe you shall notice
CONFIG_SYS_TEXT_BASE and CONFIG_SPL_OPENSBI_LOAD_ADDR which will be
parsed from binman.dtsi
You can change them like this:
load = /bits/64 <CONFIG_SYS_TEXT_BASE>;
load = /bits/64 <CONFIG_SPL_OPENSBI_LOAD_ADDR>;
>
> I'm hoping someone knows the mistake I'm making or can confirm that this isn't possible. Appreciate the help.
>
> Best,
> Phil
>
>
> Below is the output from U-Boot:
>
> U-Boot SPL 2022.07 (Feb 23 2023 - 00:50:44 +0000) Trying to boot from RAM
>
> OpenSBI v1.1
> ____ _____ ____ _____
> / __ \ / ____| _ \_ _|
> | | | |_ __ ___ _ __ | (___ | |_) || |
> | | | | '_ \ / _ \ '_ \ \___ \| _ < | | __| | |_) | __/ | | |____) |
> | ||_) || |_
> \____/| .__/ \___|_| |_|_____/|____/_____|
> | |
> |_|
>
> Platform Name : test,test
> Platform Features : medeleg
> Platform HART Count : 1
> Platform IPI Device : aclint-mswi
> Platform Timer Device : aclint-mtimer @ 1000000Hz
> Platform Console Device : uart8250
> Platform HSM Device : ---
> Platform Reboot Device : ---
> Platform Shutdown Device : ---
> Firmware Base : 0x80000000
> Firmware Size : 276 KB
> Runtime SBI Version : 1.0
>
> Domain0 Name : root
> Domain0 Boot HART : 0
> Domain0 HARTs : 0*
> Domain0 Region00 : 0x0000000002000000-0x000000000200ffff (I)
> Domain0 Region01 : 0x0000000080000000-0x000000008007ffff ()
> Domain0 Region02 : 0x0000000000000000-0xffffffffffffffff (R,W,X)
> Domain0 Next Address : 0x0000004001200000
> Domain0 Next Arg1 : 0x0000004001267830
> Domain0 Next Mode : S-mode
> Domain0 SysReset : yes
>
> Boot HART ID : 0
> Boot HART Domain : root
> Boot HART Priv Version : v1.10
> Boot HART Base ISA : rv64imafdcb
> Boot HART ISA Extensions : time
> Boot HART PMP Count : 8
> Boot HART PMP Granularity : 4
> Boot HART PMP Address Bits: 54
> Boot HART MHPM Count : 0
> Boot HART MIDELEG : 0x0000000000000222
> Boot HART MEDELEG : 0x000000000000b109
>
>
> U-Boot 2022.07 (Feb 23 2023 - 00:50:44 +0000)
>
> CPU: rv64imafdc
> Model: test,test
> DRAM: 2 GiB
> Core: 11 devices, 8 uclasses, devicetree: separate
> ERROR: Out of memory
> Loading Environment from nowhere... OK
> In: serial at 131400000
> Out: serial at 131400000
> Err: serial at 131400000
> Model: test,test
> Net: No ethernet found.
> Hit any key to stop autoboot: 0
> Moving Image from 0x4006000000 to 0x4000200000, end=4000b01c8c ## Flattened Device Tree blob at ff76a1d0
> Booting using the fdt blob at 0xff76a1d0
> ERROR: Failed to allocate 0x1000000 bytes below 0x100000000.
Can you dig in where to print this ERROR ?
Thanks,
Rick
> ramdisk - allocation error
More information about the U-Boot
mailing list