TODO

Boot Revealed

Fastboot is the Android's bootloader, requires non-standard partitioning scheme, see below

uboot

MMC Partitioning Explained

MultiBoot based on KexecBoot

swarren_brain_dump explains a lot about how the device boots from eMMC

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).
Log In