[U-Boot] [PATCH v7 13/19] Makefile: u-boot-with-spl.bin: Fix SPL padding

Scott Wood scottwood at freescale.com
Mon Feb 18 19:24:51 CET 2013


On 02/18/2013 12:22:58 PM, Benoît Thébaudeau wrote:
> On Monday, February 18, 2013 7:02:49 PM, Scott Wood wrote:
> > On 02/18/2013 12:00:52 PM, Benoît Thébaudeau wrote:
> > > The only question is if we may need to have an empty gap between  
> the
> > > SPL and
> > > U-Boot within the resulting image. I don't think so since that  
> would
> > > mean that
> > > the target memory device has an area that is not really available  
> at
> > > the
> > > location of this gap.
> >
> > Why not allow that possibility?
> 
> To save a config setting (there are already many for SPL) if this is  
> not
> strictly required, but also for the reason below.
> 
> >  Maybe it's easier for the SPL to load
> > from a particular offset (e.g. NAND starting at the beginning of a
> > block)?
> 
> CONFIG_SPL_MAX_SIZE would be closer to a NAND mapping in that case  
> (e.g. size of
> 1 NAND Flash block) than CONFIG_SPL_PAD_TO (address within RAM that  
> should be
> considered relatively to CONFIG_SPL_TEXT_BASE to get the NAND offset).

CONFIG_SPL_PAD_TO is for the placement of the payload -- and it's not a  
RAM address.  Currently it is a link address (or zero if the linker  
script handles padding, or padding is not required for other reasons).   
With your patch it it is a file offset, IIUC.

CONFIG_SPL_MAX_SIZE is what it says -- the maximum size that the SPL  
may be, ideally to be enforced by the linker script.

They are different.  An SPL wanting the payload to begin as a block  
boundary does not mean the hardware is suddenly capable of loading an  
entire block of SPL.

> Also, CONFIG_SPL_PAD_TO and CONFIG_SPL_MAX_SIZE depend on each other:  
> If both
> can be defined, you may change one forgetting the other one, which  
> could e.g.
> result in an overlapping of SPL and U-Boot that won't show up at  
> build time
> (with CONFIG_SPL_MAX_SIZE = 0x1000 and CONFIG_SPL_PAD_TO =  
> CONFIG_SPL_TEXT_BASE
> + 0x800, the SPL would build fine, and objcopy wouldn't complain).

So add a check that CONFIG_SPL_PAD_TO >= CONFIG_SPL_MAX_SIZE (assuming  
the new interpretation of CONFIG_SPL_PAD_TO as a file offset), and let  
CONFIG_SPL_PAD_TO default to CONFIG_SPL_MAX_SIZE if not set.

-Scott


More information about the U-Boot mailing list