U-Boot

From Dejvino's Knowledge Base
Revision as of 19:44, 28 March 2020 by Dejvino (talk | contribs)
Jump to navigation Jump to search

Linux friendly bootloader. Used in various ARM devices like PinePhone and Orange Pi.

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

Device Tree

  • DTB (Device Tree Blob) TODO: Enhance
  • ITB TODO: ???
  • FIT (Flat Image Tree) TODO: Enhance

Boot sequence

  1. Device's built-in boot code is executed (BootROM)
    1. It searches connected storage devices for a bootloader signature at a predefined address
    2. If found it loads the bootloader into SRAM and executes it
  2. TPL does minimal initialization, loads and executes SPL
  3. SPL does more extended initialization, loads and executes U-Boot
  4. U-Boot finishes initialization, provides a command prompt / searches for OS images / boots them

bootcmd

TODO: Describe boot script command. Uses boot.scr (?)

Distro Boot

Source: README.distro

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, syslinux (extlinux).

Enabled by: CONFIG_DISTRO_DEFAULTS=y

U-Boot searches for /extlinux/extlinux.conf then /boot/extlinux/extlinux.conf on disk, or pxelinux.cfg/default over the network.


Related

External

  • Repository: [2]
    • Distro boot doc [3]
  • Presentation of U-Boot and porting to devices [4]
  • Get More out of U-Boot (introduction, partitioning, etc.) [5]
  • Presentation on TPL: SPL loading SPL (and what is SPL?) [6]
  • Distro boot Linux: [7]