On Tue, 24 Aug 2010, Loïc Minier wrote:

> On Tue, Aug 24, 2010, Dave Martin wrote:
> > Couldn't we simply use the kernel tree "make uImage" rule, and put the
> > uImage in the kernel binary packages, rather than reduplicating this
> > elsewhere?  Of course, which kernel tree targets to build may then
> > become board-specific, which might be seen as a disadvantage.
> 
>  ISTR someone commented upstream a long time ago that the uImage target
>  was clutter and that u-boot should learn to cope with zImage as other
>  bootloaders do.

This could have been me, or if it wasn't me then I would have strongly 
approved.  I even posted some notes about the de facto header that is 
found at the front of the zImage binary (that was many years ago and 
therefore I can't find an archive link right now):

   Offset into zImage    Value                 Description
   0x24                  0x016F2818            Magic number used to identify 
this is an ARM Linux zImage
   0x28                  start address         The address the zImage starts at
   0x2C                  end address           The address the zImage ends at

The start and end offsets can be used to validate the length of the 
provided zImage (size = end - start).

The zImage code is (in most cases) Position Independent Code (PIC) so 
may be loaded anywhere within the available address space. The start 
address in that case is zero.

If U-Boot really insists on its uImage format in flash, then I really 
think that the mkimage functionality could be made into U-Boot itself.

>  Problem with the uImage target is that we want different uImages built
>  from the same kernel flavours, and it's not really worth having one
>  binary kernel package per board, it's nicer to have a single binary
>  kernel package for e.g. all of omap3 and convert the zImage to what's
>  needed for a specific board at package installation time.

Like I said though, if all of OMAP3 can share the same kernel image, the 
corresponding uImage is likely to be identical too.

>  What might make sense is keeping the data in the kernel though:
>  certainly the uImage and uInitrd load addresses are best kept within
>  the kernel?

No.  The initrd load address has to be passed to the kernel and that 
should remain that way so to preserve flexibility in its placement.  The 
zImage can be loaded anywhere -- it is just mkimage that insists on a 
load address (and that's a problem with U-Boot not the kernel).

> > I've tended to treat the kernel tree rule as the canonical way of
> > generating a valid uImage, though maybe not everyone will agree with
> > that.
> 
>  It would probably be valid for daily kernel builds; but it's only one
>  of the use cases; any boot media generation (e.g. linaro-media-create
>  or live-helper, or debian-cd, or debian-installer) couldn't use that,
>  and it doesn't make sense for the flash-kernel use case either.  There
>  even are some platforms which support both zImage and uImage (e.g.
>  imx51/redboot and imx51/u-boot), albeit Linaro isn't too interested in
>  these the plan needs to support them if we want it to go in distros.

It would be great if we agreed that U-Boot should be able to cope with 
zImage directly.  Adding the necessary support to U-Boot is trivial.  


Nicolas
_______________________________________________
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev

Reply via email to