3. Rockchip 平台概述:RK3568/RK3588 系列芯片特性、典型硬件架构、SDK 目录结构

做 Rockchip 平台设备树开发,你得先摸清这家芯片的脾气。RK3568 和 RK3588 是目前市面上最火的两颗芯,一个主打性价比和低功耗,一个专攻高性能和多屏交互。我最早接触 Rockchip 是 RK3288 时代,那时候设备树还不像现在这么规范,踩了不少坑。到了 RK3568/RK3588,体系已经相当成熟了。

这一节,我把这两颗芯片的核心特性、硬件架构和 SDK 目录结构给你捋一遍。你心里有了这张地图,后面写设备树才不会迷路。

3.1 RK3568 与 RK3588 核心特性对比

先看一张对比表,直观感受一下差距。

特性 RK3568 RK3588
CPU 4×Cortex-A55 (2.0GHz) 4×Cortex-A76 (2.4GHz) + 4×Cortex-A55 (1.8GHz)
GPU Mali-G52 EE Mali-G610 MP4
NPU 1 TOPS (RKNN) 6 TOPS (RKNN)
内存 LPDDR4/LPDDR4x/DDR4/DDR3 LPDDR4/LPDDR5
显示 HDMI 2.0, eDP 1.3, MIPI DSI HDMI 2.1, eDP 1.4, DP 1.4, MIPI DSI
视频编解码 4K@60fps H.265/H.264 解码 8K@60fps H.265/VP9 解码, 8K@30fps 编码
PCIe 1×PCIe 3.0 x2, 1×PCIe 2.0 x1 2×PCIe 3.0 x4, 2×PCIe 2.0 x1
USB 1×USB 3.0, 2×USB 2.0 2×USB 3.1, 2×USB 2.0
以太网 2×GMAC (RGMII/RMII) 2×GMAC (RGMII/RMII)
封装 BGA 636 (19×19mm) BGA 1088 (23×23mm)

看到没?RK3588 的 CPU 是大核+小核的 big.LITTLE 架构,设备树里要配 cpu-opp-table 和 cpu-supply,调频策略比 RK3568 复杂不少。我有个项目用 RK3588 做边缘计算盒子,一开始没配好 OPP 表,大核死活跑不到 2.4GHz,后来发现是电压域设备树节点少了一个 regulator-microvolt-range。

选型建议: 如果你的产品只需要 4K 显示和轻量 AI 推理,RK3568 完全够用,成本低、散热好处理。如果要做 8K 视频、多路摄像头接入或者跑大模型,直接上 RK3588,别犹豫。

3.2 典型硬件架构

Rockchip 的硬件架构,说白了就是「多总线 + 多 IP 模块」的互联结构。我画了一张架构图,你对照着看。

RK3588 典型硬件架构图 RK3588 典型硬件架构图 Cortex-A76 集群 4×大核 (2.4GHz) Cortex-A55 集群 4×小核 (1.8GHz) Mali-G610 MP4 GPU NPU (6 TOPS) RKNN 加速器 系统总线 ACE/ACE-Lite DMC (DDR 控制器) DMA 中断控制器 (GIC-600) SMMU PMU CRU (时钟/复位) GRF (通用寄存器) IOMUX SIP/SCP Mailbox 外设总线 PCIe 3.0 x4 USB 3.1 / USB 2.0 GMAC (RGMII) SATA 3.0 SD/MMC/eMMC SPI / I2C / UART I2S / PDM / SPDIF PWM / ADC / TSADC GPIO (多组) CAN / LIN Ethernet (TSN) 说明: CPU/GPU/NPU 通过 ACE 总线与系统总线互联,系统总线再通过 AXI/AHB/APB 桥接外设总线。 设备树中需要为每个总线域配置对应的时钟、复位和电源域。

这张图里,我最想让你注意的是「系统总线」和「外设总线」的分离。Rockchip 把高性能 IP(CPU、GPU、NPU)挂在 ACE 总线上,把低速外设挂在 AHB/APB 上。设备树里,每个外设节点都要指定 interrupt-parent 和 clocks,这两个属性错了,驱动根本跑不起来。

我的习惯: 拿到一块新板子,我会先看 arch/arm64/boot/dts/rockchip/ 目录下的 rk3588.dtsi,找到 bus 节点和 clock 节点,确认总线频率和时钟源。这一步能避免后面 80% 的外设配置问题。

3.3 SDK 目录结构

Rockchip 官方 SDK 是基于 Yocto 或 Buildroot 的,但实际项目里,我见到的更多是「半手动」的 SDK 结构。下面这个目录树,是我从一个量产项目中提炼出来的典型结构。

RK3588_SDK/
├── kernel/                     # Linux 内核源码 (5.10 / 6.1)
│   ├── arch/arm64/boot/dts/rockchip/   # 设备树文件
│   │   ├── rk3588.dtsi                 # SoC 级设备树 (所有通用外设)
│   │   ├── rk3588-evb1.dts             # EVB 板级设备树
│   │   ├── rk3588s.dtsi                # RK3588S 精简版 SoC 设备树
│   │   └── rk3588-xxx-product.dts      # 你的产品设备树
│   ├── drivers/                # 驱动源码
│   └── ...
├── u-boot/                     # U-Boot 引导程序
│   ├── arch/arm/dts/           # U-Boot 设备树 (与内核设备树同步)
│   └── ...
├── rkbin/                      # Rockchip 二进制固件
│   ├── bin/                    # DDR 初始化、ATF、OP-TEE
│   └── ...
├── buildroot/                  # 根文件系统构建
│   └── ...
├── external/                   # 第三方库和工具
│   ├── rknpu/                  # NPU 驱动和工具链
│   ├── rkmpp/                  # 多媒体处理库
│   └── ...
├── device/                     # 产品配置
│   ├── rockchip/               # Rockchip 板级配置
│   │   ├── rk3588/             # 芯片级配置
│   │   └── common/             # 通用配置
│   └── ...
├── tools/                      # 烧录、调试工具
│   ├── rkdeveloptool           # 命令行烧录工具
│   └── ...
└── docs/                       # 文档
    └── Rockchip_RK3588_Developer_Guide_*.pdf

这个结构里,设备树文件是「三明治」式的:rk3588.dtsi 定义 SoC 级外设,rk3588-evb1.dts 定义 EVB 板级外设,你的产品设备树 rk3588-xxx-product.dts 再 #include 它们并覆盖差异部分。

避坑指南: 我曾经犯过一个低级错误——直接修改了 rk3588.dtsi 里的 i2c2 节点,结果所有用这个 SoC 的板子都受影响。正确的做法是在你的产品设备树里用 &i2c2 引用并覆盖属性。记住:dtsi 是公共库,别动它。

3.4 设备树在 SDK 中的角色

设备树在 Rockchip SDK 里,不只是给内核用的。U-Boot 也要解析设备树来初始化 DDR、时钟和 GPIO。甚至 rkbin 里的 ATF(ARM Trusted Firmware)也会读取设备树中的 psci 节点和 reserved-memory 节点。

我建议你养成一个习惯:每次修改设备树,都要同步更新 U-Boot 的设备树。虽然 U-Boot 和内核的设备树可以共用同一个 .dts 文件(通过 CONFIG_OF_LIVE 和 CONFIG_OF_BOARD 控制),但很多项目还是分开维护的。不一致的话,U-Boot 可能起不来,或者内核启动时设备树覆盖失败。

关键文件清单: 开始一个 Rockchip 项目前,先确认以下文件是否齐全:

  • rk3588.dtsi — SoC 级设备树,必须与内核版本匹配
  • rk3588-evb1.dts — 官方 EVB 参考,用来对比你的硬件差异
  • rk3588-xxx-product.dts — 你的产品设备树,从这里开始写
  • rk3588.dtsi 对应的 bindings 文档 — 在 Documentation/devicetree/bindings/ 下

嗯,这一节的内容就这些。你先把 RK3568 和 RK3588 的差异记牢,再把 SDK 目录结构刻在脑子里。后面写设备树的时候,你会感谢自己现在花时间看了这张架构图。