RK-SPI-NOR-Chainloader

RK356x devices

The RK356x implementation supports three explicit board targets:

The SoC code is shared in src/rk356x; board descriptors contain only identity, LED and USB VBUS wiring, enabled OHCI companions, and connector notes. This does not claim support for arbitrary RK3566/RK3568 boards.

YY3568 and ROCK 3A also have optional, isolated BL31/U-Boot variants for handing PCIe, storage, network fallback, Linux, and EFI boot to U-Boot. Their board manifests define independent automatic orders without treating onboard SDIO as an SD card. They do not change the normal/demo images; ROC3566 does not inherit that support. See the chainloading guide.

That optional variant can be packaged for the eMMC user area or onboard SPI NOR without adding storage drivers to the bare-metal stage. RK3568 BootROM loads the DDR blob and chainloader directly from the selected medium. SPI NOR has immutable priority over eMMC, SD, and USB, so media installation and restoration are deliberately guarded and remain board-qualified.

Capability matrix

Board SoC Normal/demo USB-A OHCI Chainloader Persistent first-stage media
ROC-RK3566-PC RK3566 yes OHCI0 no SD (normal/demo)
YY3568 RK3568 yes OHCI0, OHCI1 mainline-FIT U-Boot v2026.07 SD, eMMC, SPI NOR
ROCK 3A RK3568 yes OHCI0, OHCI1 mainline-FIT U-Boot SD, optional eMMC, SPI NOR

Shared RK356x drivers do not imply shared GPIO, storage, U-Boot, or memory policy. Those properties are selected only by the board descriptor or the validated chainloader manifest.

Documentation map

Topic Page
Linux host dependencies, pinned USB tools, udev permissions, and non-destructive detection Prepare a Linux programming host
BootROM delivery, normal/demo firmware, jump_to_payload(), memory, HDMI, and USB HID Common bare-metal firmware
BL31/U-Boot FIT handoff, boot media, installation, OS discovery, EDK2, and OP-TEE Chainloading
Firefly-specific target, GPIOs, USB topology, artifacts, and validation ROC-RK3566-PC
Youyeetoo-specific target, wiring provenance, U-Boot backend, and storage policy YY3568
Radxa-specific target, mainline U-Boot backend, optional eMMC, and storage policy ROCK 3A

The generic pages describe only behavior implemented by shared RK356x code. The board pages are authoritative for identity, connectors, GPIOs, supported boot media, U-Boot policy, and hardware acceptance. A capability is not inherited by another board merely because both use RK3566 or RK3568.