[U-Boot] [PATCH] riscv: ax25-ae350: Pass dtb address to u-boot with a1 register

Bin Meng bmeng.cn at gmail.com
Thu Oct 25 13:36:18 UTC 2018


Hi Rick,

On Thu, Oct 25, 2018 at 11:27 AM Rick Chen <rickchen36 at gmail.com> wrote:
>
> Bin Meng <bmeng.cn at gmail.com> 於 2018年10月25日 週四 上午11:16寫道:
> >
> > Hi Rick,
> >
> > On Thu, Oct 25, 2018 at 11:11 AM Rick Chen <rickchen36 at gmail.com> wrote:
> > >
> > > Bin Meng <bmeng.cn at gmail.com> 於 2018年10月25日 週四 上午10:33寫道:
> > > >
> > > > Hi Rick,
> > > >
> > > > On Thu, Oct 25, 2018 at 9:20 AM Andes <uboot at andestech.com> wrote:
> > > > >
> > > > > From: Rick Chen <rick at andestech.com>
> > > > >
> > > > > ax25-ae350 use CONFIG_OF_BOARD which allow the board to
> > > > > override the fdt address. And prior_stage_fdt_address offer
> > > > > a temporary memory address to keep the dtb address which was
> > > > > passed from loader(gdb) to u-boot with a1.
> > > >
> > > > nits: U-Boot
> > > >
> > > > >
> > > > > Signed-off-by: Rick Chen <rick at andestech.com>
> > > > > Cc: Greentime Hu <greentime at andestech.com>
> > > > > ---
> > > > >  board/AndesTech/ax25-ae350/ax25-ae350.c | 3 ++-
> > > > >  1 file changed, 2 insertions(+), 1 deletion(-)
> > > > >
> > > > > diff --git a/board/AndesTech/ax25-ae350/ax25-ae350.c b/board/AndesTech/ax25-ae350/ax25-ae350.c
> > > > > index 5f4ca0f..d343453 100644
> > > > > --- a/board/AndesTech/ax25-ae350/ax25-ae350.c
> > > > > +++ b/board/AndesTech/ax25-ae350/ax25-ae350.c
> > > > > @@ -14,6 +14,7 @@
> > > > >
> > > > >  DECLARE_GLOBAL_DATA_PTR;
> > > > >
> > > > > +extern phys_addr_t prior_stage_fdt_address;
> > > > >  /*
> > > > >   * Miscellaneous platform dependent initializations
> > > > >   */
> > > > > @@ -66,7 +67,7 @@ ulong board_flash_get_legacy(ulong base, int banknum, flash_info_t *info)
> > > > >
> > > > >  void *board_fdt_blob_setup(void)
> > > > >  {
> > > > > -       void **ptr = (void *)CONFIG_SYS_SDRAM_BASE;
> > > > > +       void **ptr = (void *)&prior_stage_fdt_address;
> > > > >         if (fdt_magic(*ptr) == FDT_MAGIC)
> > > > >                         return (void *)*ptr;
> > > > >
> > > > > --
> > > >
> > > > board_fdt_blob_setup() should be completely removed. Instead the
> > > > simple fix should be add CONFIG_OF_PRIOR_STAGE to your board defconfig
> > > > files.
> > > >
> > >
> > > Hi Bin
> > >
> > > I have tried to switch from CONFIG_OF_BOARD to CONFIG_OF_PRIOR_STAGE.
> > >
> > > But it will lost the function
> > > that dtb will be pre-burned into designated flash location,
> > > when U-Boot was booting from flash.
> > >
> >
> > I don't get it. Do you mean on ae350 board, the DTB is pre-flashed on the flash?
> >
>
> Yes
> On ae350 board, the DTB is pre-flashed on the flash in booting from rom case.
>
> u-boot boot from ram case:
> CONFIG_OF_PRIOR_STAGE can achieve u-boot boot from ram and dtb was
> passed by loader with a1(0xf0000).
>
> u-boot boot from rom case:
> If DTB is pre-flashed on the flash 0x800f0000 (This address can be
> dynamically changed)
> But no one assign a1=0x800f000, how can be gd->fdt_blob changed to 0x800f000.
> I am wondering about that ?
>

In the ROM case, U-Boot does not boot from reset vector, right? So the
first stage bootloader can pass DTB to U-Boot via a1 register, no?

> 0xf0000 is ram space
> 0x800f0000 is flash rom space
>

Regards,
Bin


More information about the U-Boot mailing list