[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