tl;dr: Assuming I'd had a BeagleBone perfectly manufactured from the open-source schematics+layouts, what would be necessary to get it to the same level of functionality as a newly-unboxed BeagleBone?
Alternatively, how would one unbrick a BeagleBone that refuses to boot from either flash or eMMC, assuming the hardware was all working perfectly.
Follow-up question is here.
I've been experimenting with basic embedded boards - hand-soldered low-end ARM/AVR processors which are flashed directly.
If I wanted to make a working clone of a BeagleBone, what would be necessary to get it to the level of functionality that they have out-of-the-box?
So after spending ridiculous amounts of time and money on manufacturing a clone of a <$100 off-the-shelf board, what would I then need to do in order to be able to just plug an SD card in, hold down the boot-select button, and boot the board off the SD card?
I'm assuming that before U-boot on the SD-card / eMMC is invoked, there is an earlier bootloader which is flashed onto the Sitara.
So the order would be:
Image on Sitara is run from flash, and configures a serial UART interface, external hardware, etc.
Depending on state of boot selection button, that image either loads U-boot from eMMC, or from SD card, and jumps to it.
U-boot then loads kernel and initrd, passes device-tree data and command-line to it, then jumps into it.
Linux boots
"Profit!"
On these more complex boards, how would that first-stage bootloader be flashed on? How could I use a BeagleBone to develop and test my own first-stage bootloader?
Ok, I've found that there is some ROM code on the Sitara, which checks a few bytes on the eMMC and boots if it appears valid. It checks the SD card if the eMMC doesn't appear valid.
My question now, which I will re-ask as a separate question: Does this ROM code come on the Sitara itself, or otherwise how would one obtain and flash it? Is it open source? Is it a binary blob in the Sitara SDK? Is it immutable and built into the Sitara before leaving TI's factory?