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

Rick Chen rickchen36 at gmail.com
Mon Oct 29 03:22:30 UTC 2018


Bin Meng <bmeng.cn at gmail.com> 於 2018年10月25日 週四 下午9:36寫道:
>
> 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?
>

In the ROM case, u-Boot will boot itself without first stage
bootloader from reset vector.
So there is no bootloader can pass pass DTB to U-Boot via a1.

> > 0xf0000 is ram space
> > 0x800f0000 is flash rom space
> >
>
> Regards,
> Bin


More information about the U-Boot mailing list