RK182X 开发环境快速搭建
RK182X 是 PCIe 加速卡,不带应用 CPU,所有程序都得在主控(RK3588 / RK3576)上跑。
整体框图
主控(RK3588 aarch64) RK182X (PCIe)
─────────────────────── ─────────────
原生 gcc(已装) 无应用 CPU
/lib/firmware/rknn3_rk1820.img ──► PCIe 固件加载
│ NPU 推理
▼
可执行文件 ──► 直接跑 + rknn3.service 转发 ──► /dev/dri/renderD128想看每个组件的安装详解或板端完整流程,请参考 ch04 开发环境详解 或 ch05 入门指南。
1. 板端原生 gcc 验证
RK182X 加速卡不带应用 CPU,所有程序都在主控(RK3588 / RK3576)上原生编译运行。
检查 gcc
which gcc输出:
/usr/bin/gccgcc --version | head -2输出:
gcc (Debian 12.2.0-14+deb12u1) 12.2.0
Copyright (C) 2022 Free Software Foundation, Inc.编译
cat > test.c <<'EOF'
#include <stdio.h>
int main(void) {
printf("Native compile test on RK3588\n");
return 0;
}
EOF
gcc test.c -o test_native
./test_native输出:
Native compile test on RK35882. RK182x固件加载
RK182X 不带 U-Boot / MaskROM / USB 烧录口,固件由主控(RK3588 / RK3576)通过 PCIe 下发。
看 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]检查 pcie-rkep 驱动
lsmod | grep pcie_rkep以下命令返回空属正常,驱动已内置到内核,不是出错。
输出:
(无输出 — 驱动已内置到内核)通过 PCIe 下发固件
# BDF 自动探测
bdf=$(/usr/bin/pcie_upgrade_tool ld 2>&1 | sed 's/\x1b\[[0-9;]*m//g' | grep -o 'Addr=[0-9:a-f]*' | head -1 | cut -d= -f2)
sudo /usr/bin/pcie_upgrade_tool -s "$bdf" uf /lib/firmware/rknn3_rk1820.img输出(设备已运行时):
Program directory: /usr/bin/
Downloading firmware...
Device boot state: 0x00004b52
Device is not in maskrom mode or loader mode设备已在正常运行状态(0x00004b52),固件更新需在 maskrom/loader 模式下进行。正常情况下固件由
rknn3.service自动加载,无需手动执行此命令。
检查代理服务状态
systemctl status rknn3.service --no-pager输出(示例):
● rknn3.service - rknn3 runtime service
Loaded: loaded (/lib/systemd/system/rknn3.service; enabled; preset: enabled)
Active: active (running) since Mon 2026-08-17 17:10:10 CST; 31min ago
Process: 508 ExecStart=/bin/rknn3_startup start (code=exited, status=0/SUCCESS)
Main PID: 1795 (rknn3_transfer_)
CPU: 8min 27.987s
CGroup: /system.slice/rknn3.service
├─1795 /bin/rknn3_transfer_proxy
└─1807 rknn3_transfer_proxy -s 0004:41:00.0关键节点
- 固件路径:
/lib/firmware/rknn3_rk1820.img - 设备节点:
/dev/pcie-rkep-<BDF> - 代理进程:
/bin/rknn3_transfer_proxy - PCIe 设备 ID:
0x1d87:0x182a - 系统服务:
rknn3.service
3. SDK 目录在哪?
SDK 可部署到任意目录,如 /userdata/RK1820_RK1828_AI_SDK/ 或 /home/<user>/RK182X_SDK/,以实际部署位置为准。下文用 $SDK_DIR 表示 SDK 根目录:
SDK_DIR=/userdata/RK1820_RK1828_AI_SDK # 按实际部署路径替换
ls $SDK_DIR/输出:
build.sh
docs
driver
examples
package
pkgroot
rknn
scripts| 目录 | 用途 |
|---|---|
driver/ | pcie-rkep PCIe 驱动源码(含 Makefile) |
rknn/rknn3-runtime/ | librknnrt.so、librknn3_api.so 用户态运行时 |
rknn/rknn3-toolkit/ | Python 模型转换 / 量化工具(仅 x86_64 PC 可装) |
rknn/rknn3-model-zoo/ | 官方预置参考模型 |
examples/ | 应用示例 |
scripts/ | 构建脚本 |
package/ | 预编译 deb / 镜像产物 |
docs/ | Release Note 等文档 |
ls $SDK_DIR/examples/输出:
anomaly-detection gstreamer vi_yolo_venc
docker rockit_yolo_detect web4. 验证是否成功
① 工具链可用
主控(板端)为 aarch64,用原生 gcc 验证:
gcc --version | head -2输出:
gcc (Debian 12.2.0-14+deb12u1) 12.2.0
Copyright (C) 2022 Free Software Foundation, Inc.② 主控侧 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]完整健康检查脚本(一键 4 项验证)见 ch01 硬件安装与验证 → 一键健康检查。
5. 常见问题
| 现象 | 原因 | 处理 |
|---|---|---|
pcie_upgrade_tool 命令找不到 | 主控侧 SDK 没装 | 重装 rknn3-runtime deb |
Addr= 列为空 | PCIe 没枚举 / 卡没插好 | 重插卡 + lspci 看 182a 设备 |
代理进程 rknn3_transfer_proxy 不在 | rknn3.service 没起来 | sudo systemctl restart rknn3.service |
Device is not in maskrom mode | 设备正常运行中 | 正常情况,不用手动 uf |
