TODO ====== Boot Revealed ====== [[fastboot|Fastboot]] is the Android's bootloader, requires non-standard partitioning scheme, see below [[uboot|uboot]] [[mmc_partitioning|MMC Partitioning Explained]] [[multiboot|MultiBoot]] based on [[http://kexecboot.org|KexecBoot]] [[swarren_brain_dump]] explains a lot about how the device boots from eMMC [[fat_installer|Fat installer]] collects ideas how to painless migrate to u-boot. ====== Boot Process ====== This explanation is based on http://www.muromec.org.ua/2011/03/blog-post.html, and updated by swarren. * After power-on, a the embedded controller (EC/NVEC) starts running. * If Ctrl-Esc is pressed, the EC signals this to Tegra by pulling a Tegra pin to a specific state, requesting recovery mode. * The EC either powers on Tegra, or releases it from reset. * A ROM bootloader integrated into Tegra IC starts. * If recovery mode was requested, the ROM bootloader loader switches to RCM (ReCovery Mode) (USB 0x0955:0x7820) and starts to receive commands on its mini-USB receptable, [[putusb]] and [[nvflash]] are the tools that can communicate with it in this mode. * If the boot is to continue, the bootloader assess some fuse bits (and/or strapping pins) to see where it should boot from. On ac100 that's internal eMMC. * It searches for BCT (Boot Config Table) and for PT (Partition Table) on the eMMC and finds EBT (4th) partition there. (swarren: I'm not sure if the bootloader actually uses the PT or not; it may get the bootloader details from fields in the BCT). * Vendors fill EBT with Fastboot bootloader which then reads an image (in [[abootimg]] format) from the LNX (6th) (or if the "Home" button is pressed SOS (5th)) partition, copies the kernel and initramfs to the approprieate RAM locations and starts it supplying default command line parameters (with ATAGs).