Add RK356x bare-metal support and board-scoped BL31/U-Boot chainloading - #2
Add RK356x bare-metal support and board-scoped BL31/U-Boot chainloading#2hqnicolas wants to merge 3 commits into
Conversation
|
those interested in the project: |
|
This is really cool! TBH though I think this pulls in enough external code (and seems like some LLM code?) that it would be better off as a separate repo. You could include rk as a submodule if you need to depend on anything or you could just pull in firmware.h since that might be the only thing you to make it compatible. You can let me know if you think firmware.h/fuboot needs anything amended. |
|
Also I want to ask, what documentation/references did you use to create this? Did you use any uboot/linux/edk2 source code as reference? |
|
I brought everything from Armbian, this boards are enabled there, this week I bought two NVMe drives, and I'm going to use the two Rock-3A and YY3568 cards; it's actually code that I'll use myself. |
|
the repository will remain a fork of this project until someone needs to add other SPI-NOR chips. |
|
Not exactly sure what you mean there but this repo has no FUBS dependency or any support for anything FUBS specific. I would be okay with merging minimal support for rk356x and keeping Linux support stuff as part of an el2 payload binary. |
|
minimal support for rk356x applyed into: #3 |
Summary
One thing that really bothers me is the SPI-NOR firmware provided by board manufacturers.
I don't like the idea of running something that has been pre-compiled.
I saw an opportunity in your project to include SPI-NOR NVMe boot capabilities,
allowing NVMe drives to be booted using open-source U-Boot.
https://wiki.radxa.com/Rock3/install/spi
It adds three explicit RK356x board targets:
roc3566)yy3568)rock3a)YY3568 and ROCK 3A additionally receive optional, isolated BL31/U-Boot chainloader variants intended for booting Linux or an AArch64 EFI application from NVMe, removable SD, USB mass storage, or eMMC.
The chainloader is opt-in and board-scoped. Existing normal/demo images continue using the current FUEFI payload interface.
Bare-metal RK356x support
The shared
src/rk356x/platform implements:Board-specific wiring remains in small descriptors and DTBs, preventing GPIO, USB topology and identity data from leaking between boards.
New normal/demo outputs include:
roc3566.binanddemo_roc3566.binyy3568.binanddemo_yy3568.binrock3a.binanddemo_rock3a.binOptional BL31/U-Boot chainloader
The shared
src/chainload/layer provides:Every supported chainloader board has an independent validated manifest containing its U-Boot source, overlay, load addresses, media policy and artifact names.
Current backends are:
The automatic U-Boot policy is board-scoped and searches:
The dedicated first stage does not initialize HDMI, framebuffer, USB host, filesystems or storage controllers. Those responsibilities remain with U-Boot.
SPI-NOR and eMMC installation
The chainloader can be packaged for:
0x40A guarded Linux installer uses pinned xrock and rkdeveloptool revisions. Before writing, it:
CI/CD and releases
This also adds:
Release archives are generated for:
Host executables, Orange Pi 5 artifacts, object files and unrelated vendor blobs are excluded.
Documentation
The documentation now distinguishes:
Compatibility
build/chainload/<board>/.Automated validation
The following have been exercised in CI:
make SHELL=/bin/bash check -j"$(nproc)"make chainload-check BOARD=yy3568make chainload-check BOARD=rock3aHardware validation still required
Before marking the new boards fully hardware-validated:
EFI/BOOT/BOOTAA64.EFIOut of scope
This change does not add: