Stewart Smith | 59d3cb4 | 2018-02-12 11:52:12 +1100 | [diff] [blame] | 1 | Introduction to OpenPOWER Firmware |
| 2 | ================================== |
| 3 | |
| 4 | The ``op-build`` project constructs a host firmware image for OpenPOWER |
| 5 | machines. |
| 6 | |
| 7 | Firmware Components |
| 8 | ------------------- |
| 9 | |
Stewart Smith | 9ae4477 | 2018-12-11 11:23:43 +1100 | [diff] [blame] | 10 | Buildroot_ |
Stewart Smith | 59d3cb4 | 2018-02-12 11:52:12 +1100 | [diff] [blame] | 11 | 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 Smith | 9ae4477 | 2018-12-11 11:23:43 +1100 | [diff] [blame] | 13 | 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. |
Stewart Smith | 84fae25 | 2019-07-08 16:58:20 +1000 | [diff] [blame] | 15 | op-build_ |
| 16 | A buildroot overlay that assembles OpenPOWER Firmware images. |
Stewart Smith | 9ae4477 | 2018-12-11 11:23:43 +1100 | [diff] [blame] | 17 | SBE_ |
Stewart Smith | 59d3cb4 | 2018-02-12 11:52:12 +1100 | [diff] [blame] | 18 | the Self Boot Engine is the first unit inside the POWER processor to start |
| 19 | executing. It's job is to set up a core and load Hostboot. |
Stewart Smith | 9ae4477 | 2018-12-11 11:23:43 +1100 | [diff] [blame] | 20 | Hostboot_ |
Stewart Smith | 59d3cb4 | 2018-02-12 11:52:12 +1100 | [diff] [blame] | 21 | Low level system boot firmware. It brings up CPU cores, the OCC, Memory |
| 22 | and hands control over to OPAL (skiboot) |
Stewart Smith | 9ae4477 | 2018-12-11 11:23:43 +1100 | [diff] [blame] | 23 | OCC_ |
Stewart Smith | 59d3cb4 | 2018-02-12 11:52:12 +1100 | [diff] [blame] | 24 | The On Chip Controller is responsible for thermal limits and frequency |
| 25 | management. |
| 26 | OPAL |
| 27 | The OpenPOWER Abstraction Layer, provided by skiboot |
Stewart Smith | 9ae4477 | 2018-12-11 11:23:43 +1100 | [diff] [blame] | 28 | skiboot_ |
Stewart Smith | 59d3cb4 | 2018-02-12 11:52:12 +1100 | [diff] [blame] | 29 | skiboot implements OPAL (the OpenPOWER Abstraction Layer). Skiboot is |
| 30 | boot and runtime firmware and is responsible for bringing up PCI and |
| 31 | providing runtime abstractions to the running OS. |
Stewart Smith | 9ae4477 | 2018-12-11 11:23:43 +1100 | [diff] [blame] | 32 | Linux_ |
Stewart Smith | 59d3cb4 | 2018-02-12 11:52:12 +1100 | [diff] [blame] | 33 | Once skiboot has finished setting up the machine, it hands control over |
| 34 | to a Linux kernel. This kernel provides device drivers and userspace to |
Stewart Smith | 9ae4477 | 2018-12-11 11:23:43 +1100 | [diff] [blame] | 35 | run the bootloader, Petitboot. We maintain our own branch with a minimal |
| 36 | number of patches on top of the latest upstream stable release. |
| 37 | Petitboot_ |
Stewart Smith | 59d3cb4 | 2018-02-12 11:52:12 +1100 | [diff] [blame] | 38 | The bootloader. It is a normal user-space process running on Linux that |
| 39 | searches the system for disks and network devices that it can boot the |
| 40 | OS from. |
Stewart Smith | 84fae25 | 2019-07-08 16:58:20 +1000 | [diff] [blame] | 41 | HCODE_ |
| 42 | Firmware for the power management PPE. Implements heavy lifting for deeper |
| 43 | STOP states. |
Stewart Smith | 9ae4477 | 2018-12-11 11:23:43 +1100 | [diff] [blame] | 44 | |
| 45 | .. _Buildroot: https://github.com/open-power/buildroot |
Stewart Smith | 84fae25 | 2019-07-08 16:58:20 +1000 | [diff] [blame] | 46 | .. _op-build: https://github.com/open-power/op-build |
Stewart Smith | 9ae4477 | 2018-12-11 11:23:43 +1100 | [diff] [blame] | 47 | .. _SBE: https://github.com/open-power/sbe |
| 48 | .. _OCC: https://github.com/open-power/occ |
| 49 | .. _Hostboot: https://github.com/open-power/hostboot |
| 50 | .. _skiboot: https://open-power.github.io/skiboot/ |
| 51 | .. _Linux: https://github.com/open-power/linux |
| 52 | .. _Petitboot: https://github.com/open-power/petitboot/ |
Stewart Smith | 84fae25 | 2019-07-08 16:58:20 +1000 | [diff] [blame] | 53 | .. _HCODE: https://github.com/open-power/hcode |
Stewart Smith | 51cd2b2 | 2019-07-08 16:58:41 +1000 | [diff] [blame] | 54 | |
| 55 | Introductory Videos |
| 56 | ------------------- |
| 57 | |
| 58 | There are a number of good recorded presentations from various conferences |
| 59 | around the world that have overviews and deep dives into various parts of |
| 60 | the firmware stack. |
| 61 | |
| 62 | Here, we present technical presentations that may be useful in learning |
| 63 | about topics relevant to OpenPOWER firmware development. |
| 64 | |
| 65 | For broader OpenPOWER topics, check out the following channels: |
| 66 | |
| 67 | - `OpenPOWER Foundation` <https://github.com/open-power/op-build/pull/2983>`_ |
| 68 | |
| 69 | Introductory |
| 70 | ^^^^^^^^^^^^ |
| 71 | |
| 72 | .. youtube:: https://www.youtube.com/watch?v=a4XGvssR-ag |
| 73 | .. youtube:: https://www.youtube.com/watch?v=hcLhKjxa-40 |
| 74 | |
| 75 | Secure Boot |
| 76 | ^^^^^^^^^^^ |
| 77 | |
| 78 | .. youtube:: https://www.youtube.com/watch?v=hwB1bkXQep4 |
| 79 | |
| 80 | Interfaces and standards |
| 81 | ^^^^^^^^^^^^^^^^^^^^^^^^ |
| 82 | |
| 83 | .. youtube:: https://www.youtube.com/watch?v=2TroT3ORw0s |
| 84 | |
| 85 | OpenCAPI |
| 86 | ^^^^^^^^ |
| 87 | |
| 88 | .. youtube:: https://www.youtube.com/watch?v=h3pLBDCqY-I |
| 89 | |
| 90 | .. youtube:: https://www.youtube.com/watch?v=K4dhx0ctjkQ |
| 91 | |
| 92 | XIVE Interrupt Controller |
| 93 | ^^^^^^^^^^^^^^^^^^^^^^^^^ |
| 94 | |
| 95 | .. youtube:: https://www.youtube.com/watch?v=s88beMQWkks |
| 96 | |
| 97 | Petitboot |
| 98 | ^^^^^^^^^ |
| 99 | |
| 100 | .. youtube:: https://www.youtube.com/watch?v=4JbDb4bRBK4 |
| 101 | .. youtube:: https://www.youtube.com/watch?v=oxmMJMibZQ8 |
| 102 | |
| 103 | Booting Faster |
| 104 | ^^^^^^^^^^^^^^ |
| 105 | |
| 106 | .. youtube:: https://www.youtube.com/watch?v=fTLsS_QZ8us |
| 107 | |
| 108 | Testing |
| 109 | ^^^^^^^ |
| 110 | |
| 111 | .. youtube:: https://www.youtube.com/watch?v=znEM2xqJhBU |
| 112 | |
| 113 | Bringup and customisation |
| 114 | ^^^^^^^^^^^^^^^^^^^^^^^^^ |
| 115 | |
| 116 | .. youtube:: https://www.youtube.com/watch?v=v73Nw7NDxYI |
| 117 | |
| 118 | .. youtube:: https://www.youtube.com/watch?v=dBEBQQYP_eI |