Skip to content

boards/arm64: add RK3588S and Orange Pi 5 Pro support#19489

Merged
acassis merged 3 commits into
apache:masterfrom
emomaxd:rk3588-orangepi5pro
Jul 20, 2026
Merged

boards/arm64: add RK3588S and Orange Pi 5 Pro support#19489
acassis merged 3 commits into
apache:masterfrom
emomaxd:rk3588-orangepi5pro

Conversation

@emomaxd

@emomaxd emomaxd commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Summary

Add initial NuttX support for the Rockchip RK3588S and Orange Pi 5 Pro.

The port boots through U-Boot, enters NuttX at EL2, switches to EL1 and reaches NSH. It includes the ARM64 boot path, GICv3 setup, the ARM generic timer, a UART2 console with polling transmit, PSCI reset, NSH and OSTest configurations, and board documentation.

The initial MMU setup uses identity mappings, as existing ARM64 ports such as BCM2711 do. Only the required UART2, GIC and DRAM regions are mapped.

The RAM mapping is intentionally limited to a 512 MiB window starting at 0x02080000. This is not a hardware limit. It is a conservative range inside the first DRAM bank reported by U-Boot on the tested 4 GiB board and stays below the U-Boot runtime and FDT locations observed during testing. Reading the firmware-provided memory and reserved-memory ranges from the DTB can be added separately.

DRAM training, UART2 clock and pin setup, and boot media access remain firmware responsibilities. The initial port does not parse the DTB or include peripheral drivers or SMP support.

Impact

This adds a new ARM64 SoC and board. Existing configurations are unchanged.

Testing

Tested on a 4 GiB Orange Pi 5 Pro with an AArch64 bare-metal toolchain.

  • Built orangepi-5-pro:nsh with Make and CMake/Ninja, and booted nuttx.bin with U-Boot booti
  • Verified UART2 transmit and receive at 1500000 baud
  • Reached NSH and checked uname, procfs and memory information
  • Verified the ARM generic timer with sleep 5 and /proc/uptime
  • Verified PSCI reset with reboot
  • Built and ran orangepi-5-pro:ostest; it completed with status 0
  • Ran calib_udelay; it reported CONFIG_BOARD_LOOPSPERMSEC=116422 with R-squared 1.0000
  • Built the documentation with Sphinx warnings treated as errors
  • Ran git diff --check

NSH boot

NSH boot and timer test

OSTest

OSTest completion

Board

Orange Pi 5 Pro running NuttX

Add RK3588 chip selection, GICv3 and MMU boot hooks, PSCI support, and an inherited 16550 console.

Signed-off-by: Emre Cecanpunar <emreleno@gmail.com>
@github-actions github-actions Bot added Area: Build system Arch: arm64 Issues related to ARM64 (64-bit) architecture Size: XL The size of the change in this PR is very large. Consider breaking down the PR into smaller pieces. Board: arm64 labels Jul 20, 2026
@github-actions

github-actions Bot commented Jul 20, 2026

Copy link
Copy Markdown

MemBrowse Memory Report

No memory changes detected for:

@linguini1

Copy link
Copy Markdown
Contributor

Awesome!

Can you change the commit message topics more in line with:

  • boards/arm64/rk3588s:
  • docs/boards/orangepi:
    To get more granular for our release notes?

@linguini1 linguini1 changed the title Add RK3588S and Orange Pi 5 Pro support boards/arm64: add RK3588S and Orange Pi 5 Pro support Jul 20, 2026

@linguini1 linguini1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Exciting port!

@emomaxd
emomaxd force-pushed the rk3588-orangepi5pro branch from 70e720d to 96ce4f7 Compare July 20, 2026 16:56
@emomaxd

emomaxd commented Jul 20, 2026

Copy link
Copy Markdown
Contributor Author

Thanks! I'm working on docs currently.

linguini1
linguini1 previously approved these changes Jul 20, 2026
emomaxd added 2 commits July 20, 2026 21:06
Add NSH and OSTest configurations, the DRAM linker script, and the minimal board initialization and reset hooks for RK3588S.

Signed-off-by: Emre Cecanpunar <emreleno@gmail.com>
Document the RK3588S firmware handoff, memory and console settings, build configurations, boot procedure, and hardware validation.

Signed-off-by: Emre Cecanpunar <emreleno@gmail.com>
@emomaxd

emomaxd commented Jul 20, 2026

Copy link
Copy Markdown
Contributor Author

Thanks for the feedback!

I've updated the docs following the template at board.rst.

Specifically:

  • Added a local board image (orangepi-5-pro.png) and scaled it down.
  • Included the ./tools/configure.sh commands.
  • Added key features, buttons, LEDs, and pin mappings.
  • Restructured the RK3588 index to match the BCM2711 page.
  • Cleaned up and clarified the U-Boot booting/relocation instructions.

Also reworded the commit topics to boards/arm64/rk3588s: and docs/boards/orangepi: as requested. Pushed the changes, let me know what you think!

@linguini1 @xiaoxiang781216

@acassis
acassis merged commit 3f78b4b into apache:master Jul 20, 2026
54 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Arch: arm64 Issues related to ARM64 (64-bit) architecture Area: Build system Board: arm64 Size: XL The size of the change in this PR is very large. Consider breaking down the PR into smaller pieces.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants