[U-Boot] [RFC/PATCH] sunxi: Populate the default environment for sunxi-based systems

Hans de Goede hdegoede at redhat.com
Mon Aug 11 18:22:09 CEST 2014


Hi,

On 08/10/2014 11:00 PM, Karsten Merker wrote:
> Hello,
> 
> in the following email you can find a patch to populate the
> default environment for sunxi-based systems about which I would
> apprechiate your opinion.
> 
> With the current progress in mainlining sunxi platform support,
> mainline u-boot will probably soon be able to replace
> u-boot-sunxi (https://github.com/linux-sunxi/u-boot-sunxi) for
> many use cases.  Currently the default environment in mainline
> u-boot for sunxi-based systems is rather bare; the only
> predefined variable is bootm_size (which is required for proper
> initrd- and dtb-relocation).  U-boot-sunxi predefines a set of
> environment variables which are commonly used by existing boot
> scripts and also offers a predefined bootcmd for automatic search
> and execution of bootscripts.  I think that to facilitate using
> mainline u-boot as a drop-in replacement for u-boot-sunxi,
> mainline u-boot should provide similar defaults.
> 
> The original environment in u-boot-sunxi was written for an older
> u-boot release and does not make use of modern u-boot features
> (e.g. it uses hardcoded filesystem-specific load commands), so
> just copying the environment 1:1 to mainline u-boot does not make
> sense IMHO.  My patch tries to implement the minimum required for
> autobooting existing boot scripts with more modern u-boot functions.
> 
> In addition to that, the patch defines some standard environment
> variables which are commonly defined on other u-boot platforms,
> but which have not been defined by u-boot-sunxi, in particular
> kernel_addr_r, ramdisk_addr_r and fdt_addr_r.  Debian supports a
> wide range of armhf system and tries to unify support for the
> different platforms as good as possible.  Having the same
> predefined variables with (platform-specific) load addresses on
> all platforms would help us a lot with regard to generic boot
> scripts and simplified user documentation.
> 
> Regarding the actual values for the various load addresses I am
> not in all cases perfectly sure about the best variant. 
> Following is the reasoning for my choices:
> 
> - fdt_addr_r
> 
>   U-boot-sunxi loads the FEX binary (Allwinner's proprietary
>   hardware description format for their android kernels, i.e.
>   a file functionally roughly equivalent to a dtb) to address 
>   0x43000000, so I guess using the same for the dtb makes
>   sense.
> 
> - scriptaddr
> 
>   has historically been expected to be 0x44000000; some old boot
>   scripts assume this address.
> 
> - kernel_addr_r and ramdisk_addr_r
> 
>   Allwinner has historically loaded their kernels to 0x48000000
>   (system specific kernels with all drivers compiled in, no initrd).
> 
>   Debian has been using 0x46000000 for the kernel and 0x48000000
>   for the initrd. These values work well in practice, so I have
>   used them in the patch, but if there are reasons to change them,
>   I am happy to do so.
> 
> Comments welcome :-).

Thanks for this patch, but this does the same as a series
I've already pending, see:

https://github.com/jwrdegoede/u-boot-sunxi/commits/next

I've not yet send a pull-request for this because it uses the new
generic $bootcmd support:
https://github.com/jwrdegoede/u-boot-sunxi/commit/34e421a155c83c52f6e6edb2594458af27ef7517

This commit has just been merged by Tom Rini, so right now
these patches are good to go. I'll send a pull-request for them
soon.

Let me know if somehow these patches won't work for Debian. One of the
goals of the generic $bootcmd support is that distributions can just
drop an extlinux.conf in the boot partition, and then u-boot will
automatically find it and do the right thing.

Regards,

Hans


More information about the U-Boot mailing list