public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Lukasz Majewski <lukma@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] U-Boot proper(not SPL) relocate option
Date: Wed, 22 Nov 2017 09:51:49 +0100	[thread overview]
Message-ID: <20171122095149.71e620f7@jawa> (raw)
In-Reply-To: <fd0bb500-80c4-f317-cc18-f7aaf1344fd8@rock-chips.com>

Hi Kever,

> Hi Lukasz,
> 
> 
>      Thanks for your quick comments on this topic.
> On 11/21/2017 06:29 PM, Lukasz Majewski wrote:
> > Hi Kever,
> >  
> >> Hi Guys,
> >>
> >>       I try to understand why we need to do the relocate in U-Boot.
> >>   From the document README/crt0.S, I think the relocation feature
> >> comes from some SoC have limited SRAM whose size is enough to load
> >> the whole U-Boot, but not enough to run all the drivers.
> >>
> >>       I don't know how many SoCs/Archs still must use this feature,
> >> but I'm sure all
> >> Rockchip SoCs do not need this feature in both SPL and proper
> >> U-Boot, because rockchip using SPL always running in SRAM to init
> >> DDR SDRAM, and after DRAM available always running U-Boot in
> >> DRAM.  
> > I always thought that u-boot needs relocation to place itself in the
> > "known" area of SDRAM (which ends in its very end).  
> 
> I can understand this feature, we always do dram_init_banks() first,
> then we relocate to 'known' area, then will be no risk to access
> memory. I believe there must be some historical reason for some kind
> of device, the relocate feature is a wonderful idea for it.
> 
> In another case, we can also have a choice for not relocate because:
> - we still can have similar 'bdinfo' but without relocate, we can
> init dram info
>      first, and then init SP, malloc area and so on, and then other 
> driver init.
> - All solution for Rockchip SoCs at least have 512MByte DRAM,

As I've written in the other mail - in some scenarios we don't want to
have fragmented memory (e.g. rootfs flashing).

Would this "fragmented" 512 MiB enough to flash all your binaries?

>      which should be enough for U-Boot and could consider to be
> 'known' area,
>      many other SoCs should be similar.
> - Without relocate we can save many step, some of our customer really
>      care much about the boot time duration.
>      * no need to relocate everything
>      * no need to copy all the code
>      * no need init the driver more than once

I do find your arguments perfectly valid (as in the end customer
decides what features are in u-boot).

Please prepare patches and send them for review.

> 
> Thanks,
> - Kever
> >
> > In this way we can upload u-boot proper via SPL to any SDRAM
> > location and then (after relocation) it puts itself to "known"
> > location.
> >
> > (Please check bdinfo command for details).
> >
> > Having u-boot at known location helps with:
> >
> > - Using the non fragmented SDRAM to download updates
> >
> > - Booting u-boot on many different devices (with different amount of
> >    RAM) -> you always download u-boot in the near of SDRAM
> > beginning and then it relocates itself appropriately.
> >
> >
> > However, I'm not sure if we would need relocation in SPL (which
> > runs in SRAM). It seems to me that SPL binary is so board specific,
> > that we shouldn't need such generic feature there.
> >  
> >> There is a CONFIG_SPL_SKIP_RELOCATE for SPL to skip the relocate,
> >> can we have another CONFIG_SKIP_RELOCATE for U-Boot proper?
> >>
> >>
> >> Here is the document from README:
> >>
> >> board_init_f():
> >>           - purpose: set up the machine ready for running
> >> board_init_r(): i.e. SDRAM and serial UART
> >>           - global_data is available
> >>           - stack is in SRAM
> >>           - BSS is not available, so you cannot use global/static
> >> variables, only stack variables and global_data
> >>
> >>           Non-SPL-specific notes:
> >>           - dram_init() is called to set up DRAM. If already done
> >> in SPL this
> >>                   can do nothing
> >>
> >>           SPL-specific notes:
> >>           - you can override the entire board_init_f() function
> >> with your own version as needed.
> >>           - preloader_console_init() can be called here in extremis
> >>           - should set up SDRAM, and anything needed to make the
> >> UART work
> >>           - these is no need to clear BSS, it will be done by
> >> crt0.S
> >>           - must return normally from this function (don't call
> >> board_init_r()
> >>                   directly)
> >>
> >> board_init_r():
> >>           - purpose: main execution, common code
> >>           - global_data is available
> >>           - SDRAM is available
> >>           - BSS is available, all static/global variables can be
> >> used
> >>           - execution eventually continues to main_loop()
> >>
> >>           Non-SPL-specific notes:
> >>           - U-Boot is relocated to the top of memory and is now
> >> running from there.
> >>
> >>           SPL-specific notes:
> >>           - stack is optionally in SDRAM, if CONFIG_SPL_STACK_R is
> >> defined and
> >>                   CONFIG_SPL_STACK_R_ADDR points into SDRAM
> >>           - preloader_console_init() can be called here - typically
> >> this is done by selecting CONFIG_SPL_BOARD_INIT and then
> >> supplying a
> >>                   spl_board_init() function containing this call
> >>           - loads U-Boot or (in falcon mode) Linux
> >>
> >>
> >> Thanks,
> >> - Kever
> >> _______________________________________________
> >> U-Boot mailing list
> >> U-Boot at lists.denx.de
> >> https://lists.denx.de/listinfo/u-boot  
> >
> >
> > Best regards,
> >
> > Lukasz Majewski
> >
> > --
> >
> > DENX Software Engineering GmbH,      Managing Director: Wolfgang
> > Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell,
> > Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email:
> > wd at denx.de  
> 
> 



Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20171122/9f81b57c/attachment.sig>

  parent reply	other threads:[~2017-11-22  8:51 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-21  9:33 [U-Boot] U-Boot proper(not SPL) relocate option Kever Yang
2017-11-21 10:29 ` Lukasz Majewski
2017-11-22  1:59   ` Kever Yang
2017-11-22  7:29     ` Chris Packham
2017-11-22  8:47       ` Lukasz Majewski
2017-11-22  8:45     ` Lokesh Vutla
2017-11-22  8:51     ` Lukasz Majewski [this message]
2017-11-22 10:27     ` Wolfgang Denk
2017-11-25 22:34       ` Simon Glass
2017-11-25 23:31         ` Dr. Philipp Tomsich
2017-11-26 11:38           ` Simon Glass
2017-11-26 13:44             ` Dr. Philipp Tomsich
2017-11-26 13:49               ` Dr. Philipp Tomsich
2017-11-26 14:16             ` Masahiro Yamada
2017-11-27 13:21               ` Wolfgang Denk
2017-11-29 10:10                 ` Masahiro Yamada
2017-11-27 17:13               ` Simon Glass
2017-11-27 18:53                 ` Tom Rini
2017-11-28  9:53                 ` Lukasz Majewski
2017-11-28 11:30                   ` Peter Robinson
2017-11-29 10:11                 ` Masahiro Yamada
2017-11-29 10:48                   ` Joakim Tjernlund
2017-12-02  3:29                     ` Simon Glass
2017-11-27 18:52               ` Tom Rini
2017-11-26 14:04 ` Andreas Färber
  -- strict thread matches above, loose matches on Subject: below --
2017-11-21  9:38 Kever Yang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171122095149.71e620f7@jawa \
    --to=lukma@denx.de \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox