瑞芯微 Rockchip 开发指南
编制日期 2026-10-14
从 MaskROM 抓 logs 到 SDK 构建、启动链、存储分区与量产烧录 —— 面向嵌入式工程师的 Cortex-A Linux 路线手册
这份文档面向已经在做 MCU(STM32 / ESP32 / GD32)开发的工程师:你熟悉 main()、寄存器和外设初始化,但瑞芯微 RK 系列跑的是 完整 Linux + ARM TrustZone + 多级 Bootloader —— 点不亮不再是「程序没烧进去」,而要先分清它停在了 BootROM、DDR 初始化、Trust 还是内核。本文所有型号、分区、命令均核对自 Rockchip 开源 Wiki、厂商 Wiki 与公开 TRM / Datasheet,并把存储支持矩阵、parameter.txt、MaskROM 烧录、GPIO 编号这些最容易踩坑的地方逐个拆开讲。核对不到的数值一律标注「以官方 Wiki / 手册为准」,不做臆测。
阅读路径
1 · 文档导读与阅读路径
瑞芯微不是「一块跑 Linux 的 MCU」。它是 Cortex-A 应用处理器 + TrustZone 安全世界 + 五段式启动链 + 完整发行版根文件系统 的组合。这句话决定了本文所有章节的编排方式。
报告总结
本文解决的是「拿到一块 RK 板子 / 一颗 RK 芯片之后,怎么把它从点不亮带到能出货」这条链路上的具体问题:挑型号、搭 SDK、读懂启动链、设计分区、打包烧录、改设备树、接外设、调 NPU 与多媒体、做 OTA、做安全启动、做低功耗与热设计、画硬件、上产线,最后落到与 XTX 存储芯片协同的器件选型。
读者路径
- 硬件工程师:第 2 章选型 → 第 7 章存储 → 第 16 章硬件设计 → 附录 A。
- 驱动 / BSP 工程师:第 5 章 SDK → 第 6 章启动链 → 第 9 章设备树 → 第 10 章外设。
- 系统 / 量产工程师:第 8 章烧录 → 第 13 章 OTA → 第 14 章安全 → 第 17 章产线。
- 器件 / 选型工程师:第 3 章控制器 → 第 7 章介质矩阵 → 第 19 章速查。
1.1 不覆盖什么
RK 生态很大,本文明确不写:Android Framework 与应用开发、Python / Shell 语法教学、通用 Linux 服务器运维、RK 之外的竞品对比评测、以及第三方发行版(Armbian、OpenWrt、Ubuntu Core)的专属配置流程。这些内容要么与 RK 无关,要么官方文档已经写得足够好。
1.2 事实来源与版本标注约定
瑞芯微的 SDK 以 repo manifest 为单位发布,不同板卡厂商、不同分支之间的内核版本、分区表、工具链都可能不同。本文以 opensource.rock-chips.com Wiki、公开 TRM / Datasheet、以及主流板卡厂商公开 Wiki(Firefly、Radxa、Khadas、Luckfox、Neardi 等)为准。三点提醒:
| 约定 | 含义 |
|---|---|
| 以官方手册为准 | 涉及工艺节点、DDR 最高速率、UFS 支持、封装尺寸这类逐型号差异极大的参数,文中不做统一断言,请以对应型号的 TRM / Datasheet 与官方选型手册为准。 |
| SDK 版本相关 | 目录结构、build.sh 子命令、分区名在不同 SDK 大版本间会变。文中给出的是通用 Linux SDK(含 Buildroot / Debian / Yocto 三路线)的主流形态。 |
| 原文保留的命令 | 文中所有 ./build.sh、rkdeveloptool、upgrade_tool 等命令按官方/厂商文档原样给出,不做本地化改写,避免版本漂移。 |
1.3 命令与代码的书写约定
- 命令行输入一律以
$开头表示普通用户,sudo显式标注提权;#开头是一行注释说明,不是 root 提示符。 - 路径统一使用 Linux 正斜杠。
<sdk>、<dev>这类尖括号是占位符,替换时不保留尖括号。 - 设备树片段为了可读性做了缩进整理,实际文件里的缩进请以 SDK 源码为准。
1.4 MCU 工程师转 Rockchip 最容易卡住的四件事
① 「点不亮」有五个可能的位置
BootROM(没找到合法 ID BLOCK)、DDR 初始化(TPL / ddr bin 失败)、Trust(ATF/OP-TEE)、U-Boot、内核。先接串口看它停在哪一句,再决定查什么 —— 这是和 MCU「烧进去就跑」最大的区别。
② 「Flash」不是一个东西
eMMC、SD 卡、SPI NOR、SPI NAND 分别走不同控制器(SDMMC / SDHCI / FSPI),在设备树里是不同的节点,在烧录工具里是不同的地址。换介质意味着改分区表、改 defconfig、改打包脚本,不是换个芯片那么简单。
③ 「改了不生效」多半是没重新打包
设备树改完要 ./build.sh kernel,还要 ./build.sh firmware 把镜像收集到 rockdev/,最后 ./build.sh updateimg 才是能烧的整包。只编译不打包,是新手最常见的「我明明改了啊」。
④ 「实时性」仍要指望外挂 MCU
RK 内部虽然有三颗 Cortex-M0,但主要服务于电源管理与 NPU 协处理;需要硬实时 IO 的场合,仍是 RK(A 核跑 Linux)+ 一颗外挂 MCU 的经典组合,两者通过 UART / SPI / I2C 通信。
2 · RK 家族全景与选型
瑞芯微的产品编号看起来杂乱(RK / RV / PX 混在一起),实际上分界线非常清晰:RK3xxx / RK35xx 是通用应用处理器,RV11xx 是视觉与 IPC,RK33xx 偏语音与入门,RK18xx / RK3399Pro 是带 NPU 的老一代 AI 芯片。第一步选错档位,后面怎么做都是徒劳。
2.1 五条产品线怎么分
官方把产品划分为若干条线,分界线不是主频,而是目标应用与配套软件栈:旗舰档跑 8K 多屏与边缘大模型;主流档做工业网关、HMI、NVR;入门与语音档做智能音箱与低成本终端;视觉档自带 AI-ISP 服务 IPC 与电池摄像头;经典存量档则是仍在大量出货、但新设计一般不再首选的老型号。
来源:Rockchip 公开产品资料 / 厂商平台矩阵整理
2.2 旗舰档:RK3588 系列
RK3588 是当前瑞芯微的旗舰:四核 Cortex-A76 + 四核 Cortex-A55 的 big.LITTLE 组合,六核(三核架构)NPU 最高 6 TOPS,8K 视频编解码,四通道 LPDDR4/4X/5。它有三个主要衍生型号,区分点是封装、接口数量与温度范围,而不是算力。
| 型号 | CPU | GPU | NPU | 关键差异 | 温度范围 |
|---|---|---|---|---|---|
| RK3588 | 四核 A76 + 四核 A55 | Mali-G610 MP4 | 6 TOPS | 最全接口:PCIe 2.1×3 + PCIe 3.0×2、SATA 3.0×2、双千兆 MAC、HDMI 2.1 TX + HDMI 2.0 RX、双 ISP | 0~80 ℃ |
| RK3588S | 同上(A76 最高 2.4 GHz) | Mali-G610 MP4 | 6 TOPS | 精简封装:1×HDMI TX、单千兆 MAC、PCIe 2.1×2、MIPI-CSI 数量减少,适合小尺寸 PCB | 0~80 ℃ |
| RK3588J | A76 最高 2.0 GHz | Mali-G610 MP4 | 6 TOPS | 工业级版本,接口与 RK3588 基本一致 | -40~85 ℃ |
| RK3588M | A76 最高 2.0 GHz | Mali-G610 MP4 | 6 TOPS | 车规版本,面向智能座舱与车载视觉 | -40~85 ℃ |
RK3588S 砍掉的不只是主频,更是接口数量(HDMI 输出、GMAC、PCIe lane、MIPI-CSI)。选型时对着原理图的接口清单核对,比对着主频表核对更有意义。J / M 则是温度等级与可靠性要求的差异,供货与认证流程也不同。
2.3 承上启下:RK3576
RK3576 定位在 RK3568 与 RK3588 之间:CPU 换成四核 Cortex-A72 + 四核 Cortex-A53(最高 2.2 GHz),NPU 直接给到 6 TOPS 并支持 Transformer 类算子,视频能力为 4K@120 解码 / 4K@60 编码。对多数「要 AI 但不需要 8K」的项目,它是性价比更高的一档。
| 项目 | RK3576 | 对比 RK3568 |
|---|---|---|
| CPU | 四核 Cortex-A72 @ 最高 2.2 GHz + 四核 Cortex-A53 @ 1.8 GHz | 四核 Cortex-A55 @ 最高 2.0 GHz |
| GPU | Mali-G52 MC3 | Mali-G52 2EE |
| NPU | 6 TOPS,支持 Transformer 类算子 | 1 TOPS |
| 视频 | 4K@120 解码 / 4K@60 编码 | 4K@60 解码 / 1080p 编码 |
| 内存 | LPDDR4 / 4X / 5(部分资料标称上限 32 GB,以官方手册为准) | LPDDR4 / 4X |
| 典型应用 | NVR、AI 盒子、工业 HMI、AI POS、轻量机器人 | 工业网关、HMI、商用显示、自助终端 |
2.4 主流档:RK3568 / RK3566 / RK3562
这一档是出货量最大、生态最成熟的一档,也是新项目最常落入的区间。三者是同一代架构的成本梯度:RK3568 接口最全,RK3566 精简掉 SATA / PCIe 与部分高速口,RK3562 进一步降到四核 A53 与 0.8 TOPS。
| 型号 | CPU | NPU | 视频 | 关键接口差异 | 典型应用 |
|---|---|---|---|---|---|
| RK3568 | 四核 Cortex-A55 @ 2.0 GHz | 1 TOPS | 4K@60 解码 / 1080p 编码 | USB 3.0、PCIe、SATA 3.0、双千兆网、多路 CAN | 工业网关、HMI、NVR、商用显示、自助终端 |
| RK3566 | 四核 Cortex-A55 @ 1.8 GHz | 1 TOPS | 4K@60 解码 | 以 USB 2.0 / MIPI / GMAC 为主,高速口较 RK3568 少 | 平板、电子书、智能面板、轻量终端 |
| RK3562 | 四核 Cortex-A53 | 0.8 TOPS | 1080p | 精简通用接口 | 成本敏感型入门 AIoT |
| RK3568J | 同 RK3568 | 1 TOPS | 同 RK3568 | 工业温度版本 | -40~85 ℃ 工业现场 |
SoC 支持 PCIe / SATA 不代表你手上那块核心板一定引出来了。选型时必须拿板卡厂商的原理图与接口清单对一遍,而不是只看芯片 datasheet。这一点在 RK3566 上尤其明显。
2.5 入门与语音档:RK3308 / RK3326 / RK3328
这一档的共同点是:CPU 用 Cortex-A35 或 A53,主频与带宽有限,但接口刚好够用、功耗与 BOM 都很低。RK3308 更是把音频做到了极致 —— 多路 I2S/TDM、PDM、SPDIF、HDMI ARC,外加硬件 VAD(语音激活检测),是智能音箱的经典选择。
| 型号 | CPU | 存储支持 | 特色 | 典型应用 |
|---|---|---|---|---|
| RK3308 | 四核 Cortex-A35 | SLC NAND、eMMC 4.51、Serial NOR FLASH | 多通道 I2S/TDM + 8ch PDM + SPDIF + HDMI ARC,内置硬件 VAD | 智能音箱、语音模组、离线唤醒 |
| RK3308H1 | 四核 Cortex-A35 | 同 RK3308(SiP 内嵌 128 MB DDR3L) | 芯片内封装 DDR,无需外挂内存,PCB 极简 | 超低成本语音终端 |
| RK3326 | 四核 Cortex-A35 @ 1.5 GHz | MLC NAND、eMMC 4.51、Serial NOR FLASH | Mali-G31 MP2,内置 8M ISP,1080p 解码 | 智能音箱、复古掌机、工控终端、门禁 |
| RK3328 | 四核 Cortex-A53 | eMMC、SD、Serial NOR FLASH | 4K 解码,成本极低 | 入门 TV Box、轻量 NAS |
| RK3506 | 三核 Cortex-A7 + 单核 Cortex-M0 | 以官方手册为准 | 双百兆以太网、2 路 CAN FD、6 路 UART、12 路 PWM、2D 硬件引擎 | 工业现场小控制器 |
2.6 视觉与边缘 AI 档:RV11xx / RK1808
RV 前缀是瑞芯微的视觉产品线:自带 AI-ISP、MIPI-CSI、H.264/H.265 硬编解码,面向 IPC、电池摄像头、门铃与车载视觉。RK1808 则是瑞芯微第一代带独立 NPU(3.0 TOPS)的芯片,现在多见于存量项目与协处理器方案。
| 型号 | CPU | NPU | ISP / 编码 | 定位 |
|---|---|---|---|---|
| RV1126 | Cortex-A7 多核(核数以官方手册为准) | 约 2 TOPS | 4K ISP,H.264 / H.265 | 4K NVR、AI 相机 |
| RV1126B | 四核 Cortex-A53 | 3 TOPS | 4K@30 解码 / 4K@45 编码,12M AI-ISP | 工业 IPC、车载视觉 |
| RV1106 | Cortex-A7 + RISC-V MCU | 1 TOPS(部分资料标 0.5 TOPS,以手册为准) | 5MP ISP,H.264 / H.265 | 主流 IPC、电池摄像头 |
| RV1103 | RISC-V | 0.5 TOPS | 1080p H.264 | 入门门铃 / IPC |
| RK1808 | 双核 Cortex-A35 | 3.0 TOPS(INT8 / INT16 / FP16 混合) | 1080p 编解码,内置 2 MB SRAM | 第一代 NPU 芯片、AI 协处理 |
2.7 经典存量档:RK3399 / RK3288 / PX30
| 型号 | CPU | GPU | 存储支持 | 现状 |
|---|---|---|---|---|
| RK3399 | 双核 Cortex-A72 + 四核 Cortex-A53 | Mali-T860 MP4 | eMMC 5.1、SD、SPI NOR | 生态极好、资料极多,新设计一般不再首选,存量维护量大 |
| RK3399Pro | 同 RK3399 | Mali-T860 MP4 | 同 RK3399 | 内置独立 NPU(约 3 TOPS),老一代 AI 平台 |
| RK3288 | 四核 Cortex-A17 | Mali-T764 | eMMC、SD、NAND | 2014 年一代,仍有大量老设备在跑 |
| PX30 | 四核 Cortex-A35 | Mali-G31 | MLC NAND、eMMC 4.5、NOR FLASH | 入门工控与商显 |
2.8 选型决策树
- 要 8K 多屏、边缘大模型、多路 4K NVR、机器人主控 → RK3588(或按封装/温度选 S / J / M)。
- 要 AI 但预算敏感,4K 就够 → RK3576。
- 工业网关、HMI、商用显示、自助终端 → RK3568;纯显示与轻终端 → RK3566。
- 智能音箱、语音模组、离线唤醒 → RK3308 / RK3308H1。
- 电池摄像头、门铃、IPC → RV1106 / RV1103 / RV1126B。
- 低成本掌机 / 小屏终端 / 老项目维护 → RK3326 / RK3328 / RK3399。
2.9 和 STM32 / ESP32 / 树莓派怎么选
| 维度 | STM32 | ESP32 | RK 应用处理器 | 树莓派 SBC |
|---|---|---|---|---|
| 软件形态 | 裸机 / RTOS | FreeRTOS / IDF | 完整 Linux(Buildroot / Debian / Yocto) | 完整 Linux(Raspberry Pi OS) |
| 实时性 | 硬实时(中断 µs 级) | 软实时 + Wi-Fi 抖动 | 软实时,GPIO 翻转毫秒级 | 软实时,毫秒级 |
| 启动时间 | 毫秒级 | 百毫秒级 | 通常数秒到十几秒(含 U-Boot + 内核) | 20~40 秒 |
| 典型内存 | 几十 KB ~ 数 MB SRAM | 几百 KB SRAM + PSRAM | 512 MB ~ 32 GB LPDDR | 1 ~ 16 GB LPDDR4X |
| 存储 | 片内 Flash + 外挂 NOR | 外挂 SPI NOR Flash | eMMC / SD / SPI NOR / SPI NAND / raw NAND | microSD / eMMC / NVMe |
| 启动链复杂度 | 一段(BootROM 直跳) | 两段(ROM + 二级 bootloader) | 五段:BROM→SPL/DDR→ATF→U-Boot→Kernel | GPU 固件主导的多段 |
| 适合做什么 | 超低功耗、精密控制、汽车 | Wi-Fi 物联网节点 | 网关、视觉、边缘 AI、工业 HMI、NVR | 教育、原型、桌面、创客 |
要硬实时与超低功耗用 MCU;要Wi-Fi 物联网节点用 ESP32;要跑完整 Linux、做视觉 / AI / 多屏 / 工业协议栈,并且要自己做板子、自己管量产,用瑞芯微;只是快速验证想法、不需要自己画板,用树莓派更省事。
3 · 内核与架构:Cortex-A + NPU + 多媒体
理解 RK 的第一件事,是看清一颗 RK SoC 内部到底塞了多少东西。CPU 只是其中一个子系统,旁边并排着 NPU、GPU、VPU、ISP、显示控制器、存储控制器,以及三颗不跑 Linux 的 Cortex-M0。
3.1 一个 RK SoC 内部有什么
以 RK3588 为例,官方 Datasheet 把它拆成:微处理器子系统(4×A76 + 4×A55 + DSU + 3 MB 共享 L3)、内部存储(BootROM、PMU SRAM、Share Memory)、外部存储接口(LPDDR、eMMC、SD/MMC、FSPI)、系统组件(MCU、GIC、CRU、PMU、Timer、PWM、Watchdog、DMAC、安全系统、Mailbox、解压引擎)、视频编解码、显示、图像信号处理,以及一整套高速外设。
来源:Rockchip RK3588 Datasheet / 公开资料整理
3.2 CPU 子系统:big.LITTLE 与 DSU
| 芯片 | CPU 组合 | Cache 结构 | 说明 |
|---|---|---|---|
| RK3588 | 四核 Cortex-A76 + 四核 Cortex-A55 | A76:64 KB I + 64 KB D,512 KB L2/核;A55:32 KB I + 32 KB D,128 KB L2/核;共享 3 MB L3 | big.LITTLE + DSU,八个核各有独立电源域 |
| RK3576 | 四核 Cortex-A72 + 四核 Cortex-A53 | 以官方手册为准 | 最高 2.2 GHz,性能与功耗折中 |
| RK3568 / RK3566 | 四核 Cortex-A55 | 以官方手册为准 | 同构四核,调度简单,功耗可控 |
| RK3399 | 双核 Cortex-A72 + 四核 Cortex-A53 | 以官方手册为准 | 老一代 big.LITTLE,生态成熟 |
| RK3308 / RK3326 | 四核 Cortex-A35 | 以官方手册为准 | A35 是 A53 的低成本裁剪版 |
Linux 会按负载在 big 核与 LITTLE 核之间迁移任务。做性能测试前先 cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq 看各核频率,再决定是算力不够还是调度/温控把频率压下去了。
3.3 NPU:RK 最有辨识度的一块
瑞芯微从 RK1808 开始内置自研 NPU,到 RK3588 / RK3576 已经做到 6 TOPS。它支持 INT4 / INT8 / INT16 / FP16(部分型号标称还支持 BF16 / TF32)混合运算,兼容 TensorFlow、PyTorch、Caffe、MXNet 等框架导出的模型。
| 芯片 | NPU 算力 | 支持的精度 | 备注 |
|---|---|---|---|
| RK3588 / RK3588S/J/M | 6 TOPS(三核架构) | INT4 / INT8 / INT16 / FP16 | 新设计的主力 AI 平台 |
| RK3576 | 6 TOPS | INT4 / INT8 / INT16 / FP16,支持 Transformer 类算子 | 4K 场景性价比档 |
| RK3568 / RK3566 | 1 TOPS | INT8 / INT16 / FP16 | 轻量分类与检测 |
| RK3562 | 0.8 TOPS | 以官方手册为准 | 语音唤醒级 |
| RV1126 / RV1126B | 约 2 / 3 TOPS | 以官方手册为准 | 视觉产品线 |
| RV1106 / RV1103 | 1 / 0.5 TOPS | 以官方手册为准 | IPC 与电池摄像头 |
| RK1808 | 3.0 TOPS | INT8 / INT16 / FP16 | 第一代 NPU,22 nm FD-SOI |
3.4 多媒体引擎:VPU / RGA / ISP
| 单元 | 全称 | 干什么 | 不用它的代价 |
|---|---|---|---|
| VPU | Video Processing Unit | H.264 / H.265 / VP9 / AV1 等格式的硬件编解码 | 软解 4K 会吃掉大量 CPU,风扇狂转、帧率掉到底 |
| RGA | Raster Graphic Acceleration | 2D 加速:缩放、旋转、裁剪、色彩空间转换、合成 | 用 CPU 做 YUV→RGB 与缩放,开销非常高 |
| ISP | Image Signal Processor | 摄像头原始数据的去噪、HDR、3A、畸变校正 | 图像质量明显下降,且 CPU 负载陡增 |
| GPU | Mali 系列 | 3D 渲染与通用计算(OpenGL ES / OpenCL / Vulkan) | UI 卡顿,无法跑 3D 界面 |
8K 编解码是 RK3588 独有能力,RK3576 是 4K@120 解码 / 4K@60 编码,RK3568 只有 4K@60 解码 + 1080p 编码。把 RK3588 的 demo 直接搬到 RK3568 上跑 4K 编码,一定跑不动。选型阶段就把编解码规格写进需求表。
3.5 存储控制器一览
这是本文作者最关心的一节 —— 存储控制器的数量和类型,直接决定了器件能落在哪里。
| 控制器 | 接口 | 典型挂载器件 | 说明 |
|---|---|---|---|
| SDHCI / SDMMC | eMMC 5.1(8 bit,HS400 / HS200 / DDR50) | eMMC、SD NAND | 量产方案的主启动介质,焊死在板上,抗震一致性好 |
| SDMMC | SD 3.0 / MMC 4.51(4 bit) | microSD 卡、SD NAND | 原型开发与可更换场景;SD NAND 可直接替掉卡座 |
| FSPI | Flexible Serial Flash Interface,1 / 2 / 4 bit,2 片选 | SPI NOR、SPI NAND | RK356x 起可从此通道启动;也是放参数区 / 校准数据的首选 |
| NANDC | 异步并行 NAND,8 bit | raw NAND(SLC / MLC) | 老平台与低成本方案使用,需要坏块管理与 ECC |
| PCIe / SATA | PCIe 3.0 / 2.1、SATA 3.0 | NVMe SSD、SATA SSD | 扩展容量用,一般不做启动介质(部分板卡支持,以手册为准) |
用于启动的 SPI Flash 挂在 FSPI(Flash SPI)通道 上,它是 SoC 专门留给启动 Flash 的控制器,与通用 SPI0 / SPI1 / SPI2 不是同一组引脚、也不是同一个设备树节点。画原理图时接错通道,BootROM 就探测不到 ID BLOCK,板子会直接落到 USB 下载模式。
3.6 三个 Cortex-M0 与电源域
RK3588 内部集成三颗 Cortex-M0:一颗在 VD_PMU 电源域(16 KB Cache + 16 KB TCM),一颗在 VD_NPU(16 KB Cache + 64 KB TCM),一颗在 PD_CENTER(32 KB TCM)。它们服务于电源管理、NPU 协处理与系统控制,不是给应用开发者写硬实时逻辑用的。
- 45 个独立电源域(RK3588):可以按场景关掉不用的模块,这是低功耗设计的基础。
- 18 个 PLL:时钟树非常灵活,也意味着设备树里的时钟配置出错概率更高。
- Crypto 引擎:支持 SHA-1/256/512、MD5、SM3、HMAC、AES、DES/TDES、SM2/SM4 与 PKA(RSA/ECC 最高 4096 bit),是安全启动的硬件基础。
4 · 开发环境与 SDK 获取
瑞芯微 Linux SDK 只支持在 Linux 主机上编译,且由几十个 git 仓库组成,用 repo 统一管理。这一章解决「代码从哪来、在哪编、编之前要装什么」。
4.1 三种拿到 SDK 的方式
| 方式 | 怎么做 | 优点 | 注意点 |
|---|---|---|---|
| 向瑞芯微申请 | 向技术窗口申请 SDK 权限,提供 SSH 公钥(邮件至官方 FAE 渠道)后同步代码 | 拿得到完整 SDK 与官方文档,含 rkbin 闭源二进制 | 有流程与授权周期,适合正式项目 |
| 板卡厂商 SDK | 从 Firefly / Radxa / Khadas / FriendlyELEC / Luckfox 等厂商获取其维护的 SDK | 开箱即用,板级配置齐全,社区资料多 | 与厂商硬件绑定,换板要重新适配 |
| 社区主线 | 直接用主线 U-Boot / Linux kernel + 自行补齐闭源固件 | 内核新、可维护性好 | rkbin 里的 DDR / BL31 二进制仍需单独获取,工作量最大 |
4.2 编译主机:只支持 Linux
① SDK 使用交叉编译,必须下载到 x86_64 PC 上,不要下载到 ARM64 开发板上编;② 官方推荐 Ubuntu(不同 SDK 版本要求 18.04 / 20.04 / 22.04,以 SDK 文档为准);③ 不要把 SDK 放在虚拟机共享目录或含非英文字符的路径下,这两点都会导致编译失败。
| 角色 | 系统 | 承担什么 |
|---|---|---|
| 编译服务器 | Ubuntu x86_64(版本按 SDK 要求) | 交叉工具链、全量编译、打包 update.img |
| 开发 PC | Windows / Linux / macOS 均可 | 装烧录工具(RKDevTool)、串口终端、SSH 登录服务器 |
| 目标板 | RK 板卡 | 串口输出日志,USB OTG 口进 MaskROM / Loader 模式 |
来源:Rockchip Linux SDK 开发指南 / 厂商 Wiki 整理
4.3 依赖包与工具链
官方给出的一揽子依赖(不同 SDK 版本略有差异,这里按主流 Linux SDK 给出):
$ sudo apt-get update
$ sudo apt-get install git ssh make gcc libssl-dev liblz4-tool expect \
expect-dev g++ patchelf chrpath gawk texinfo diffstat binfmt-support \
qemu-user-static live-build bison flex fakeroot cmake \
gcc-multilib g++-multilib unzip device-tree-compiler \
ncurses-dev libgucharmap-2-90-dev bzip2 expat gpgv2 \
cpp-aarch64-linux-gnu libgmp-dev libmpc-dev bc python-is-python3 \
libstdc++-12-dev repo
交叉工具链放在 SDK 的 prebuilts/ 下,u-boot 与 kernel 用它;rootfs 侧则由 Buildroot / Debian / Yocto 各自的工具链负责,不需要手动指定。
4.4 repo 与多仓库管理
一个完整的 Linux SDK 由几十个 git 仓库组成(kernel、u-boot、rkbin、buildroot、debian、yocto、device、external、app、docs、tools…),用 repo 按 manifest 统一拉取与切换分支。
# 初始化(以厂商提供的 manifest 为准)
$ repo init --no-clone-bundle -u <manifest 仓库地址> -b <分支> -m <manifest.xml>
# 同步代码
$ .repo/repo/repo sync -c --no-tags
$ .repo/repo/repo start <分支名> --all
# 后续更新
$ .repo/repo/repo sync -c --no-tags
SDK 的版本写在 manifest 文件名里,排查问题前先记下来:
$ readlink -f .repo/manifest.xml
/home/<user>/proj/.repo/manifests/rk3588/rk3588_linux_release_20230301_v1.0.6e.xml
贴到 issue 或问厂商 FAE 时,这一行比「我用的是最新 SDK」有用一百倍。
4.5 目标板侧的准备
- 一根能跑 1500000 波特率 的 USB 串口线(CP2104 / FT232 等,CH340 在部分高波特率下不稳)
- 一根数据线(不是充电线)用于 USB OTG 烧录与 ADB
- 确认板载存储介质:eMMC / SD 卡槽 / SPI NOR 焊位,以及对应的 boot 按键位置
- 确认 RECOVERY(或 MASKROM)按键与短接点,这是进烧录模式的物理入口
- Windows 上先装 DriverAssitant(Rockchip USB 驱动),再打开 RKDevTool
- Linux 上配好 udev 规则,否则每次烧录都要 sudo
# /etc/udev/rules.d/99-rk-rockusb.rules
SUBSYSTEM=="usb", ATTR{idVendor}=="2207", MODE="0666", GROUP="users"
# 生效
$ sudo udevadm control --reload-rules && sudo udevadm trigger