Neutron targets a specific hardware and emulation environment. This page describes what is supported and what you need to run or develop the bootloader.
Supported Hardware
Raspberry Pi Zero 2W. The primary target. It uses a BCM2710A1 SoC (quad-core Cortex-A53, ARMv8-A). The GPU loads the ARM kernel image (e.g. kernel8.img) at physical address 0x80000. Neutron is built to run from that address and to use the BCM2837-style peripheral map (peripherals at base 0x3F000000).
Raspberry Pi 3B. Same SoC family (BCM2837, Cortex-A53) and same load address and peripheral layout. Neutron built for Zero 2W runs on Pi 3B without changes.
Other Raspberry Pi models (e.g. Pi 4, Pi 5) use different SoCs and memory maps. Neutron is not designed for those boards without porting work.
QEMU Emulation
Machine: raspi3b. Development and testing use QEMU’s Raspberry Pi 3B model:
qemu-system-aarch64 -machine raspi3b -cpu cortex-a53 -m 1G- The bootloader is passed as the kernel:
-kernel bin/kernel8.img - The SD card is emulated with a raw disk image:
-drive file=bin/sd.img,if=sd,format=raw - Serial I/O is typically wired to the host terminal:
-serial mon:stdio
The raspi3b machine exposes the same peripheral base (0x3F000000) and key devices (PL011 UART, GPIO, mailbox, SDHOST) as the real hardware, so behaviour in QEMU is representative.
Do not use QEMU’s generic
virtmachine with the current Neutron codebase. Addresses and peripherals (e.g. UART at0x09000000) do not match and the bootloader will not work as intended.
Toolchain
Neutron is built with an AArch64 cross-compiler. The Makefile defaults to the prefix aarch64-linux-gnu- (e.g. on Debian/Ubuntu: gcc-aarch64-linux-gnu, binutils-aarch64-linux-gnu). You can override with make CROSS=aarch64-none-elf- ... if you use the bare-metal toolchain instead.
Summary
| Environment | Status | Notes |
|---|---|---|
| Raspberry Pi Zero 2W | Supported | Use SD card with boot files and ATOM.BIN |
| Raspberry Pi 3B | Supported | Same as Zero 2W |
| QEMU raspi3b | Supported | Kernel + SD image as above |
| QEMU virt | Not supported | Wrong memory map and peripherals |
| Other Raspberry Pi | Not supported | Different SoC and layout |
For build and run steps, see Build Configuration.