1. RK芯片选型与资料获取:RK3588/RK3568等主流芯片对比,官方SDK结构解析,Datasheet与TRM手册查阅技巧

做Rockchip平台的内核移植,第一步不是写代码,而是选芯片、找资料。我见过不少新手,拿到板子就开始编译,结果发现SDK版本不对、手册没下全,折腾一周还在原地打转。这一章,咱们就把这些基础工作捋清楚。

1.1 主流芯片对比:RK3588 vs RK3568 vs RK3399

Rockchip目前最活跃的三条产品线,我按自己的经验排了个优先级:RK3588(旗舰)、RK3568(主流)、RK3399(老将)。先看一张对比表:

参数 RK3588 RK3568 RK3399
CPU 4×Cortex-A76 + 4×Cortex-A55 4×Cortex-A55 2×Cortex-A72 + 4×Cortex-A53
GPU Mali-G610 MP4 Mali-G52 MP2 Mali-T860 MP4
NPU 6 TOPS 1 TOPS 无
内存 LPDDR4/4X/5,最大32GB LPDDR4/4X,最大8GB LPDDR4,最大4GB
显示 8K@60fps + 4K@120fps 4K@60fps 4K@60fps
PCIe PCIe 3.0 ×4 ×2 PCIe 3.0 ×1 ×1 PCIe 2.1 ×4
典型场景 AI盒子、边缘服务器、高端平板 工控板、NAS、中端平板 开发板、老旧产品维护

我个人习惯这样选:如果项目需要跑AI推理或8K显示,直接上RK3588,别犹豫。如果只是做工业控制或轻量级Linux设备,RK3568性价比最高。RK3399嘛,除非是维护老项目,否则不建议新开案子——它的内核主线支持已经不太积极了。

我的经验: RK3568的功耗控制做得比RK3399好很多,同样跑Linux桌面,RK3568的散热片可以小一号。做便携设备时,这个差异很关键。

1.2 官方SDK结构解析

拿到Rockchip的SDK,第一反应往往是「怎么这么大?」。一个完整的SDK解压后轻松超过10GB,里面包含了U-Boot、内核、Buildroot、Debian镜像、工具链、文档……

我建议你只关注这几个核心目录:

  • kernel/ —— 内核源码,设备树文件在 arch/arm64/boot/dts/rockchip/
  • u-boot/ —— 引导加载程序,板级配置在 configs/ 目录
  • device/rockchip/ —— 芯片级配置,包括DDR参数、PMIC配置
  • buildroot/ —— 根文件系统构建系统
  • docs/ —— 官方文档,但说实话,很多已经过时了

来看一个典型的SDK目录树:

rk3588_linux_sdk/
├── kernel/                 # Linux内核 (5.10 / 6.1)
│   └── arch/arm64/boot/dts/rockchip/
│       ├── rk3588.dtsi     # 芯片级设备树
│       ├── rk3588-evb1.dts # EVB板级设备树
│       └── rk3588s.dtsi    # 精简版芯片设备树
├── u-boot/                 # U-Boot 2017.09
│   └── configs/
│       ├── rk3588_defconfig
│       └── rk3568_defconfig
├── device/rockchip/
│   ├── rk3588/             # DDR、PMIC、secure 配置
│   └── rk3568/
├── buildroot/              # 构建根文件系统
├── external/               # 第三方库、驱动
└── prebuilts/              # 预编译工具链
注意: 不同版本的SDK,内核版本可能差很多。RK3588的早期SDK用5.10内核,后来官方切到了6.1。如果你拿到的是旧SDK,建议先确认内核版本,再决定要不要升级。

1.3 Datasheet与TRM手册查阅技巧

做内核移植,有两份文档你必须会看:Datasheet(数据手册)和TRM(技术参考手册)。

Datasheet比较薄,主要讲芯片的电气特性、封装、引脚定义、功耗参数。做硬件设计时用得更多。TRM才是我们软件工程师的「圣经」——它详细描述了每个寄存器的地址、位域定义、操作时序。

我查阅TRM的习惯是这样的:

  1. 先看目录 —— 找到你要用的模块章节,比如I2C、SPI、GMAC
  2. 看寄存器概览 —— 每个模块开头都有一个寄存器地址映射表
  3. 找关键寄存器 —— 控制寄存器(CTRL)、状态寄存器(STATUS)、数据寄存器(DATA)
  4. 看复位默认值 —— 很多坑都出在这里,默认值不对,驱动就起不来

举个例子,调试RK3588的GMAC(以太网)时,你需要查这些:

// TRM中GMAC寄存器片段
GRF_GMAC_CON0 (0xFE2C0000)
  Bit[15:12] : PHY Interface (R/W)
    0000: RMII
    0001: RGMII
    0010: SGMII
  Bit[11:8]  : CLK Select (R/W)
    0000: 125MHz
    0001: 25MHz
    0010: 2.5MHz

嗯,这里要注意:TRM里的地址是芯片内部总线地址,不是CPU看到的地址。做设备树时,你需要用 reg = <0xfe2c0000 0x1000> 这样的方式映射。

避坑指南: 我曾经花了两天时间调试RK3568的I2C,死活不通。后来仔细看TRM才发现,那个I2C控制器的时钟门控默认是关闭的,需要在GRF里先打开时钟。TRM里写得很清楚,只是藏在「Clock and Reset」章节里,我没仔细看。

1.4 知识结构图:芯片选型与资料获取流程

下面这张图,是我自己总结的「从选芯片到开始移植」的完整流程:

芯片选型与资料获取流程 芯片选型与资料获取流程 1. 需求分析 2. 芯片选型 3. 获取官方SDK 4. 下载Datasheet+TRM 5. 搭建编译环境 选型阶段多花1小时,移植阶段少花3天。SDK和手册一定要从官方渠道获取,别用第三方打包版。 性能/功耗/成本/接口 RK3588/RK3568/RK3399 kernel + u-boot + buildroot 重点关注TRM寄存器章节 交叉编译链 + 设备树工具

1.5 资料获取渠道与避坑

官方资料主要从这几个地方获取:

  • Rockchip Wiki —— 最权威,但更新慢,有些链接已经404了
  • GitHub (rockchip-linux) —— 内核、U-Boot源码都在这里,比SDK里的版本新
  • 官方BSP包 —— 找代理商或FAE要,通常包含完整的SDK和文档
  • 社区论坛 —— 比如Firefly、友善之臂的论坛,有很多实战经验
重要提醒: 不要从百度网盘或第三方网站下载SDK!我遇到过有人用了一个被修改过的SDK,里面植入了挖矿程序。官方资料虽然下载慢,但安全第一。

最后说一句:资料拿到手,别急着编译。先把TRM的「Memory Map」章节看一遍,了解各个外设的基地址。这一步做好了,后面写设备树的时候会顺手很多。