blob: 9fde475f18a743f4a5ea8ec834e2e72533c002a1 [file] [log] [blame]
Stewart Smith59d3cb42018-02-12 11:52:12 +11001Introduction to OpenPOWER Firmware
2==================================
3
4The ``op-build`` project constructs a host firmware image for OpenPOWER
5machines.
6
7Firmware Components
8-------------------
9
Stewart Smith9ae44772018-12-11 11:23:43 +110010Buildroot_
Stewart Smith59d3cb42018-02-12 11:52:12 +110011 We use http://buildroot.net/ as the build system for assembling a firmware
12 image. `op-build` is a "Buildroot overlay". We build a kernel and initramfs
Stewart Smith9ae44772018-12-11 11:23:43 +110013 using buildroot to run the Petitboot boot loader in. We maintain a branch
14 with a minimum number of patches on top of upstream buildroot.
15SBE_
Stewart Smith59d3cb42018-02-12 11:52:12 +110016 the Self Boot Engine is the first unit inside the POWER processor to start
17 executing. It's job is to set up a core and load Hostboot.
Stewart Smith9ae44772018-12-11 11:23:43 +110018Hostboot_
Stewart Smith59d3cb42018-02-12 11:52:12 +110019 Low level system boot firmware. It brings up CPU cores, the OCC, Memory
20 and hands control over to OPAL (skiboot)
Stewart Smith9ae44772018-12-11 11:23:43 +110021OCC_
Stewart Smith59d3cb42018-02-12 11:52:12 +110022 The On Chip Controller is responsible for thermal limits and frequency
23 management.
24OPAL
25 The OpenPOWER Abstraction Layer, provided by skiboot
Stewart Smith9ae44772018-12-11 11:23:43 +110026skiboot_
Stewart Smith59d3cb42018-02-12 11:52:12 +110027 skiboot implements OPAL (the OpenPOWER Abstraction Layer). Skiboot is
28 boot and runtime firmware and is responsible for bringing up PCI and
29 providing runtime abstractions to the running OS.
Stewart Smith9ae44772018-12-11 11:23:43 +110030Linux_
Stewart Smith59d3cb42018-02-12 11:52:12 +110031 Once skiboot has finished setting up the machine, it hands control over
32 to a Linux kernel. This kernel provides device drivers and userspace to
Stewart Smith9ae44772018-12-11 11:23:43 +110033 run the bootloader, Petitboot. We maintain our own branch with a minimal
34 number of patches on top of the latest upstream stable release.
35Petitboot_
Stewart Smith59d3cb42018-02-12 11:52:12 +110036 The bootloader. It is a normal user-space process running on Linux that
37 searches the system for disks and network devices that it can boot the
38 OS from.
Stewart Smith9ae44772018-12-11 11:23:43 +110039
40.. _Buildroot: https://github.com/open-power/buildroot
41.. _SBE: https://github.com/open-power/sbe
42.. _OCC: https://github.com/open-power/occ
43.. _Hostboot: https://github.com/open-power/hostboot
44.. _skiboot: https://open-power.github.io/skiboot/
45.. _Linux: https://github.com/open-power/linux
46.. _Petitboot: https://github.com/open-power/petitboot/