上篇把板子点亮了,健康检查全过。这篇往下走一步:把 RK182X 的开发环境搭起来。
先说清楚这篇做什么、不做什么。RK182X 是协处理器,板子能开机不代表能开发——真要在上面做 AI 应用,PC 端要装工具链,板端要确认驱动、固件和服务,最后还得验证"PC 编译 → 传板 → 运行"这条链路是通的。这篇就做这三件事,每一步都给验证命令,做完你手里的环境是验收过的,不是"应该能用"。
内容对应官方 wiki 的《环境搭建详解》和《入门指南》两章,链接放在各节开头,本文按实际操作顺序串起来。
一、先搞清楚分工
完整文档:《RK182X SDK 总览》
RK182X 是 PCIe 协处理器,不带应用 CPU,也不跑 Linux。程序都在主控 RK3588 上运行,模型转换在 PC 上做,wiki 原文给的框图:
PC (Ubuntu x86_64) 主控板 (aarch64)
───────────────────── ─────────────────
apt install 工具链 /tmp/hello_rk182x
│ │
▼ ▼
aarch64-linux-gnu-gcc ─────scp/ssh────────────► ./hello_rk182x → Hello RK182X!
三方的分工:
●PC 端:装交叉编译工具链和 rknn3-toolkit。toolkit 负责把模型转成 RKNN 格式,仅支持 x86_64;
●板端:跑应用,经 librknn3_api 发起推理。板端只装 toolkit-lite(推理用,不转换);
●RK182X:专职推理。它不带 U-Boot / MaskROM,也没有 USB 烧录口,固件由主控经 PCIe 下发(rknn3.service 管理)。
RK182X 自己没有独立启动流程,完全依赖主控,wiki 给的启动链:
主控 RK3588 上电启动
↓
主控内核加载 pcie-rkep 驱动
↓
枚举到 PCI 设备 1d87:182a
↓
rknn3.service 启动
↓
pcie_upgrade_tool 将 rknn3_rk1820.img 通过 PCIe 下发
↓
rknn3_transfer_proxy 拉起,对外提供 librknn3_api.so 接口
↓
应用进程可调用推理
应用侧的运行时入口是librknn3_api.so,PCIe 细节由代理进程rknn3_transfer_proxy屏蔽,应用不用感知。
RKNN 3.x 支持的输入格式:PyTorch(导出 ONNX,推荐)、ONNX(最稳)、TensorFlow、PaddlePaddle、Caffe(部分算子受限)。

二、PC 端:交叉编译工具链
本章完整文档:《RK182X 环境搭建详解》
系统要求
wiki 给的 PC 配置要求:

模型量化不需要 NVIDIA GPU,纯 CPU 即可。
装基础依赖
Debian/Ubuntu 系统:
sudo apt update
sudo apt install -y \
build-essential \
gcc-aarch64-linux-gnu \
g++-aarch64-linux-gnu \
binutils-aarch64-linux-gnu \
git wget curl file openssh-client
验证工具链:
aarch64-linux-gnu-gcc --version
输出:
aarch64-linux-gnu-gcc (Debian 12.2.0-14+deb12u1) 12.2.0
环境变量
三个关键变量:CROSS_COMPILE、ARCH、CC。临时设置:
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
验证:
"${CROSS_COMPILE}gcc" --version
要永久生效,写进.bashrc:
echo 'export CROSS_COMPILE=aarch64-linux-gnu-' >> "$HOME/.bashrc"
echo 'export ARCH=arm64' >> "$HOME/.bashrc"
source "$HOME/.bashrc"
没开发板先练手
手边暂时没有板子,可以先装 QEMU:
sudo apt install -y qemu-user-static libc6-arm64-cross
交叉编译出来的 aarch64 程序,先用 QEMU 在 PC 上验证能不能跑,排查掉一层环境问题再上板。
三、PC 端:RKNN 3.x Toolkit
模型转换用的 rknn3-toolkit 装在 Python 虚拟环境里。SDK 包里有 cp310 / cp312 两个版本的 wheel:
python3 -m venv ~/rk1828-npu-env
source ~/rk1828-npu-env/bin/activate
cd /userdata/RK1820_RK1828_AI_SDK/rknn/rknn3-toolkit/rknn3-toolkit/packages
pip install numpy pillow onnx
pip install rknn3_toolkit-*.whl
验证安装:
python3 -c "from rknn.api import RKNN; print('RKNN 3.x OK')"
输出:
RKNN 3.x OK
两个限制要提前知道:
●toolkit wheel 仅支持 x86_64,装到 RK3588 板端会直接报错。模型转换必须在 PC 上做,转好的.rknn文件再传板;
●板端只能装 toolkit-lite(推理用,不转换),wheel 在 SDK 的rknn/rknn3-toolkit/rknn3-toolkit-lite/packages/下,提供 cp39 / cp310 / cp311 / cp312 四个 Python 版本。
四、板端:SDK、驱动、固件、服务
本章完整文档:《RK182X 环境搭建详解》、《RK182X 入门指南》
4.1 SDK 在哪
板端 SDK 部署在/userdata/RK1820_RK1828_AI_SDK/,查目录结构:
find /userdata/RK1820_RK1828_AI_SDK -maxdepth 2 -type d | sort
输出:
/userdata/RK1820_RK1828_AI_SDK
/userdata/RK1820_RK1828_AI_SDK/docs
/userdata/RK1820_RK1828_AI_SDK/driver
/userdata/RK1820_RK1828_AI_SDK/driver/pcie-rkep
/userdata/RK1820_RK1828_AI_SDK/examples
/userdata/RK1820_RK1828_AI_SDK/examples/anomaly-detection
/userdata/RK1820_RK1828_AI_SDK/examples/docker
/userdata/RK1820_RK1828_AI_SDK/examples/gstreamer
/userdata/RK1820_RK1828_AI_SDK/examples/rockit_yolo_detect
/userdata/RK1820_RK1828_AI_SDK/examples/vi_yolo_venc
/userdata/RK1820_RK1828_AI_SDK/examples/web
/userdata/RK1820_RK1828_AI_SDK/output
/userdata/RK1820_RK1828_AI_SDK/package
/userdata/RK1820_RK1828_AI_SDK/pkgroot
/userdata/RK1820_RK1828_AI_SDK/rknn
/userdata/RK1820_RK1828_AI_SDK/rknn/rknn3-model-zoo
/userdata/RK1820_RK1828_AI_SDK/rknn/rknn3-runtime
/userdata/RK1820_RK1828_AI_SDK/rknn/rknn3-toolkit
/userdata/RK1820_RK1828_AI_SDK/rknn/rknn-gstreamer-plugins
/userdata/RK1820_RK1828_AI_SDK/scripts
几个关键位置:driver/pcie-rkep是驱动源码;rknn/下面是 toolkit、runtime、model-zoo、gstreamer-plugins 四个组件(当前都是 V1.0.0);examples/里带 docker、gstreamer、yolo 检测等场景示例。
4.2 驱动和设备节点
设备节点:
ls /dev/pcie-rkep-*
输出:
/dev/pcie-rkep-0004:41:00.0
驱动加载情况:
lsmod | grep pcie_rkep
返回空是正常的——pcie-rkep 已经内置在内核里,不是以模块形式加载的。
PCIe 设备确认:
/usr/bin/pcie_upgrade_tool ld 2>&1 | sed 's/\x1b\[[0-9;]*m//g'
输出:
Program directory: /usr/bin/
List of connected rkep devices
Addr=0004:41:00.0 [1d87:182a]
看到1d87:182a就说明 RK182X 在位。
4.3 固件和服务
前面说过,RK182X 没有独立启动介质,固件只能由主控通过 PCIe 下发。固件在板端这个位置:
ls -lh /lib/firmware/rknn3_rk1820.img
输出:
- rwxr-xr-x 1 root root 2.2M8月19日 17:59 /lib/firmware/rknn3_rk1820.img
固件由 rknn3.service 经 PCIe 自动下发,正常使用不需要手动操作。确认服务在跑:
systemctl is-active rknn3.service
输出:
active
要看细节用systemctl status rknn3.service,输出(节选):
● rknn3.service - rknn3 runtime service
Loaded: loaded (/lib/systemd/system/rknn3.service; enabled; preset: enabled)
Active: active (running) since Mon 2026-08-17 17:01:04 UTC; 31s ago
Process: 5042 ExecStart=/bin/rknn3_startup start (code=exited, status=0/SUCCESS)
Main PID: 5065 (rknn3_transfer_)
这一环的五个关键节点(wiki ch02 汇总):
●固件路径:/lib/firmware/rknn3_rk1820.img
●设备节点:/dev/pcie-rkep-
●代理进程:/bin/rknn3_transfer_proxy
●PCIe 设备 ID:0x1d87:0x182a
●系统服务:rknn3.service
4.4 demo 工具
which rknn3_cnn_demo
which rknn3_llm_demo
which rknn3_vlm_demo
which rknn3_model_test
四条都返回/usr/bin/下的路径,板端环境就绪。
五、链路验收:第一个程序
本章完整文档:《RK182X 入门指南》
环境各件都齐了,最后用 wiki 的示例程序把"交叉编译 → 传板 → 运行"整条链路走一遍。链路通了,后面模型文件上板走的就是同一条路。
创建hello_rk182x.c:
#include <stdio.h>
#include <unistd.h>
int main(void)
{
printf("Hello RK182X!\n");
printf("PID: %d\n", getpid());
return 0;
}
交叉编译:
aarch64-linux-gnu-gcc -Wall -Wextra -O2 hello_rk182x.c -o hello_rk182x
检查产物架构:
file hello_rk182x
输出(关键行):
hello_rk182x: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, ... not stripped
Ubuntu 新版本 GCC 默认生成 PIE,显示pie executable是正常的。再用 readelf 确认一遍:
readelf -h hello_rk182x | head -20
输出关键行:
系统架构: AArch64
设置板端信息并传板运行:
export TARGET_USER=linaro
export TARGET_IP=<开发板IP>
export TARGET="$TARGET_USER@$TARGET_IP"
ssh "$TARGET" 'uname -m'
输出:
aarch64
scp hello_rk182x "$TARGET:/tmp/"
ssh "$TARGET" 'chmod +x /tmp/hello_rk182x && /tmp/hello_rk182x'
输出:
Hello RK182X!
PID: 24027
到这里,编译、传输、执行整条链路验证完毕。板子上本身有原生 GCC,小工具也可以直接在板上编译:
gcc hello_rk182x.c -o hello_rk182x
./hello_rk182x
六、环境验收清单
做完上面几步,逐项对一遍:

七、常见的坑

更全的 FAQ 在 wiki ch02 / ch04 / ch05 的常见问题章节,链接在上面各节开头。
八、附录:SDK 版本与 NPU 参数速查
SDK 软件栈版本(已经 Release Note / 源码验证):

NPU 关键参数(官方数据表):
|
参数 |
规格 |
|
CPU |
3 核 64 位 RISC-V(控制核) |
|
NPU |
8 核,20 TOPS @INT8 |
|
精度 |
INT4 / INT8 / INT16 / FP8 / FP16 / BF16 |
|
频率档位 |
500 / 850 / 1000 MHz(SODIMM 模组最高 1000,M.2 最高 850) |
|
每核 L1 Cache |
32KB I-Cache + 32KB D-Cache |
|
每核 L2 Cache |
128KB |
|
系统 SRAM |
512KB |
供电规格:推荐 12V,电源功率容量需大于 40W,开发板供电选项有 12V / 24V / 48V DC 三种。
Model Zoo 预置模型(ls rknn/rknn3-model-zoo/examples/实测):
FastVLM glm_edge GME-Qwen2-VL HY_MT_1_5
InternVLM Janus_Pro MiniCPM_V_4 mobilenet_v1
mobilenet_v2 Qwen2_5 Qwen2_5_Omni Qwen2_5_VL
Qwen3 Qwen3_Embedding Qwen3_VL resnet
SmolVLM yolov5 yolov6 yolov8
按能力分:LLM(Qwen2.5 0.5B–7B、Qwen3 0.6B–8B)、VLM(Qwen2.5-VL、Qwen3-VL、FastVLM、InternVL3、SmolVLM 等)、检测(YOLOv5 / v6 / v8、YOLO-World)、分类(MobileNetV1/V2、ResNet-50)、语音(SenseVoice)、检索(Qwen3-Embedding)。
主控侧能力参考:RK3588 支持 H.265 / VP9 8K@60fps 解码、8K@30fps 编码,RGA 2D 支持最大 8192×8192 的缩放与旋转。wiki 特别注明:RK3588 参考数据仅作主控能力参考,不代表 RK182X 能力。
收尾
到这里,PC 端和板端的环境都验收过了,部署链路也是通的。环境就绪之后的事——模型怎么转、应用怎么写——wiki 后续的开发指南、SDK 参考、硬件参考等章节会逐步展开,模型上板的实测也会单独成篇,用真机数据说话。
本文的复现路径:生态平台 wiki 《环境搭建详解》和《入门指南》两章,跟着做可以逐步复现。
本系列持续更新,可以关注公众号追更。
355



被折叠的 条评论
为什么被折叠?



