I'm trying to flash AOSP onto a Nvidia Tegra K1 dev board: https://developer.nvidia.com/jetson-tk1 Every guide that I've seen to flash Android onto a device requires an existing Android installation. For example, after you build AOSP, you have to put the device into fastboot mode by running
$adb reboot bootloader
As the Jetson does not come with an Android installation, is there a way that factory manufacturers flash their SoCs for the very fist time that I could use?
I have found Jedroid, a Lollipop Android version built specifically for the Jetson, but it is basically composed of precompiled system.img binaries and I need to be able to make a custom Android ROM for my system. I tried running $adb reboot bootloader
and then flashing aosp from there, but fastboot hangs and won't detect any device, even when the Jetson is connected through USB.
Many android device bootloaders will enter fastboot mode if a particular key is held down during power-on, which probably has an associated spring-pin test point on the bare board. For an evaluation board, it might be a jumper instead. Lack of a valid image header on the expected flash partitions could also be a trigger.
As to how the bootloader gets on the NAND/eMMC in the first place, it could be flashed before soldering it on the board, or downloaded with some unique interface such as a lower level bootloader in ROM onboard the SOC, which may be willing to accept code over USB or a serial interface, or in some cases boot from an SD card slot.
JTAG/SWD can be another option, especially for "brick" recovery.
Essentially anything below fastboot level is device unique, and even fastboot is not a supported method on all devices commonly running Android today.