Message ID | 20191025061027.20962-4-uboot@andestech.com |
---|---|
State | Superseded |
Delegated to: | Andes |
Headers | show |
Series | RISC-V AX25-AE350 support SPL | expand |
Hi Rick, On Fri, Oct 25, 2019 at 2:17 PM Andes <uboot@andestech.com> wrote: > > From: Rick Chen <rick@andestech.com> > > To get memory size from device tree instead of > get_ram_size(). This can avoid memory access fault Could you please explain a little more about why get_ram_size() causes PMP access fault? > in U-Boot proper after PMP configurations in OpenSbi. > > Signed-off-by: Rick Chen <rick@andestech.com> > Cc: KC Lin <kclin@andestech.com> > Cc: Alan Kao <alankao@andestech.com> > --- > board/AndesTech/ax25-ae350/ax25-ae350.c | 21 ++------------------- > 1 file changed, 2 insertions(+), 19 deletions(-) > Regards, Bin
Hi Bin Bin Meng <bmeng.cn@gmail.com> 於 2019年10月29日 週二 下午10:42寫道: > > Hi Rick, > > On Fri, Oct 25, 2019 at 2:17 PM Andes <uboot@andestech.com> wrote: > > > > From: Rick Chen <rick@andestech.com> > > > > To get memory size from device tree instead of > > get_ram_size(). This can avoid memory access fault > > Could you please explain a little more about why get_ram_size() causes > PMP access fault? OpenSBI will configure pmpcfg and pmpaddr for memory protection in specific range. When get_ram_size() try to store or load memory address, it will appear access fault exception. Thanks Rick > > > in U-Boot proper after PMP configurations in OpenSbi. > > > > Signed-off-by: Rick Chen <rick@andestech.com> > > Cc: KC Lin <kclin@andestech.com> > > Cc: Alan Kao <alankao@andestech.com> > > --- > > board/AndesTech/ax25-ae350/ax25-ae350.c | 21 ++------------------- > > 1 file changed, 2 insertions(+), 19 deletions(-) > > > > Regards, > Bin
diff --git a/board/AndesTech/ax25-ae350/ax25-ae350.c b/board/AndesTech/ax25-ae350/ax25-ae350.c index b0164a9..47e6929 100644 --- a/board/AndesTech/ax25-ae350/ax25-ae350.c +++ b/board/AndesTech/ax25-ae350/ax25-ae350.c @@ -30,29 +30,12 @@ int board_init(void) int dram_init(void) { - unsigned long sdram_base = PHYS_SDRAM_0; - unsigned long expected_size = PHYS_SDRAM_0_SIZE + PHYS_SDRAM_1_SIZE; - unsigned long actual_size; - - actual_size = get_ram_size((void *)sdram_base, expected_size); - gd->ram_size = actual_size; - - if (expected_size != actual_size) { - printf("Warning: Only %lu of %lu MiB SDRAM is working\n", - actual_size >> 20, expected_size >> 20); - } - - return 0; + return fdtdec_setup_mem_size_base(); } int dram_init_banksize(void) { - gd->bd->bi_dram[0].start = PHYS_SDRAM_0; - gd->bd->bi_dram[0].size = PHYS_SDRAM_0_SIZE; - gd->bd->bi_dram[1].start = PHYS_SDRAM_1; - gd->bd->bi_dram[1].size = PHYS_SDRAM_1_SIZE; - - return 0; + return fdtdec_setup_memory_banksize(); } #if defined(CONFIG_FTMAC100) && !defined(CONFIG_DM_ETH)