|
RADPx-OS Kernel (Radical Posix OS)
Crimson 0.1.4
POSIX-inspired kernel API with embedded and desktop VM targets
|
RADPx-OS now has the first pieces of the Raspberry Pi Zero 2 W port. Raspberry Pi firmware remains the real first-stage boot path: the GPU ROM, bootcode.bin, and start4.elf initialize RAM, read config.txt, load the ARM payload, and release the AArch64 cores. The RADPx-OS-specific second stage is optional, but it is still useful as a maintenance loader for future boot menus, kernel selection, reflash tools, handoff validation, and hardware policy.
The intended final shape is:
RADKRN.IMG from the FAT boot partition and jump through rad_boot_handoff_t.bcm283x_pi backend and does not link Circle.The handoff is intentionally strict for physical silicon. Before jumping from any second-stage loader to the RADPx-OS payload, the loader must:
wfe loop owned by the loader handoff.radboot_validate_handoff() rejects Pi handoff records that do not declare these conditions through the RAD_BOOT_HANDOFF_FLAG_* safety bits.
Build the standalone payload with:
The output files are:
tools/embedded/rad_pi_zero2w/RADKRN.ELFtools/embedded/rad_pi_zero2w/RADKRN.IMGRun the RADPx-OS-owned QEMU smoke test with:
The script uses qemu-system-aarch64 -M raspi3b because QEMU does not expose a Pi Zero 2 W machine model. If qemu-system-aarch64 is not installed, the smoke test downloads and extracts Ubuntu's qemu-system-arm package under .radbuild/qemu-arm and reuses it on later runs. A passing run verifies the early BCM283x HAL, PL011 UART, mailbox framebuffer, handoff validation, payload entry, block and FAT mount scaffolds, USB/input scaffolds, framebuffer dirty present, A53 MMU/table setup, process/COW checks, and Slint/RADCompositor parity markers.
The current RAD-owned backend includes:
RADKernel/platforms: portable A53 code in platforms/a53 and Pi-specific BCM283x drivers in platforms/a53/bcm283x./dev/fb0 registration./dev/mmcblk0 block-device registration scaffold with in-memory sector backing for QEMU smoke reads./dev/usb0 host-info scaffold and /dev/input/event0 synthetic HID input event path.Run the combined loader/payload smoke test with:
The Circle loader source now builds a narrow second-stage handoff record and emits loader-intent markers when serial output is visible. On this workstation the Circle image currently reaches QEMU without serial markers, so the combined smoke script treats the Circle image as a build gate and then runs the standalone RADPx-OS payload gate. Physical Pi hardware remains the next authority for validating the actual Circle FAT load and jump sequence.
This page is experimental. The portable A53 layer now builds real page tables and enables the MMU in the standalone payload, but full EL0 ELF execution, preemptive user scheduling, and complete exec image replacement are still not at x86 parity. The eMMC, USB, HID, and Slint shell paths are still QEMU-visible scaffolds rather than complete physical drivers. The next Pi passes need the real BCM283x eMMC command engine, real DWC OTG host enumeration, hardware keyboard/mouse input, second-stage FAT load/jump validation on silicon, and full AArch64 userspace execution parity.
Physical Pi Zero 2 W hardware remains the authority for mailbox framebuffer and SD behavior.