RK NPU 软硬件生态栈简介 —— rknpu、rknn-toolkit-librknnrt、rknpu driver
仓库链接
https://github.com/rockchip-linux/rknpu2 https://github.com/airockchip/rknn-llm https://github.com/airockchip/rknn-toolkit2
1. 硬件与底层架构:rknpu 与 rknpu2
这两个词主要代表了瑞芯微 NPU 硬件架构及对应软件栈的代际更替。
- rknpu(第一代):指瑞芯微早期的 NPU 架构及配套体系。主要用于老一代的芯片,如 RK1808、RV1109、RV1126、RK3399Pro 等。
- rknpu2(第二代):这是全面升级后的 NPU 架构体系。RK3568 和 RK3588 这类较新的核心 SoC 搭载的正是这种第二代 NPU(以及后续的 RV1106 等)。相比第一代,它的算力利用率更高,支持的算子更多,且底层驱动和 API 接口也发生了改变。
- 关系:两代架构在模型格式和底层 API 上不兼容。为 RK3399Pro(rknpu)编译的模型无法直接在 RK3588(rknpu2)上运行,必须重新转换。

2. PC端开发工具:rknn-toolkit 与 rknn-toolkit2
这是运行在 PC(通常是 x86 Linux 虚拟机或主机) 上的 Python 工具包,作用是“翻译”和“压缩”。
- 它们是什么:你在 TensorFlow、PyTorch 或 ONNX 里训练出来的标准 AI 模型,NPU 硬件是看不懂的。Toolkit 的作用就是把这些主流框架的模型,量化(比如 FP32 转 INT8)并编译成瑞芯微 NPU 专属的
.rknn格式文件。同时,它还提供在 PC 上模拟运行、评估性能和精度(C-Model 仿真)的功能。 - rknn-toolkit:专门用来生成 rknpu(第一代) 芯片所需的
.rknn模型。 - rknn-toolkit2:专门用来生成 rknpu2(第二代) 芯片(如 RK3568/RK3588)所需的
.rknn模型。
3. 板端运行环境:librknnrt 与 rknpu driver
当你在 PC 上用 Toolkit 生成了 .rknn 模型后,需要把模型丢到开发板上运行。这时候就需要板端环境的配合。
- librknnrt (rknn runtime library):
- 这是什么:这是运行在用户空间(User Space)的 C/C++ 动态链接库(
.so文件)。 -
作用:它为你编写的 AI 应用程序提供了 API 接口(如
rknn_init,rknn_inputs_set,rknn_run,rknn_outputs_get)。你的业务代码通过调用这些 API 来加载模型、传入图像数据,并获取推理结果。 - rknpu driver:
- 这是什么:这是运行在 Linux 内核空间(Kernel Space) 的底层驱动程序。
- 作用:硬件级别的“包工头”。
librknnrt只是软件接口,当它下达rknn_run指令时,真正负责分配物理内存(如连续的 DMA 内存 / IOMMU 映射)、控制 NPU 电源域、配置 NPU 硬件寄存器并触发 NPU 硬件进行矩阵运算的,就是 NPU 驱动。
留下评论