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.
Some vendors already provide U-Boot environment variables for the load
addresses, and some for the load commands themselves, but I have not
found much consistency between them. One example is the Genesi Efika MX
(mx51), which provides:
${loadcmd}
${kerneladdr}
${ramdiskaddr}
By providing the kernel and initrd U-Boot images in a boot.scr, you can
load and boot the desired kernel with no other board specific knowledge
(specific addresses or devices).
Highbank provides some similar load address definitions, but with
different names, i.e.,
${ramdisk_addr_r}
${kernel_addr_r}
${fdt_addr_r}
Other boards provide similar features, including some (e.g., Trim-Slice)
that 'scan' through a list of devices until a boot.scr is found, load
it, and then boot using that script, but the load addresses are literals.
Does anyone else think it would be useful to include a 'standard' set of
such definitions in U-Boot (default) that could be used to abstract the
board/vendor specific details and provide a more consistent user
experience? If so, could this list be used to help define such a set,
and encourage its use across ARM systems and distros?
If this has already been discussed, perhaps someone could provide a link
to the thread.
Thank you for your consideration,
d.marlin