# 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.

Page: https://dharanova.com/learn/anatomy-of-an-mpu-system · Track: Think · Level: Core · Facts last checked 6 October 2026

Read first: [Microcontroller or microprocessor?](https://dharanova.com/learn/mcu-vs-mpu.md), [Chip, module, SoM, dev board, SBC](https://dharanova.com/learn/chip-som-board.md)

Diagram: Top: four boot stages, each loading the next: the on-chip boot ROM; a first-stage loader, which sets up DRAM and loads the full bootloader; a bootloader such as U-Boot; the Linux kernel with its device tree. The kernel then mounts the root filesystem. Below: the application processor wired to a PMIC with several sequenced rails, a crystal oscillator and a reset circuit on one side, and external DRAM (DDR3L, DDR4 or LPDDR4/4X) and boot storage (eMMC, SD card, QSPI NOR or NAND flash) on the other. A note explains the device tree used on most embedded Arm and RISC-V boards.

## 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. [1][2]
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. [3][4][5]
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. [6][7][8][9]
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. [1][10]

## Where to go next

- [Application cores and microcontroller cores on one chip](https://dharanova.com/learn/heterogeneous-socs.md): Many processors that run Linux also include a small microcontroller core, which handles time-critical work while Linux does the rest.
- [Embedded Linux](https://dharanova.com/learn/embedded-linux.md): Running Linux on a device usually means building or adapting your own small Linux system, and keeping it updated for as long as the product is in use.

## Sources

1. [i.MX 8M Mini Hardware Developer's Guide (IMX8MMHDG) Rev. 4.1](https://community.nxp.com/pwmxy87654/attachments/pwmxy87654/imx-processors/218788/1/IMX8MMHDG-NEW.pdf), NXP
2. [Raspberry Pi Compute Module 5 datasheet](https://datasheets.raspberrypi.com/cm5/cm5-datasheet.pdf), Raspberry Pi
3. [U-Boot: Booting from TPL/SPL](https://docs.u-boot.org/en/latest/usage/spl_boot.html), U-Boot project
4. [Trusted Firmware-A: Firmware Design](https://trustedfirmware-a.readthedocs.io/en/latest/design/firmware-design.html), TrustedFirmware.org
5. [The kernel's command-line parameters (root=)](https://docs.kernel.org/admin-guide/kernel-parameters.html), kernel.org
6. [Devicetree Specification](https://www.devicetree.org/specifications/), devicetree.org
7. [Linux and the Devicetree](https://docs.kernel.org/devicetree/usage-model.html), kernel.org
8. [ACPI on Arm systems](https://docs.kernel.org/arch/arm64/arm-acpi.html), kernel.org
9. [RISC-V Kernel Boot Requirements and Constraints](https://docs.kernel.org/arch/riscv/boot.html), kernel.org
10. [i.MX 8M Mini Applications Processor Datasheet for Consumer Products (IMX8MMCEC) Rev. 2](https://www.nxp.com/docs/en/data-sheet/IMX8MMCEC.pdf), NXP
