Anatomy of an application-processor system

What sits around the processor on a Linux board, and how it starts up, from power-on to a login prompt.

Core

How an application-processor board boots, and what sits around the processor Booting is a chain: the on-chip boot ROM loads a first-stage loader, which sets up DRAM and loads a full bootloader such as U-Boot; that loads the Linux kernel and its device tree, and the kernel mounts the root filesystem. Around the processor sit external DRAM, boot storage, a PMIC with sequenced rails, a crystal oscillator and a reset circuit. Boot chain, from power-on each stage loads the next, then the kernel mounts the root filesystem Boot ROM on the chip First-stage loader Bootloader such as U-Boot Linux kernel + device tree Root filesystem mounts sets up DRAM, then loads the full bootloader Around the processor, on the board PMIC several sequenced rails Crystal oscillator Reset circuit Application processor External DRAM DDR3L, DDR4 or LPDDR4/4X Boot storage eMMC, SD card, QSPI NOR or NAND flash The rails must come up, and go down, in a specified order. Device tree: on most embedded Arm and RISC-V boards, it describes the board's memory, buses and attached peripherals to the kernel, so one kernel binary can support many boards.
Each boot stage loads the next, from the on-chip boot ROM to the Linux kernel, which then mounts the root filesystem; DRAM, boot storage, a PMIC, a crystal and a reset circuit surround the processor.

Key points

  1. A typical application-processor board carries external DRAM (DDR3L, DDR4 or LPDDR4/4X), non-volatile boot storage (eMMC, SD card, QSPI NOR or NAND flash), a PMIC supplying several sequenced rails, a crystal oscillator and a reset circuit.12
  2. Booting is a chain: an on-chip boot ROM loads a small first-stage loader, which initialises DRAM and loads a full bootloader such as U-Boot; that loads the Linux kernel and its device tree, and the kernel then mounts the root filesystem.345
  3. On most embedded Arm and RISC-V Linux systems, a device tree describes the board's hardware (memory, buses, attached peripherals) to the kernel, so one kernel binary can support many boards. Some standardised systems, such as Arm servers, use ACPI instead.6789
  4. Application processors require their supply rails to come up, and go down, in a specified order; PMICs are often paired with a specific processor family to handle this.110