Rockchip NPU 使用教程

Table of Contents

1. 设备端使能 rknpu

1.1. 内核驱动

ROCKCHIP_RKNPU=y
ROCKCHIP_RKNPU_DEBUG_FS=y
ROCKCHIP_RKNPU_DRM_GEM=y

1.2. 设备树

rknpu: npu@fdab0000 {
    ...
    compatible = "rockchip,rk3588-rknpu";
    ...
};

rknpu_mmu: iommu@fdab9000 {
    ...
    compatible = "rockchip,iommu-v2";
    ...
};

&rknpu {
    rknpu-supply = <&vdd_npu_s0>;
    mem-supply = <&vdd_npu_mem_s0>;
    status = "okay";
};

&rknpu_mmu {
    status = "okay";
};

1.3. 验证

dmesg | grep npu # 查看 npu 驱动版本
# [   29.304384] RKNPU fdab0000.npu: RKNPU: rknpu iommu is enabled, using iommu mode
# [   29.320787] [drm] Initialized rknpu 0.9.8 20240828 for fdab0000.npu on minor 1

2. 设备端安装 rknpu 运行环境

RKNPU2 Runtime: 主要职责是负责在系统中加载 RKNN 模型,并通过调用专用的神经处理单元(npu)执行RKNN模型的推理操作。

2.1. 安装 RKNPU2 Runtime

RKNP2 Runtime 具体存放位置为: rknpu2/runtime/<os>/librknn_api/<arch>/librknnrt.so ,将该库拷贝到设备中既可。推荐路径为 /usr/lib/

git clone https://github.com/airockchip/rknn-toolkit2.git

3. 运行 rknpu 例程

RKNPU2 Runtime 中有很多例程,这里使用 yolov5 模型进行演示。例程路径为 rknpu2/examples/rknn_yolov5_demo/

如果想测试更多的例程可以访问 https://github.com/airockchip/rknn_model_zoo.git

大模型测试例程 https://github.com/airockchip/rknn-llm.git

3.1. 编译运行

############## Host #####################
export GCC_COMPILER=<cross-compiler-path>
cd rknpu2/examples/rknn_yolov5_demo/
./build-linux.sh -t rk3588 -a aarch64 -b Release # 编译完成后会在当前目录下生成 install 目录
scp -O -r install <username>@<device-ip>:<path> # 将编译好的应用程序拷贝到设备中
############## Device #####################
cd <path>/rknn_yolov5_demo
./rknn_yolov5_demo model/RK3588/yolov5s-640-640.rknn model/bus.jpg letterbox # 会在当前目录下产生一个 output.jpg
# post process config: box_conf_threshold = 0.25, nms_threshold = 0.45
# Loading mode...
# sdk version: 2.3.2 (429f97ae6b@2025-04-09T09:09:27) driver version: 0.9.8
# model input num: 1, output num: 3
#   index=0, name=images, n_dims=4, dims=[1, 640, 640, 3], n_elems=1228800, size=1228800, w_stride = 640, size_with_stride=1228800, fmt=NHWC, type=INT8, qnt_type=AFFINE, zp=-128, scale=0.003922
#   index=0, name=output0, n_dims=4, dims=[1, 255, 80, 80], n_elems=1632000, size=1632000, w_stride = 0, size_with_stride=1638400, fmt=NCHW, type=INT8, qnt_type=AFFINE, zp=-128, scale=0.003922
#   index=1, name=286, n_dims=4, dims=[1, 255, 40, 40], n_elems=408000, size=408000, w_stride = 0, size_with_stride=491520, fmt=NCHW, type=INT8, qnt_type=AFFINE, zp=-128, scale=0.003922
#   index=2, name=288, n_dims=4, dims=[1, 255, 20, 20], n_elems=102000, size=102000, w_stride = 0, size_with_stride=163840, fmt=NCHW, type=INT8, qnt_type=AFFINE, zp=-128, scale=0.003922
# model is NHWC input fmt
# model input height=640, width=640, channel=3
# Read model/bus.jpg ...
# img width = 640, img height = 640
# once run use 24.280000 ms
# loadLabelName ./model/coco_80_labels_list.txt
# person @ (209 243 286 510) 0.879723
# person @ (479 238 560 526) 0.870588
# person @ (109 238 231 534) 0.839831
# bus @ (91 129 555 464) 0.692042
# person @ (79 353 121 517) 0.300961
# save detect result to ./out.jpg
# loop count = 10 , average run  23.211700 ms

out.jpg

4. 查看 rknpu 运行信息

cat /sys/kernel/debug/rknpu/freq # 运行频率
# 1000000000
cat /sys/kernel/debug/rknpu/version # 驱动版本
# RKNPU driver: v0.9.8
cat /sys/kernel/debug/rknpu/load # 当前使用率
# NPU load:  Core0:  0%, Core1:  0%, Core2:  0%,

Date: 2025-07-31 Thu 00:00

Author: taocheng

Created: 2025-11-12 Wed 11:01

Validate