Difference between revisions of "U-Boot"
| Line 21: | Line 21: | ||
# SPL does more extended initialization, loads and executes U-Boot | # SPL does more extended initialization, loads and executes U-Boot | ||
# U-Boot finishes initialization, provides a command prompt / searches for OS images / boots them | # U-Boot finishes initialization, provides a command prompt / searches for OS images / boots them | ||
| + | {{Todo|Verify TPL vs SPL}} | ||
=== Distro Boot === | === Distro Boot === | ||
| Line 52: | Line 53: | ||
* Presentation on TPL: SPL loading SPL (and what is SPL?) [http://www.denx.de/wiki/pub/U-Boot/MiniSummitELCE2013/tpl-presentation.pdf] | * Presentation on TPL: SPL loading SPL (and what is SPL?) [http://www.denx.de/wiki/pub/U-Boot/MiniSummitELCE2013/tpl-presentation.pdf] | ||
* Distro boot Linux: [https://developer.toradex.com/knowledge-base/distro-boot-linux] | * Distro boot Linux: [https://developer.toradex.com/knowledge-base/distro-boot-linux] | ||
| + | * Syslinux/Extlinus [https://wiki.syslinux.org/wiki/index.php?title=SYSLINUX] | ||
Revision as of 20:19, 28 March 2020
Linux friendly bootloader. Used in various ARM devices like PinePhone and Orange Pi.
Contents
Boot process
Definitions
General
- SPL (Secondary Program Loader) is a small binary, generated from U-Boot source, that fits in the SRAM and loads the main U-Boot into system RAM. [1]
- TPL (Tertiary Program Loader) is a tiny SPL which loads moderate-sized middle layer called TPL and that loads the full U-Boot into RAM.
Board-specific
- ATF (ARM Trusted Firmware)
Device Tree
- DTB (Device Tree Blob) TODO: Enhance
- ITB TODO: ???
- FIT (Flat Image Tree) TODO: Enhance
Boot sequence
- Device's built-in boot code is executed (BootROM)
- It searches connected storage devices for a bootloader signature at a predefined address
- If found it loads the bootloader into SRAM and executes it
- TPL does minimal initialization, loads and executes SPL
- SPL does more extended initialization, loads and executes U-Boot
- U-Boot finishes initialization, provides a command prompt / searches for OS images / boots them
TODO: Verify TPL vs SPL
Distro Boot
Source: README.distro [2]
Standardized way of booting a Linux distribution from U-Boot, without needing to build the distribution specifically for the target device. A distribution needs to provide its own generic bootloader, e.g. syslinux (extlinux).
Enabled by: CONFIG_DISTRO_DEFAULTS=y
Devices order
- Internal flash storage (e.g. eMMC)
- External flash storage (e.g. SD card)
- USB storage
- Network storage obtained from DHCP
Note that the first two might be swapped, depending on the configuration. Often it makes more sense to give priority to a removable media before booting from the internal storage.
For each of these devices, U-Boot will search in the first partition marked with a bootable flag (via the MBR bootable flag, or GPT legacy_bios_bootable attribute). In its absence, it will fall back to looking at the first valid partition. Disto Boot recognizes FAT and ext2/3/4 filesystems.
U-Boot searches for /extlinux/extlinux.conf then /boot/extlinux/extlinux.conf on disk, or pxelinux.cfg/default over the network. The content is as recognized by syslinux (extlinux). It also supports its own bootcmd format in boot.scr file.