ARM Installation Guide/Some hardware and booting background
1 The anatomy of an ARM computer
1.1 System on a chip
In most of the ARM computers, the Central Processing Unit (CPU) and many peripherals are consolidated into a single Integrated Circuit "chip" (IC). Such a chip is conventionally called: 'System On A Chip' (SoC); because it provides all common functionality of a typical personal computer system. Besides the CPU, it often contains:
- A graphics processing unit (GPU)
- A display controller (eg: HDMI,VGA)
- One or more USB host controllers
- An USB OTG/Device controller
- An SD-card controller
- A serial port controller
- Other miscellaneous peripherals
1.2 Boot ROM and booting
Most Systems on a Chip have machine code instructions hard-wired as Read-Only Memory (ROM), which are the first instructions executed when the machine is powered-on. Conventionally, this hardware is known as: 'boot-rom' or 'BROM'; and the process is referred to as: the 'boot0' boot stage.
The BROM is responsible for initializing the SoC hardware, and locating and fetching the user-replaceable second-stage boot-loader ('boot1') from among a set of predefined storage devices (eg: internal flash, removable SD-card). Often it is also possible to load a boot-loader via a standard 'Universal Serial Bus On-the_Go' (USB-OTG) or RS232 (serial) port.
The boot-loader then does some more (device specific) hardware initialization, then loads the operating system, and cedes control to the kernel.
In order for the BROM to detect a boot-loader on some external storage device, the device must be supported by the BROM. For instance, the Allwinner SoC BROM supports booting from eMMC/SD/microSD cards and SPI/NAND flash chips, but not SATA hard disks and solid-state drives.
The set of storage devices and their order of precedence, can often be configured by hardware and/or software.