From 8a73d7ee402dde66210900e8d373e3c2757d5e70 Mon Sep 17 00:00:00 2001 From: Benjamin O'Brien Date: Tue, 30 Jun 2026 08:58:19 -0400 Subject: [PATCH 1/4] feat: add raspberry pi 5b to documentation This commit adds the RPi 5B board for RAM sizes 1, 2, 4, 8, and 16GB. Signed-off-by: Benjamin O'Brien --- Hardware/Rpi5.md | 96 +++++++++++++++++++++++++ projects/microkit/manual/2.2.0/index.md | 30 ++++++++ 2 files changed, 126 insertions(+) create mode 100644 Hardware/Rpi5.md diff --git a/Hardware/Rpi5.md b/Hardware/Rpi5.md new file mode 100644 index 00000000000..fd3858df0fa --- /dev/null +++ b/Hardware/Rpi5.md @@ -0,0 +1,96 @@ +--- +arm_hardware: true +cmake_plat: rpi5 +xcompiler_arg: -DAARCH64=1 -DRPI5_MEMORY=<1024,2048,4096,8192,16384> +platform: Raspberry Pi 5B +arch: ARMv8A +virtualization: true +iommu: false +soc: BCM2712 +cpu: Cortex-A76 +verification: [AARCH64] +Contrib: 'Hensoldt and ARM Research IceCap' +Maintained: seL4 Foundation +parent: /Hardware/ +SPDX-License-Identifier: CC-BY-SA-4.0 +SPDX-FileCopyrightText: 2020 seL4 Project a Series of LF Projects, LLC. +--- + +# Raspberry Pi 5 Model B + +{% include hw-info.html %} + +## Serial connection + +Serial TX and RX are located at GPIO pins 14 and 15 respectively. + +## U-Boot + +In order to build U-Boot for the Raspberry Pi 5B, run the following commands: +```bash +git clone https://github.com/u-boot/u-boot.git u-boot +cd u-boot +make CROSS_COMPILE=aarch64-linux-gnu- rpi_arm64_defconfig +make CROSS_COMPILE=aarch64-linux-gnu- +``` + +In the `u-boot` directory you should now see the U-Boot image `u-boot.bin` indicating that U-Boot has successfully compiled. + +More information regarding U-Boot support for the Raspberry Pi can be found [here](https://u-boot.readthedocs.io/en/latest/board/broadcom/raspberrypi.html). + +## SD card setup + +The RPi5 boots from the first FAT32 partition on the microSD card. Where files are specified, +they should be located in the root directory of this partition. + +|Stage |Filename |Description |Source| +|-|-|-|-| +|FSBL |- |Mounts SD and loads SSBL |ROM | +|GPU firmware |start4.elf |Loads CPU bootloader and boots CPU | | +|Additional GPU firmware |fixup4.dat |Fixes memory locations used in start4.elf | | +|Usually the Linux kernel, but could also be U-Boot |u-boot.bin |U-Boot binary| Compiled using the instructions above | +||config.txt|U-Boot parameters |Add `arm_64bit=1` and `kernel=u-boot.bin` to the bottom of `config.txt` | +||uboot.env |U-Boot saved environment |Generated by U-Boot (default environment) bootcmd copied to bootcmd_orig bootcmd and bootdelay removed. This file will not exist when you first setup your SD card. | +||bcm2712-rpi-5-b.dtb | RPi5 device tree blob | | +||overlays/* | Device tree overlays | | + +## Getting seL4 onto your Raspberry Pi 5 + +The final step to test that you have setup your RPi5 correctly is to build and run the +seL4test project. + +You will see that the `init-build.sh` command contains the flag +`-DRPI5_MEMORY`, this specifies how much RAM exists on the Raspberry Pi that will run +the final seL4 image. Since seL4 needs to know the physical memory layout of the hardware +at build time, and the RPi4 has multiple models with different amounts of RAM, we have to +specify how much RAM the system will have when we build seL4. If `-DRPI5_MEMORY` is not supplied, +seL4 defaults to expecting 2GB of memory. + +{% include sel4test.md %} + +Now that we have a bootable image, we can run it on your RPi5. The following instructions describe +how to use a microSD card to boot seL4, using the seL4test image as well as the files mentioned +in the previous section. + +The first step is to copy the seL4 image onto the microSD card to the root directory. After +removing the card from your computer and inserting into your RPi5, you can power on the RPi5. + +Once the RPi5 boots up, you will see something like the following text from U-Boot: +``` +Hit any key to stop autoboot: 2 +``` + +At this point you want to interrupt the U-Boot booting process by pressing any key. + +You will now be in the U-Boot command prompt, type the following command: +``` +fatls mmc 0 +``` + +You should see the seL4test image you just placed on your microSD card. + +From here, you can load and boot the image using: +``` +fatload mmc 0 0x10000000 sel4test-driver-image-arm-bcm2712 +go 0x10000000 +``` diff --git a/projects/microkit/manual/2.2.0/index.md b/projects/microkit/manual/2.2.0/index.md index 5acc5c704d4..8eb67751020 100644 --- a/projects/microkit/manual/2.2.0/index.md +++ b/projects/microkit/manual/2.2.0/index.md @@ -1159,6 +1159,11 @@ The currently supported platforms are: * rpi4b_2gb * rpi4b_4gb * rpi4b_8gb +* rpi5b_1gb +* rpi5b_2gb +* rpi5b_4gb +* rpi5b_8gb +* rpi5b_16gb * serengeti * star64 * tqma8xqp1gb @@ -1398,6 +1403,31 @@ For initial board setup, please see the instructions on the When getting into the U-Boot console you want to load the Microkit binary image to address 0x10000000 and then run `go 0x10000000`. +For example, if you were to load the image via the MMC you would run the following +U-Boot commands: + + => fatload mmc 0 0x10000000 + => go 0x10000000 + +### Raspberry Pi 5B {#rpi5b_1gb} + +Support is available for the Raspberry Pi 5 Model B. There are multiple models of the +Raspberry Pi 5B that have different amounts of RAM, we have support for the 1GB, +2GB, 4GB, 8GB and 16GB models. Because the amount of RAM must be known statically by +seL4, the Microkit board names differ for each model: + +* `rpi5b_1gb` for 1GB of RAM. +* `rpi5b_2gb` for 2GB of RAM. +* `rpi5b_4gb` for 4GB of RAM. +* `rpi5b_8gb` for 8GB of RAM. +* `rpi5b_16gb` for 16GB of RAM. + +For initial board setup, please see the instructions on the +[seL4 website](https://docs.sel4.systems/Hardware/Rpi5.html). + +When getting into the U-Boot console you want to load the Microkit binary image to +address 0x10000000 and then run `go 0x10000000`. + For example, if you were to load the image via the MMC you would run the following U-Boot commands: From 379700c6cfb593487c5b6236562e3f07a205b6c6 Mon Sep 17 00:00:00 2001 From: Benjamin O'Brien Date: Tue, 30 Jun 2026 09:12:51 -0400 Subject: [PATCH 2/4] fix: update contrib Set Ivan Velickovic as the contributor for the RPi 5 in Rpi5.md Signed-off-by: Benjamin O'Brien --- Hardware/Rpi5.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Hardware/Rpi5.md b/Hardware/Rpi5.md index fd3858df0fa..7f92502605e 100644 --- a/Hardware/Rpi5.md +++ b/Hardware/Rpi5.md @@ -9,7 +9,7 @@ iommu: false soc: BCM2712 cpu: Cortex-A76 verification: [AARCH64] -Contrib: 'Hensoldt and ARM Research IceCap' +Contrib: 'Ivan Velickovic' Maintained: seL4 Foundation parent: /Hardware/ SPDX-License-Identifier: CC-BY-SA-4.0 From b1b41c838008c5e5000a397b9c5b79e6aa658df5 Mon Sep 17 00:00:00 2001 From: Benjamin Date: Tue, 30 Jun 2026 10:26:58 -0400 Subject: [PATCH 3/4] fix: remove unneeded github link As requested by Indanz Co-authored-by: Indan Zupancic Signed-off-by: Benjamin --- Hardware/Rpi5.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Hardware/Rpi5.md b/Hardware/Rpi5.md index 7f92502605e..e640ae5bc28 100644 --- a/Hardware/Rpi5.md +++ b/Hardware/Rpi5.md @@ -9,7 +9,7 @@ iommu: false soc: BCM2712 cpu: Cortex-A76 verification: [AARCH64] -Contrib: 'Ivan Velickovic' +Contrib: Ivan Velickovic Maintained: seL4 Foundation parent: /Hardware/ SPDX-License-Identifier: CC-BY-SA-4.0 From 5aa6de9dcc2c05431e8a6e8bdbfe852159cbd63a Mon Sep 17 00:00:00 2001 From: Benjamin O'Brien Date: Wed, 1 Jul 2026 07:53:03 -0400 Subject: [PATCH 4/4] fix: add u-boot versions, fix copyright text Update copyright notice, and publish working U-Boot versions Signed-off-by: Benjamin O'Brien --- Hardware/Rpi5.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Hardware/Rpi5.md b/Hardware/Rpi5.md index e640ae5bc28..25c8fdde76c 100644 --- a/Hardware/Rpi5.md +++ b/Hardware/Rpi5.md @@ -13,7 +13,7 @@ Contrib: Ivan Velickovic Maintained: seL4 Foundation parent: /Hardware/ SPDX-License-Identifier: CC-BY-SA-4.0 -SPDX-FileCopyrightText: 2020 seL4 Project a Series of LF Projects, LLC. +SPDX-FileCopyrightText: 2026 Benjamin O'Brien (iiPython) --- # Raspberry Pi 5 Model B @@ -26,6 +26,10 @@ Serial TX and RX are located at GPIO pins 14 and 15 respectively. ## U-Boot +It's been confirmed that U-Boot versions 2024.07 and 2026.07-rc5 both function on the Pi 5 without issue. + +Make sure when building that you use the `rpi_arm64_defconfig` target, as U-Boot does not currently have the Raspberry Pi 5's device trees (as of June 2026), so you need it to use the one provided by firmware. + In order to build U-Boot for the Raspberry Pi 5B, run the following commands: ```bash git clone https://github.com/u-boot/u-boot.git u-boot