mirror of
https://github.com/apache/nuttx.git
synced 2026-08-01 20:28:58 +00:00
docs/boards/orangepi: add Orange Pi 5 Pro bring-up guide
Document the RK3588S firmware handoff, memory and console settings, build configurations, boot procedure, and hardware validation. Signed-off-by: Emre Cecanpunar <emreleno@gmail.com>
This commit is contained in:
parent
ed680c0242
commit
3f78b4bd1d
3 changed files with 271 additions and 0 deletions
|
|
@ -0,0 +1,223 @@
|
|||
================
|
||||
Orange Pi 5 Pro
|
||||
================
|
||||
|
||||
.. tags:: arch:arm64, chip:rk3588, vendor:xunlong, experimental
|
||||
|
||||
.. warning::
|
||||
|
||||
The board support for this device is experimental. Not all features are
|
||||
implemented and they have not been extensively tested by many users.
|
||||
|
||||
Help is wanted if you are interested in supporting a feature or if you've
|
||||
found an issue with any of the implementation! See :doc:`the contributing
|
||||
guidelines </contributing/index>`.
|
||||
|
||||
.. figure:: orangepi-5-pro.png
|
||||
:figwidth: 40%
|
||||
:align: center
|
||||
:alt: Orange Pi 5 Pro board
|
||||
|
||||
Orange Pi 5 Pro Single Board Computer
|
||||
|
||||
The `Orange Pi 5 Pro <http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-5-Pro.html>`_
|
||||
is an ARM64 single-board computer based on the Rockchip RK3588S SoC,
|
||||
created by Shenzhen Xunlong Software.
|
||||
|
||||
Features
|
||||
========
|
||||
|
||||
* **SoC**: Rockchip RK3588S (8 nm LP process)
|
||||
* **CPU**: Octa-core 64-bit (4x Cortex-A76 up to 2.4 GHz + 4x Cortex-A55 up to 1.8 GHz)
|
||||
* **GPU**: ARM Mali-G610 MP4 (Supports OpenGL ES 1.1/2.0/3.2, OpenCL 2.2, Vulkan 1.2)
|
||||
* **NPU**: Up to 6 TOPS AI accelerator
|
||||
* **RAM**: 4/8/16 GB LPDDR5
|
||||
* **Storage**: eMMC module socket, SPI Flash, MicroSD slot, M.2 M-Key (NVMe/SATA)
|
||||
* **Ethernet**: Gigabit Ethernet (YT8531C PHY) with PoE+ support (requires PoE+ HAT)
|
||||
* **Wi-Fi/Bluetooth**: Onboard AP6256 module (Wi-Fi 5 802.11ac + Bluetooth 5.0 / BLE)
|
||||
* **USB**: 1x USB 3.1 Gen1, 3x USB 2.0 (via onboard USB Hub)
|
||||
* **Video Output**: HDMI 2.1 (up to 8K @ 60 Hz)
|
||||
* **Camera**: 2x MIPI CSI 4-lane
|
||||
* **Expansion**: 40-pin header (UART, PWM, I2C, SPI, CAN, GPIO)
|
||||
* **Power Supply**: Type-C (5 V @ 5 A)
|
||||
* **Dimensions**: 89 mm x 56 mm
|
||||
|
||||
NuttX Support Status
|
||||
====================
|
||||
|
||||
The initial port supports the core system components, interactive shell, and basic utilities:
|
||||
|
||||
* **Core Boot**: Switch from EL2 to EL1, translation tables, and MMU enablement.
|
||||
* **System Console**: 16550 UART driver operating on UART2.
|
||||
* **Timer**: ARM generic system timer.
|
||||
* **PSCI**: System reset / reboot via TF-A PSCI SMC calls.
|
||||
* **procfs**: Virtual process filesystem.
|
||||
|
||||
Other onboard peripherals (GPIO, SPI, I2C, eMMC, USB, Ethernet, Wi-Fi, Bluetooth, HDMI, and MIPI DSI/CSI) are currently not supported in this port.
|
||||
|
||||
.. note::
|
||||
|
||||
To see support status for SoC peripherals (I2C, SPI, UART, etc.), see the
|
||||
:doc:`RK3588 page <../../index>`.
|
||||
|
||||
Buttons and LEDs
|
||||
================
|
||||
|
||||
Buttons
|
||||
-------
|
||||
|
||||
The Orange Pi 5 Pro has three buttons:
|
||||
|
||||
* **Power Button**: Used to power the board on or off.
|
||||
* **Reset Button**: Performs a hardware reset of the board.
|
||||
* **MaskROM Key**: Used to put the board into MaskROM mode for low-level firmware recovery.
|
||||
|
||||
LEDs
|
||||
----
|
||||
|
||||
The board has two onboard status LEDs:
|
||||
|
||||
* **Red LED**: Power indicator (hardware-controlled, turns on when power is connected).
|
||||
* **Green LED**: Status/User LED (software-controlled).
|
||||
|
||||
Pin Mapping
|
||||
===========
|
||||
|
||||
Debug Serial Console
|
||||
--------------------
|
||||
|
||||
The debug serial console inherits UART2 from the firmware. The default pin mapping for the UART2 console on the 40-pin expansion header is:
|
||||
|
||||
======= ========== =====================================
|
||||
Pin Signal Notes
|
||||
======= ========== =====================================
|
||||
8 UART2_TX Debug UART Transmit (UART2_TXD_M0)
|
||||
10 UART2_RX Debug UART Receive (UART2_RXD_M0)
|
||||
6 Ground Ground
|
||||
======= ========== =====================================
|
||||
|
||||
Power Supply
|
||||
============
|
||||
|
||||
The board is powered via a Type-C connector. A high-quality power supply providing 5 V @ 5 A is recommended.
|
||||
|
||||
Installation
|
||||
============
|
||||
|
||||
Install an ``aarch64-none-elf`` bare-metal toolchain and ensure its
|
||||
``bin`` directory is on your ``PATH``.
|
||||
|
||||
One option is the
|
||||
`Arm GNU Toolchain <https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads>`_.
|
||||
|
||||
Building NuttX
|
||||
==============
|
||||
|
||||
To build NuttX for the Orange Pi 5 Pro, configure the board first:
|
||||
|
||||
.. code:: console
|
||||
|
||||
$ ./tools/configure.sh orangepi-5-pro:nsh
|
||||
$ make -j$(nproc) CROSSDEV=aarch64-none-elf-
|
||||
|
||||
A successful build produces ``nuttx`` and ``nuttx.bin``.
|
||||
|
||||
Booting
|
||||
=======
|
||||
|
||||
Firmware and Relocation
|
||||
-----------------------
|
||||
|
||||
The Orange Pi 5 Pro boots via U-Boot. A typical boot flow is:
|
||||
|
||||
BootROM -> DDR initialization/TPL -> U-Boot SPL -> TF-A BL31 -> U-Boot proper -> NuttX
|
||||
|
||||
The port relies on the existing firmware for DRAM training, boot media
|
||||
access, TF-A loading, and the debug UART's clock and pin configuration.
|
||||
TF-A provides the PSCI interface used by NuttX. U-Boot loads
|
||||
``nuttx.bin`` and transfers control with the MMU and data cache disabled.
|
||||
|
||||
Although the physical DRAM starts at ``0x00000000``, the first 28 MiB (up to ``0x01c00000``)
|
||||
is reserved by the firmware (TF-A, OP-TEE, U-Boot). U-Boot reports the start of available
|
||||
RAM as ``0x01c00000``. The NuttX ARM64 startup code uses a standard image load offset of
|
||||
``0x480000`` (4.5 MiB). U-Boot's ``booti`` command parses this offset from the Image header
|
||||
and relocates the binary to ``0x02080000`` (``CONFIG_RAM_START``).
|
||||
|
||||
The initial port maps a 512 MiB RAM window beginning at ``0x02080000``. Memory outside this
|
||||
window is not included in the NuttX heap. The initial MMU configuration uses a 40-bit physical
|
||||
address size.
|
||||
|
||||
Boot Procedure
|
||||
--------------
|
||||
|
||||
Follow these steps to boot NuttX:
|
||||
|
||||
1. Format a microSD card with a single FAT32 partition.
|
||||
2. Copy ``nuttx.bin`` to the root of the microSD card.
|
||||
3. The board DTB is typically already present on the microSD card boot partition (e.g. from a vendor OS image) at `/boot/dtb/rockchip/rk3588s-orangepi-5-pro.dtb`. If not, copy it to the card.
|
||||
4. Insert the card and connect the 3.3 V debug serial cable.
|
||||
5. Stop at the U-Boot prompt and run:
|
||||
|
||||
.. code:: console
|
||||
|
||||
=> load mmc <dev>:1 0x02000000 /nuttx.bin
|
||||
=> load mmc <dev>:1 ${fdt_addr_r} /boot/dtb/rockchip/rk3588s-orangepi-5-pro.dtb
|
||||
=> booti 0x02000000 - ${fdt_addr_r}
|
||||
|
||||
6. Confirm the board reaches the NuttX prompt:
|
||||
|
||||
.. code:: text
|
||||
|
||||
NuttShell (NSH) NuttX-13.x
|
||||
nsh>
|
||||
|
||||
The initial port does not consume the DTB passed by U-Boot. This procedure
|
||||
has been validated on a 4 GiB Orange Pi 5 Pro. The observed handoff
|
||||
relocated the image to ``0x02080000``, entered NuttX at EL2, switched to
|
||||
EL1, and reached the NSH prompt.
|
||||
|
||||
Configurations
|
||||
==============
|
||||
|
||||
You can configure NuttX for the Orange Pi 5 Pro using the following
|
||||
command:
|
||||
|
||||
.. code:: console
|
||||
|
||||
$ ./tools/configure.sh orangepi-5-pro:<config>
|
||||
|
||||
Where ``<config>`` is one of the configurations listed below.
|
||||
|
||||
nsh
|
||||
---
|
||||
|
||||
Interactive NSH configuration for initial board validation. Connect the
|
||||
3.3 V debug UART at 1500000 baud to access the NuttShell prompt.
|
||||
|
||||
ostest
|
||||
------
|
||||
|
||||
Boots directly into ``ostest_main`` for scheduler and OS regression
|
||||
tests.
|
||||
|
||||
Hardware validation
|
||||
===================
|
||||
|
||||
The ``nsh`` configuration was tested on a 4 GiB Orange Pi 5 Pro. UART2
|
||||
transmit and receive, procfs, the ARM generic timer and PSCI reset were
|
||||
verified. A five-second ``sleep`` advanced ``/proc/uptime`` by five
|
||||
seconds, and ``reboot`` returned control to U-Boot.
|
||||
|
||||
The ``ostest`` configuration was also run on the same board and completed
|
||||
with status zero. ``calib_udelay`` measured 116422 delay loops per
|
||||
millisecond with an R-squared value of 1.0000.
|
||||
|
||||
References
|
||||
==========
|
||||
|
||||
* Rockchip RK3588 Brief Datasheet:
|
||||
https://www.rock-chips.com/uploads/pdf/2022.8.26/192/RK3588%20Brief%20Datasheet.pdf
|
||||
* Linux RK3588 device tree:
|
||||
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
|
||||
* U-Boot Rockchip documentation:
|
||||
https://docs.u-boot.org/en/latest/board/rockchip/rockchip.html
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 382 KiB |
48
Documentation/platforms/arm64/rk3588/index.rst
Normal file
48
Documentation/platforms/arm64/rk3588/index.rst
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
===============
|
||||
Rockchip RK3588
|
||||
===============
|
||||
|
||||
.. tags:: arch:arm64, chip:rk3588, vendor:rockchip, experimental
|
||||
|
||||
.. warning::
|
||||
|
||||
The support for this chip is experimental. Not all features are
|
||||
implemented and they have not been extensively tested by many users.
|
||||
|
||||
Help is wanted if you are interested in supporting a feature or if you've
|
||||
found an issue with any of the implementation! See :doc:`the contributing
|
||||
guidelines </contributing/index>`.
|
||||
|
||||
The `Rockchip RK3588 <https://www.rock-chips.com/uploads/pdf/2022.8.26/192/RK3588%20Brief%20Datasheet.pdf>`_
|
||||
is an octa-core SoC designed by Rockchip, featuring quad Cortex-A76 cores and quad Cortex-A55 cores.
|
||||
It is used on single-board computers like the Orange Pi 5 Pro.
|
||||
|
||||
- **CPU:** Octa-core ARMv8.2 (4x Cortex-A76 up to 2.4 GHz + 4x Cortex-A55 up to 1.8 GHz)
|
||||
- **Interrupt Controller:** GICv3 (GIC600)
|
||||
|
||||
Supported Peripherals
|
||||
=====================
|
||||
|
||||
======================== =======
|
||||
Peripheral Support
|
||||
======================== =======
|
||||
UART Inherited UART2 debug console.
|
||||
GICv3 Yes
|
||||
Timer ARM Generic System Timer.
|
||||
PSCI Yes (System Reset/Reboot via SMC calls to TF-A).
|
||||
GPIO No
|
||||
SPI No
|
||||
I2C No
|
||||
USB No
|
||||
Ethernet No
|
||||
SDMMC No
|
||||
======================== =======
|
||||
|
||||
Supported Boards
|
||||
================
|
||||
|
||||
.. toctree::
|
||||
:glob:
|
||||
:maxdepth: 1
|
||||
|
||||
boards/*/*
|
||||
Loading…
Add table
Add a link
Reference in a new issue