All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] U-Boot proper(not SPL) relocate option
@ 2017-11-21  9:33 Kever Yang
  2017-11-21 10:29 ` Lukasz Majewski
  2017-11-26 14:04 ` Andreas Färber
  0 siblings, 2 replies; 26+ messages in thread
From: Kever Yang @ 2017-11-21  9:33 UTC (permalink / raw)
  To: u-boot

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.

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

^ permalink raw reply	[flat|nested] 26+ messages in thread
* [U-Boot] U-Boot proper(not SPL) relocate option
@ 2017-11-21  9:38 Kever Yang
  0 siblings, 0 replies; 26+ messages in thread
From: Kever Yang @ 2017-11-21  9:38 UTC (permalink / raw)
  To: u-boot

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.

There is a CONFIG_SPL_SKIP_RELOCATE for SPL to skip the relocate,
can we have another CONFIG_SKIP_RELOCATE for U-Boot proper?

If we enable relocate in SPL, we init serial driver 4 times not 
including debug uart.
- before and after relocate in SPL, before and after U-Boot.


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

^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2017-12-02  3:29 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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
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
2017-11-21  9:38 Kever Yang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.