On Sat, Aug 03, 2013 at 11:08:57AM +0100, Peter Maydell wrote:
On 3 August 2013 08:11, Dennis Gilmore dennis@ausil.us wrote:
when it comes to memory addressing a distro and user shouldn't need to know anything. Ideally u-boot will auto allocate addresses based on the size of loaded objects. starting with a base address internal to u-boot you load a kernel, when loading an initramfs u-boot automatically calculates an address that ensures it does not overlap with the kernel. same for a fdt if loaded. I say auto calculated because what we think today will be enough room may not be tomorrow, dynamically calculating gives the flexibility for whatever may come.
I looked into doing this for QEMU's boot loader once. I wasn't able to come up with a solution because there's no way given a zImage to determine how big it will be uncompressed, so all you can do is make a best-guess about where to put other things. Maybe I missed a way to do this cleanly though?
Well, that depends on how repellent using a not-raw-zImage format is, even if you don't have to know the load address at creation time. One can create a FIT image with kernel (or N kernels), N device tree blobs and ramdisk (or N ramdisks), and have U-Boot handle the rest of the work. All of that it is there today, aside from having boards enable FIT images by default. Having the right device tree be picked and used is one of those "almost there" things.