On 07/25/2012 05:13 PM, David Marlin wrote:
I'm not sure if this has been discussed before, but in working with various ARM systems (Panda, Trim Slice, Highbank, etc.) I have noticed that there is little consistency in the load addresses for kernel, initrd, and device tree, or the commands and devices used. While it may not be practical to always use the same physical addresses, it seems it might be possible to set some 'standard' U-Boot environment variables or macros to provide a more consistent user experience when working on various boards from different vendors.
Related to this topic, I recently sent a U-Boot patch that creates an environment variable indicating which SoC/CPU/board U-Boot is running on. This can be useful e.g. when writing generic boot scripts that need to load a device tree from the filesystem; instead of:
ext2load mmc 0:1 ${fdt_load} /boot/tegra20-trimslice.dtb
you can now write:
ext2load mmc 0:1 ${fdt_load} /boot/${soc}-${board}.dtb
which at least works across all Tegra boards in mainline U-Boot, and could easily work across any arbitrary board.
The relevant commits are:
b40a858 tegra: enable CONFIG_ENV_VARS_UBOOT_CONFIG 2c77c30 Add env vars describing U-Boot target board
which are in git://git.denx.de/u-boot-tegra.git master
... but should be pulled into the main U-Boot soon enough.
Related to this topic also are:
93d87d5 tegra: define fdt_load/fdt_high variables 4878343 tegra: bootcmd enhancements