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

Karsten Merker merker at debian.org
Sun Aug 10 23:00:58 CEST 2014


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 :-).

Regards,
Karsten

-- 
1.7.10.4



More information about the U-Boot mailing list