2、Rockchip平台简介:芯片家族、主流特性与BSP架构

做嵌入式Linux开发,选平台是个绕不开的坎。Rockchip这几年在AIoT、边缘计算、平板、NAS甚至服务器领域都铺得很开,尤其是RK3588和RK3568这两颗芯,几乎成了国产ARM Linux开发板的标配。我个人最早接触Rockchip是RK3288时代,那时候资料还比较零散,BSP也远没现在成熟。到了RK3588这一代,官方SDK已经相当完整了,配合Yocto构建系统镜像,体验比前几年好太多。

这一章我们先把Rockchip的芯片家族捋一遍,重点看看RK3588和RK3568的特性,最后拆解一下官方BSP的架构。嗯,这部分是后续所有Yocto实战的基础,建议你花点时间理解清楚。

2.1 Rockchip芯片家族概览

Rockchip的产品线其实挺清晰的,主要分几个系列:

  • RK3系列:面向入门级平板、OTT盒子、智能显示。代表有RK3128、RK3229、RK3328。性能不高,但成本低、出货量大。
  • RK33系列:中端主力,比如RK3368(八核A53)、RK3399(双核A72+四核A53)。RK3399在2016-2020年间几乎是国产开发板标配,现在依然有大量存量项目。
  • RK35系列:当前旗舰和次旗舰。RK3566/RK3568(四核A55)、RK3588/RK3588S(四核A76+四核A55)。这是我们现在重点关注的系列。
  • RV系列:RISC-V架构,比如RV1126、RV1109。面向AI视觉、安防。虽然生态还在成长,但值得关注。

我建议你重点关注RK35系列,尤其是RK3588和RK3568。Yocto构建系统镜像,这两个芯片的BSP支持最完善,社区活跃度也最高。

2.2 RK3588与RK3568核心特性对比

这两颗芯片定位不同,但都是当前Rockchip的出货主力。我把关键参数整理成了一张表,方便你对比:

特性 RK3588 RK3568
CPU 4×Cortex-A76 (2.4GHz) + 4×Cortex-A55 (1.8GHz) 4×Cortex-A55 (2.0GHz)
GPU Mali-G610 MP4 (支持OpenGL ES 3.2, Vulkan 1.2) Mali-G52 MP2 (支持OpenGL ES 3.2)
NPU 6 TOPS (支持INT8/INT16) 1 TOPS (支持INT8)
内存 LPDDR4/LPDDR4x/LPDDR5, 最大32GB LPDDR4/LPDDR4x, 最大8GB
存储 eMMC 5.1, SD 3.0, SATA 3.0, PCIe 3.0 eMMC 5.1, SD 3.0, SATA 3.0, PCIe 3.0
显示 HDMI 2.1, DP 1.4, eDP 1.3, MIPI DSI, 支持8K@60fps HDMI 2.0, eDP 1.3, MIPI DSI, 支持4K@60fps
视频编解码 8K@60fps H.265/H.264解码, 8K@30fps编码 4K@60fps H.265/H.264解码, 1080p@60fps编码
接口 USB 3.0, USB 2.0, PCIe 3.0, SATA 3.0, GMAC, SPI, I2C, UART USB 3.0, USB 2.0, PCIe 3.0, SATA 3.0, GMAC, SPI, I2C, UART
典型功耗 5W-15W (视负载) 2W-6W (视负载)
封装 FCBGA 1088 FCBGA 636

我的建议:如果你的项目需要跑AI推理、8K显示、或者需要多路视频流处理,RK3588是首选。如果只是做轻量级网关、HMI、或者成本敏感的产品,RK3568完全够用。我在一个边缘计算网关项目里用过RK3568,跑Debian + 轻量AI模型,稳得很。

2.3 Rockchip官方BSP架构

Rockchip的BSP(Board Support Package)是构建系统镜像的核心。说白了,它就是芯片厂商提供的一套软件包,包含内核、驱动、U-Boot、文件系统、工具链等。Yocto构建镜像,本质上就是把这些组件按你的需求组合起来。

Rockchip官方BSP的架构,我画了一张图,你可以对照着看:

Rockchip 官方 BSP 架构 应用层 (Qt/Flutter/Android HAL) 系统服务层 (Wayland/ALSA/GStreamer/NetworkManager) 内核与驱动层 (Linux Kernel + Rockchip Driver) DRM/VPU/RGA/NPU/GPU/PCIe/USB/GMAC Bootloader层 (U-Boot + ATF + OPTEE) 硬件层 (RK3588/RK3568 SoC) 关键组件说明 • ATF: ARM Trusted Firmware • OPTEE: 安全操作系统 • RGA: 2D图形加速 • VPU: 视频编解码 • NPU: 神经网络处理器 • DRM: 直接渲染管理器 Yocto集成层 • meta-rockchip • meta-rockchip-bsp • meta-qt5 • meta-openembedded • meta-python • meta-networking

从这张图你能看到,Rockchip BSP是分层设计的。每一层都有明确的职责,层与层之间通过标准接口通信。这种设计的好处是——你替换某一层时,其他层基本不用动。

2.4 BSP各层详解

2.4.1 Bootloader层

这一层负责硬件初始化和加载内核。Rockchip的启动流程比较特殊,它用了多级加载:

  • Mask ROM:芯片内部固化的只读代码,上电后最先执行。它检查启动引脚电平,决定从eMMC、SD卡还是SPI Flash加载下一级。
  • U-Boot SPL (Secondary Program Loader):从存储介质加载到SRAM中,初始化DDR控制器。
  • U-Boot TPL (Tertiary Program Loader):部分芯片需要,进一步初始化。
  • ATF (ARM Trusted Firmware):运行在EL3异常级别,提供安全启动和电源管理。
  • OPTEE:可选的安全操作系统,用于处理敏感数据。
  • U-Boot proper:完整的U-Boot,加载内核和设备树。

避坑指南:我曾经在RK3588上遇到过U-Boot启动卡死的问题,查了两天才发现是ATF版本不匹配。Rockchip的ATF和U-Boot是绑定发布的,千万别混用。Yocto里通过SRCREV锁定版本,这个后面会详细讲。

2.4.2 内核与驱动层

Rockchip官方维护了一个基于Linux内核的长期支持分支,通常叫rk3588-linux或rk3568-linux。这个分支包含了所有Rockchip芯片的驱动:

  • DRM驱动:显示输出,支持HDMI、DP、eDP、MIPI DSI多屏异显。
  • VPU驱动:视频编解码硬件加速,RK3588支持8K。
  • RGA驱动:2D图形加速,用于图像旋转、缩放、格式转换。
  • NPU驱动:RKNN Toolkit的底层支撑,跑AI模型必备。
  • GPU驱动:Mali GPU的官方驱动,Rockchip会提供预编译的二进制包。
  • 其他外设驱动:PCIe、USB、GMAC、I2C、SPI、UART等。

嗯,这里要注意:Rockchip内核不是主线内核,而是基于某个LTS版本(比如5.10、6.1)加上大量补丁。Yocto构建时,我们直接拉取Rockchip的官方内核仓库,而不是主线。

2.4.3 系统服务层

这一层是用户空间的基础服务。Rockchip官方BSP通常包含:

  • 显示服务:Wayland/Weston(推荐)或X11。RK3588上Wayland性能更好。
  • 多媒体框架:GStreamer + Rockchip插件,支持硬件编解码。
  • 音频服务:ALSA + PulseAudio,部分板子支持HDMI音频输出。
  • 网络管理:NetworkManager或connman。
  • AI框架:RKNN Toolkit、TensorFlow Lite、ONNX Runtime的Rockchip后端。

2.4.4 应用层

这一层就看你的产品需求了。Rockchip官方SDK里带了几个参考应用:

  • Qt 5/6示例:基于Wayland的Qt应用,支持硬件加速。
  • 多媒体播放器:基于GStreamer的硬件解码播放器。
  • AI Demo:人脸识别、目标检测等。

说白了,应用层是你自己发挥的地方。Yocto构建时,你可以通过添加meta-qt5、meta-python等layer来扩展应用生态。

2.5 Yocto与Rockchip BSP的集成方式

Rockchip官方提供了Yocto的BSP layer,叫meta-rockchip和meta-rockchip-bsp。这两个layer是构建系统镜像的入口。它们的结构大致如下:

meta-rockchip/
├── conf/
│   ├── machine/
│   │   ├── rk3588-evb1.conf
│   │   ├── rk3568-evb.conf
│   │   └── ...
│   └── layer.conf
├── recipes-bsp/
│   ├── u-boot/
│   ├── atf/
│   └── rkbin/
├── recipes-kernel/
│   └── linux/
├── recipes-graphics/
│   ├── libmali/
│   └── weston/
└── recipes-multimedia/
    └── gstreamer/

关键点:recipes-bsp/rkbin/这个目录存放了Rockchip的闭源二进制固件,包括ATF、OPTEE、DDR初始化代码等。这些是Rockchip不公开源码的部分,Yocto构建时会直接下载预编译的二进制包。你不需要自己编译它们,但要注意版本匹配。

我个人的习惯是,拿到一块新的Rockchip开发板,先跑一遍官方SDK的Yocto构建流程,确认硬件能正常启动。然后再逐步裁剪和定制。这样能避免一开始就陷入驱动调试的泥潭。

2.6 本章小结

这一章我们覆盖了三个核心内容:

  • Rockchip芯片家族的整体布局,重点在RK3588和RK3568。
  • 两颗主流芯片的关键参数对比,方便你选型时做决策。
  • 官方BSP的分层架构,以及Yocto如何与这些层集成。