I'm trying to understand the requirements for the load address used in u-boot when booting the kernel, beyond just being a address in ram.
I have a OrangePi Zero H2+ booting using:
uImage: 0x4200:0000
DTB: 0x4300:0000
For the Allwinner H2+ (H3) the DDR RAM is mapped to 0x4000:0000 - 0xBFFF:FFFF.
So using the 0x4000:0000 range makes sense that the load command is loading the files into memory to be booted. However, I don't understand any address offset requirements within the RAM address space.
- For uImage I got 0x4200:0000 from Armbian U-Boot messages, I've been using a Armbian boot as a reference.
- I also used 0x4200:0000 for LOADADDR passed to the kernel `make uimage` command. I assume this should be the same as uses in U-Boot but that's an assumption.
- For the DTB file I just picked 0x4300:0000 as another address in RAM past the end of the kernel.
In searching I've been mostly finding examples of addresses, but no explanation of the offsets used within the ram space. Are there requirements that should be followed with these or does the kernel relocate off somewhere else and take over, such that the initial offsets don't matter? Why does the kernel uImage need the address baked in?

