[U-Boot] RFC: U-Boot OneNAND IPL TEXT_BASE

Marek Vasut marek.vasut at gmail.com
Sun May 2 08:39:19 CEST 2010


Dne Ne 2. května 2010 05:54:41 Kyungmin Park napsal(a):
> Hi,
> 
> Which CPU do you use? In most ARM cpu, CPU load the IPL into its
> internal SRAM, and runs at here.
PXA270 ... the BootRAM is mapped to 0x0 and the code runs from there.
> But in your case it's not. So you maybe redefine IPL address.
> 
> Instead of modifying the config.mk, how about to define IPL_TEXT_BASE.
> 
> e.g.,
> 
> In OneNAND IPL code,
> 
> #ifndef BOARD_IPL_TEXT_BASE
> #define ONENAND_IPL_TEXT_BASE BOARD_IPL_TEXT_BASE
> #endif

That won't help -- TEXT_BASE is used while compiling start.S (to setup stack 
under TEXT_BASE) and the config.mk prepares the gcc options for start.S (the 
TEXT_BASE is defined in the gcc options).So modifying config.mk is unavoidable I 
fear.

The thing we can do is define STACK_TOP_BASE and that'd certainly do the trick! 
This would allow me to point stack into SRAM, while running the IPL code from 
BootRAM. Of course, in case STACK_TOP_BASE wasn't defined, it'd fall back to the 
old code in start.S. This would of course work without modifying config.mk and I 
start to like such a solution.

Hm?

> 
> load IPL code ONENAND_IPL_TEXT_BASE instead of current code.
> 
> Thank you,
> Kyungmin Park

Thanks!
> 
> On Sat, May 1, 2010 at 11:48 AM, Marek Vasut <marek.vasut at gmail.com> wrote:
> > Hey,
> > 
> > I've been tinkering with OneNAND IPL in uboot. I found out it wan't to
> > load itself to the address specified in board/$(BOARDDIR)/config.mk .
> > That's fine in most cases, but in my case that wasn't possible.
> > 
> > In my case, SDRAM init didn't fit into the IPL, so I had to copy U-Boot
> > into SRAM, then execute it and let it relocate itself into SDRAM. One
> > more time: IPL: OneNAND->SRAM
> > U-Boot: SRAM->SDRAM
> > 
> > It all works fine, but when compiling the IPL, I had to alter TEXT_BASE
> > not to point into SDRAM but SRAM too (because of stack). I introduced a
> > variable called IPL which allows using config.mk from (for example)
> > onenand-
> > ipl/board/$(BOARDDIR)/config.mk rather than the
> > board/$(BOARDDIR)/config.mk one, which is in my opinion a correct
> > behaviour.
> > 
> > Any opinions?
> > 
> > Thanks in advance.
> > 
> > diff --git a/config.mk b/config.mk
> > index 73b5195..8639580 100644
> > --- a/config.mk
> > +++ b/config.mk
> > @@ -130,9 +130,13 @@ BOARDDIR = $(VENDOR)/$(BOARD)
> >  else
> >  BOARDDIR = $(BOARD)
> >  endif
> > +ifdef  IPL
> > +sinclude $(TOPDIR)/$(IPL)/board/$(BOARDDIR)/config.mk  # include IPL
> > specific rules
> > +else
> >  ifdef  BOARD
> >  sinclude $(TOPDIR)/board/$(BOARDDIR)/config.mk # include board specific
> > rules endif
> > +endif
> > 
> >  ########################################################################
> > #
> > 
> > _______________________________________________
> > U-Boot mailing list
> > U-Boot at lists.denx.de
> > http://lists.denx.de/mailman/listinfo/u-boot


More information about the U-Boot mailing list