2. Rockchip 平台介绍:SoC 家族与 BSP 结构
做嵌入式 Linux 这么多年,Rockchip 的芯片我接触得算比较多的。从早期的 RK3288 到现在的 RK3588,这一路走来,Rockchip 在多媒体和 AI 边缘计算领域的积累确实扎实。今天咱们就聊聊 Rockchip 的 SoC 家族、典型应用场景,还有它的官方 BSP 结构。
2.1 Rockchip SoC 家族概览
Rockchip 的产品线其实很清晰。我个人习惯把它们分成三大类:
- 入门级:RK3326、RK3308,主打低功耗和语音场景
- 中高端:RK3568、RK3566,平衡性能与功耗,工业级应用首选
- 旗舰级:RK3588、RK3588S,8K 视频、多屏异显、AI 算力拉满
咱们课程主要围绕 RK3568 和 RK3588 展开,因为这两款芯片在 Yocto 集成场景中最具代表性。
2.2 核心芯片特性对比
先看一张对比表,这样更直观。我在项目里经常拿这张表跟客户对需求,省事不少。
| 特性 | RK3568 | RK3588 |
|---|---|---|
| CPU | 4×Cortex-A55 | 4×Cortex-A76 + 4×Cortex-A55 |
| GPU | Mali-G52 EE | Mali-G610 MP4 |
| NPU | 1 TOPS | 6 TOPS |
| 视频编解码 | 4K@60fps H.264/H.265 | 8K@30fps H.265 / 4K@120fps |
| 显示接口 | HDMI 2.0, eDP, LVDS, MIPI DSI | HDMI 2.1, DP 1.4, eDP, MIPI DSI ×2 |
| PCIe | PCIe 3.0 ×2 | PCIe 3.0 ×4 + PCIe 2.0 ×1 |
| 典型功耗 | 5~8W | 10~15W |
我的经验:RK3568 的 1 TOPS NPU 虽然不高,但跑轻量级人脸检测或手势识别完全够用。RK3588 的 6 TOPS 则可以跑 YOLOv5s 这样的模型,帧率还不错。
2.3 典型应用场景
说白了,选哪颗芯片,看你的产品定位。我列几个实际落地的场景:
- RK3568 场景:
- 工业平板 / 人机交互界面
- 边缘计算网关(带 4G/5G 模块)
- 智能门禁 / 人脸识别终端
- 车载中控(非仪表盘)
- RK3588 场景:
- 智能会议白板 / 视频会议终端
- 8K 高清播放器 / 数字标牌
- AI 边缘服务器 / 智能安防 NVR
- 多屏异显广告机(最多 4 屏)
嗯,这里要注意一点:RK3588 的散热设计一定要做好。我之前有个项目,客户为了省成本没用散热片,结果 NPU 跑 10 分钟就降频了。你想想看,6 TOPS 的算力打五折,那还不如用 RK3568 呢。
2.4 官方 BSP 结构解析
Rockchip 的官方 BSP 是基于 Linux 内核 + U-Boot + Buildroot 的。但咱们要用 Yocto 来集成,所以得先搞清楚它的源码仓库结构。官方 BSP 主要包含这几个部分:
rk3588-linux/
├── kernel/ # Linux 内核(5.10 / 6.1 LTS)
│ ├── arch/arm64/boot/dts/rockchip/ # 设备树
│ └── drivers/ # Rockchip 自有驱动
├── u-boot/ # U-Boot 引导程序
├── rkbin/ # 闭源二进制(ATF、DDR 初始化、M0 固件)
├── buildroot/ # 官方默认构建系统
├── external/ # 第三方库与工具
│ ├── rknpu/ # NPU 驱动与工具链
│ ├── rkmpp/ # 多媒体处理库
│ └── rkisp/ # 图像信号处理
└── docs/ # 文档与参考手册
关键点:rkbin/ 目录下的闭源二进制是 Rockchip 平台绕不开的坎。ATF(ARM Trusted Firmware)、DDR 初始化代码、M0 协处理器固件都是二进制形式提供的。Yocto 集成时,我们需要通过 SRC_URI 把这些二进制包拉进来,再通过 do_deploy 放到正确位置。
2.5 启动流程与镜像分区
Rockchip 的启动流程跟其他 ARM 平台不太一样。我画了一张图,帮你理清整个链条:
启动流程大致是这样的:
- BootROM:芯片上电后,BootROM 从存储介质(eMMC/SD/NAND)读取引导代码
- DDR 初始化:rkbin 里的 DDR 二进制负责初始化内存控制器
- U-Boot SPL:加载 ATF 和 U-Boot Proper
- ATF (BL31):提供 PSCI 电源管理、安全监控调用
- U-Boot Proper:加载设备树、内核、ramdisk
- Linux Kernel:启动内核,挂载根文件系统
避坑指南:我曾经在 RK3568 上踩过一个坑——U-Boot SPL 和 ATF 的版本必须严格匹配。如果你从 rkbin 拉下来的 ATF 是 v2.6,但 U-Boot 是较老的版本,启动时会卡在 DDR 初始化阶段,串口输出只有一行乱码。嗯,排查起来很痛苦。
2.6 镜像分区布局
Rockchip 的存储分区是固定的。以 eMMC 为例,典型布局如下:
| 分区 | 起始扇区 | 大小 | 内容 |
|---|---|---|---|
| MBR | 0 | 1 扇区 | 主引导记录 |
| IDB | 64 | 8 MB | BootROM 引导块(含 DDR 初始化) |
| UBOOT | 16384 | 8 MB | U-Boot SPL + Proper |
| MISC | 32768 | 4 MB | 系统恢复/升级标识 |
| DTB | 40960 | 4 MB | 设备树 blob |
| BOOT | 49152 | 128 MB | 内核 + ramdisk |
| ROOTFS | 311296 | 剩余空间 | 根文件系统(ext4) |
我的习惯:在 Yocto 的 wic 镜像配方里,我会直接用 part 命令按这个布局生成镜像。这样烧录时直接用 dd 写进 eMMC 就行,省去手动分区和烧录的麻烦。