RK182X SDK 总览
整体框图
RK182X SDK
├─ 驱动与固件 pcie-rkep / rknn3_rk1820.img / pcie_upgrade_tool
├─ 用户态运行时 librknnrt.so / librknn3_api.so / rknn3_transfer_proxy
├─ 模型工具链 rknn3-toolkit / rknn3-model-zoo / rknn3_*_demo
└─ 示例 examples/{anomaly-detection, vi_yolo_venc, gstreamer, ...}如果还没装好工具链,请先看 ch02 环境搭建。
1. SDK组成
RK182X 是 PCIe Endpoint 形态的 AI 加速卡,自身不跑 Linux。SDK 是主控(RK3588 / RK3576)侧的扩展包。
驱动与固件
| 组件 | 作用 |
|---|---|
pcie-rkep 驱动 | 主控侧 PCIe Endpoint 驱动,负责枚举 NPU 设备 |
rknn3_rk1820.img | NPU 固件,通过 PCIe 由主控下发 |
pcie_upgrade_tool | 固件下载与设备管理工具 |
用户空间运行时
| 组件 | 作用 |
|---|---|
librknnrt.so | 片上 RKNPU 推理运行时(RK182X 加速卡不直接走此库) |
librknn3_api.so | RKNN 3.x 统一 API(RK182X 加速卡的运行时入口) |
rknn3_transfer_proxy | 代理守护进程,对外屏蔽 PCIe 细节 |
librknnsmi.so | 设备信息查询 |
实测:
$ systemctl status rknn3.service --no-pager -l | head -15
● rknn3.service - rknn3 runtime service
Loaded: loaded (/lib/systemd/system/rknn3.service; enabled; preset: enabled)
Active: active (running) since Fri 2026-08-14 10:44:12 UTC; 4h 10min ago
Main PID: 1123 (rknn3_transfer_)
CPU: 23.728s
CGroup: /system.slice/rknn3.service
├─1123 /bin/rknn3_transfer_proxy
└─1149 rknn3_transfer_proxy -s 0004:41:00.0
$ /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]
$ ls -l /dev/pcie-rkep-*
crw------- 1 root root 10, 124 8月20日 16:56 /dev/pcie-rkep-0004:41:00.0以上为示例输出:时间 / 时区因环境而异;实际 BDF 因主板而异(本机实测
0004:41:00.0);代理进程名可能带 hash 后缀(如rknn3_transfer_proxy_c36211b1),以pgrep -f rknn3_transfer_proxy实际结果为准。
模型与工具链
| 组件 | 作用 |
|---|---|
rknn3-toolkit | Python 模型转换 / 量化 / 仿真工具 |
rknn3-model-zoo | 官方预置参考模型 |
rknn3_*_demo | CNN / LLM / VLM 推理示例 |
目录结构
RK1820_RK1828_AI_SDK/
├── driver/pcie-rkep/ # PCIe EP 驱动源码
├── rknn/
│ ├── rknn3-runtime/ # 运行时库
│ ├── rknn3-toolkit/ # 模型工具链
│ └── rknn3-model-zoo/ # 参考模型
├── examples/ # 应用示例
│ ├── anomaly-detection/ # 工业异常检测(V1.0.0 新增)
│ ├── vi_yolo_venc/ # 摄像头 + YOLO + 编码
│ ├── rockit_yolo_detect/ # Rockit + YOLO 检测
│ ├── gstreamer/ # GStreamer 插件
│ ├── docker/ # Docker 部署
│ └── web/ # Web 服务
├── scripts/ # 构建脚本
├── package/ # 预编译产物
└── docs/ # Release Note2. RK182X 是怎么"启动"的?
RK182X 自身没有独立启动流程,依赖主控:
主控 RK3588 / RK3576 上电启动
↓
主控内核加载 pcie-rkep 驱动
↓
枚举到 PCI 设备 1d87:182a
↓
rknn3.service 启动
↓
pcie_upgrade_tool 将 rknn3_rk1820.img 通过 PCIe 下发
↓
rknn3_transfer_proxy 拉起,对外提供 librknn3_api.so 接口
↓
应用进程可调用推理关键节点
- 固件路径:
/lib/firmware/rknn3_rk1820.img - 设备节点:
/dev/pcie-rkep-<BDF>(BDF 因主板而异,以pcie_upgrade_tool ld输出为准) - 服务单元:
rknn3.service
3. 常见问题
| 现象 | 原因 | 处理 |
|---|---|---|
rknn-smi info 不工作 | rknn-smi 不适用 RK182X 加速卡 | 用 systemctl status rknn3.service 替代 |
找不到 librknn3_api.so | 运行时 deb 没装 | 装 rknn3-runtime deb |
pcie_upgrade_tool 命令缺失 | SDK 没解压完整 | 重解压 SDK 到 $SDK_DIR |
rknn3_transfer_proxy 没起来 | 服务异常 | sudo systemctl restart rknn3.service |
4. 下一步
NPU / MPP 两篇位于上级的
env/子目录(非本 quick-start-guide 目录),链接路径与其他章节不同属正常。
