@core: That's just it. Back in the day WE had to program the boot-strap (usually a small program which when booting, allows for serial or in-circuit programming of the "flash" area - but even the boot-strap has to be able to be upgraded.) It normally is programmed at "X" starting location which the processor expects to find the first instruction. The BS then has, in memory, a starting point to pass along to the firmware location and we're off to the races.
With Android, Pi and other systems of the likes, I would "imagine" the BS is just a bios-like set of instructions to pass control over to what ever the boot media is (ie: SD, uSD, onboard flash, etc.) so I can only guess that somehow, someone leaves a bread-crumb for potential developers which tells them "Starting at location "X" on the boot media is where we need to start the boot-loader/manager.
For linux, this means we install grub, syslinux, etc. at that exact location... but how we get those loaders to "talk the language" of the processor is my main curiosity. (ie: A "jump" command in assembly to skip to the next location in memory is going to be somewhat universal in concept, but could be a completely different numerical value for every processor.) Thus, I'm curious when these boards first ship... what was available on the developer's market to help people compile even the boot-loader into the new "language" of the new processor unless there were tool-chains, etc. provided when the boards first launched.
Thanks for the feedback & take care!