10-09-2019, 03:39 PM
I think, the first thing, that needs to be clarified is distinguishing between the ROM code boot ordering and uboot ordering and therefore - between where uboot could be placed and where OS could. the term "hardcoded" is confusing, basically it makes sense only if it refers to the ROM code, - the only "hardcoded" thing in this chain. its boot ordering is given in the rk3399 manual and I posted it above. those places are where uboot could be placed and the order given is the order of searching for firmware, not OS. this thing is important because it's where users can place their uboot. flashing firmware along with the OS is the unfortunate way to do stuff on SBCs. but on the other hand, people want their OS to be on USB sticks or even SATA/NVMe SSDs, but uboot can't be there, and that's why it's important to distinguish for everybody to get it (finally). so, you need to have uboot at one of those and only those interfaces to get booting happen. and the order will be that and can't be changed. the next thing is clarifying of what uboot can boot (the OS) from. here, the order is not as important since you can change it, in boot.scr or whatever uboot script/commands. so, the answer from where uboot can boot the OS is those interfaces, that are supported by the provided uboot version. as I understand, it can do USB but can't PCIe. and the orders currently mentioned in the wiki most probably refer to the way uboot scripts/boot commamds are currently configured (however I think it's a mix of that and the ROM code order, because I doubt uboot will search linux on SPI).
ANT - my hobby OS for x86 and ARM.