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 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 has 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 Raspberry Pi Zero 2 W and the Pi 5 aren’t supported yet; both are planned. See Supported devices.