一、前言
RK3588 作为瑞芯微旗舰级 8nm 工业级处理器,凭借超强的 NPU 算力、丰富的多媒体接口和跨平台兼容性,成为嵌入式 AI、边缘计算、工业控制等领域的热门选择。
很多新手拿到 SDK 后面对一堆目录和文件无从下手,本文将从目录结构解析、核心脚本作用、编译流程实战三个维度,带你彻底搞懂 RK3588 SDK 的底层逻辑,为后续开发打下坚实基础。
二、SDK 目录结构
目录 / 文件 | 核心作用 | 关键说明 |
|---|---|---|
| 上层应用示例 | 存放官方提供的 Demo 程序,如 LVGL 界面、多媒体测试工具、AI 推理示例等,可直接参考或二次开发 |
| 轻量级根文件系统构建系统 | 用于快速生成极简 Linux 根文件系统,适合资源受限的场景,支持自定义软件包裁剪和配置 |
| 通用公共代码与配置 | 存放跨平台通用的脚本、宏定义、工具函数,被多个模块共享调用 |
| Debian 根文件系统支持 | 提供 Debian 系统的构建脚本和配置,可生成完整的 Debian 发行版,适合需要丰富软件生态的场景 |
| 芯片与开发板配置中心 | 存放 RK3588 芯片和对应开发板的设备树(DTS)、板级配置文件、编译脚本,是 SDK 定制化的核心目录 |
| 官方开发文档集合 | 包含芯片 datasheet、SDK 使用指南、编译教程、驱动开发手册等,是开发时的重要参考资料 |
| 第三方开源组件 | 存放官方适配的第三方库,如音频编解码、视频处理、网络协议栈、recovery 工具等 |
| Linux 内核源码 | 前者通常是 |
| 预编译工具链与二进制文件 | 存放交叉编译工具链、预编译的固件组件,避免每次从头编译,大幅提升编译效率 |
| Rockchip 二进制固件集合 | 存放瑞芯微芯片的闭源固件,如 DDR 初始化固件、Trust 固件、SCP 固件等,是芯片启动的关键 |
| 开发板固件与烧录相关 | 存放编译生成的固件分区文件、烧录配置,方便后续打包和烧录操作 |
| 开发与调试工具集 | 包含打包脚本、烧录工具、调试工具、设备树编译工具等,是开发过程中的辅助工具 |
| 引导加载程序源码 | 存放 RK3588 定制化的 U-Boot 源码,负责芯片上电初始化、引导内核启动 |
| Yocto 项目构建支持 | 提供 Yocto 构建系统的配置文件,支持构建高度定制化的 Linux 发行版 |
| 一键编译核心脚本 | SDK 的入口脚本,支持一键编译 U-Boot、Kernel、根文件系统,并打包成完整固件 |
| 顶层构建规则 | 关联各个模块的编译规则,被 |
| 固件烧录脚本 | 配合瑞芯微烧录工具,实现开发板的一键烧录,支持分区烧录和完整固件烧录 |
三、核心模块深度解析
3.1 启动链相关模块:u-boot + rkbin
u-boot 目录: 包含针对 RK3588 定制的引导程序,支持SD 卡启动、eMMC 启动等多种方式。关键文件:
configs/:存放不同开发板的 U-Boot 配置文件arch/arm/mach-rockchip/:存放 RK3588 芯片相关的板级初始化代码
rkbin 目录: 存放瑞芯微闭源固件,包括 DDR 初始化固件、ATF(ARM Trusted Firmware)固件、SCP 固件,这些固件负责芯片上电后的基础硬件初始化,是启动流程中不可或缺的部分。
3.2 内核模块:kernel-6.1
kernel-6.1是 SDK 的核心,包含 RK3588 定制化的 Linux 内核源码,支持丰富的外设驱动和 AI 加速功能。
关键目录说明:
arch/arm64/boot/dts/rockchip/:存放 RK3588 的设备树文件(DTS/DTSI),用于描述硬件资源,修改设备树是外设驱动开发的核心步骤之一。drivers/:存放各种外设驱动,如 USB、HDMI、PCIe、NPU、摄像头等,RK3588 官方已适配大部分外设,如需自定义驱动可在此添加。configs/:存放内核配置文件,可通过make menuconfig进行裁剪和配置。
3.3 根文件系统模块:buildroot /debian/yocto
SDK 提供了三种主流的根文件系统构建方式,满足不同开发需求:
Buildroot:轻量级、快速构建,适合资源受限的场景,可自定义裁剪软件包,生成极简根文件系统。
Debian:完整的 Debian 发行版,支持 apt 包管理,软件生态丰富,适合需要快速开发应用的场景。
Yocto:高度定制化的构建系统,支持分层配置和多架构构建,适合工业级、可量产的产品开发。
四、核心脚本实战:build.sh 一键编译解析
build.sh是 SDK 的核心入口脚本,封装了复杂的编译流程,支持一键编译各个模块,大幅降低开发门槛。
4.1 脚本基础用法
# 1. 一键完整编译 ./build.sh # 2. 单独编译 U-Boot ./build.sh uboot # 3. 单独编译内核 ./build.sh kernel # 4. 单独编译 Buildroot 根文件系统 ./build.sh buildroot # 5. 单独编译 Debian 根文件系统 ./build.sh debian编译成功后,完整固件会生成在output/update/update.img
4.2 脚本执行流程
build.sh本质上是对各个模块编译流程的封装,执行逻辑如下:
初始化编译环境,加载板级配置文件;
编译
rkbin固件,生成 DDR/ATF 二进制文件;编译
u-boot,生成 U-Boot 镜像;编译
kernel,生成内核镜像、设备树文件和驱动模块;编译根文件系统(Buildroot/Debian/Yocto);
调用
mkfirmware.sh脚本,将所有分区镜像打包成update.img固件
五、新手开发流程建议
环境准备:在 Ubuntu 22.04 环境下安装依赖工具,配置交叉编译工具链;
首次编译:先执行
./build.sh all完成完整编译,验证 SDK 环境是否正常;模块开发:根据需求修改 U-Boot、内核或根文件系统,再单独编译对应模块;
固件烧录:使用
rkflash.sh或瑞芯微官方工具RKDevTool烧录固件到开发板;调试验证:通过串口或 SSH 登录开发板,验证外设和应用功能是否正常。