Skip to content

Boards

The boards Start a project and cargo generate offer. This table is generated from the same file they use, template/boards.toml.

BoardBuildTargetKernel fileLoad addressFirmware
Raspberry Pi 3 (B, B+, A+)32-bitarmv7a-none-eabikernel7.img0x8000bootcode.bin start.elf fixup.dat
64-bitaarch64-unknown-none-softfloatkernel8.img0x80000bootcode.bin start.elf fixup.dat
Raspberry Pi 4 (B, 400)32-bitarmv7a-none-eabikernel7.img0x8000start4.elf fixup4.dat
64-bitaarch64-unknown-none-softfloatkernel8.img0x80000start4.elf fixup4.dat
Raspberry Pi 5 (preliminary)64-bitaarch64-unknown-none-softfloatkernel8.img0x80000
Raspberry Pi 2 (B)32-bitarmv7a-none-eabikernel7.img0x8000bootcode.bin start.elf fixup.dat
Raspberry Pi Zero (Zero, Zero W)ARMv6armv6-none-eabikernel.img0x8000bootcode.bin start.elf fixup.dat
Raspberry Pi 1 (A, B, A+, B+)ARMv6armv6-none-eabikernel.img0x8000bootcode.bin start.elf fixup.dat

The kernel filename isn’t a convention. The firmware picks the one it looks for from the CPU it finds (and, on a Pi 3 or 4, from arm_64bit in config.txt). Finding none, it stops without printing anything, which looks exactly like a dead board.

ARMv6 needs nightly Rust. armv6-none-eabi is a tier-3 target with no precompiled core, so the project builds one with -Z build-std. The generated project’s rust-toolchain.toml takes care of it.

The Pi 4 and Pi 5 have no interrupt controller in rpi-hal yet, so Embassy’s time driver can’t run there. The template’s starter project doesn’t use interrupts, so it runs on every board above.

The Pi 5 is preliminary, and its card is different. Its boot firmware lives in the board’s EEPROM, so the card holds no firmware files: just config.txt and the loader as kernel8.img. The config.txt the project generates is what makes it boot: os_check=0 (the firmware otherwise refuses a kernel with no matching device tree), kernel_address=0x80000, and pciex4_reset=0, which keeps the PCIe link to the RP1 chip up, since the console’s GPIO14/15 are on RP1. Only the drivers listed under Supported devices exist for it so far.

The Raspberry Pi Zero 2 W isn’t supported yet. See Supported devices.