I love these kinds of writeups, thank you! How did you determine what addresses to read things into? (the chainloaded bootloader, then its initrd/ FDT / etc.).
Mainly by looking at what addresses the original bootloader loads them into. The addresses don't matter too much, as long as you load them into valid memory, since for most you pass a reference to them anyway in later steps.
I'm a hobbyist that's been tinkering with uboot now and again for years and can never figure out the right addresses for stuff, or where / how to learn this.
I assume this memory is subsequently released for the OS? Or does the OS just work around it?
Are you hobbling your runtime experience in some way if you load to the wrong address?