RK3588 RKNPU 开发文档

本文档基于 RockChip官方开源仓库和 StarryOS 仓库中对 RK3588 NPU 运行时库(闭源 librknnrt.so)及内核侧 RKNPU DRM 驱动的逆向与复现成果,整理为三个核心章节:

文档结构

章节内容适用场景
RKNN 硬件特性 三核架构、数据精度与算力、支持的推理框架 了解硬件能力边界
寄存器地图 按模块梳理rknpu内部各个寄存器的位域、读写属性 写驱动、调试硬件交互
IOCTL协议与数据结构 DRM_IOCTL_RKNPU_* 命令表,结构体布局,flags枚举,mmap 规则 实现ioctl分发,对齐用户态ABI
任务提交流程 从用户态提交到硬件执行完成的完整时序逻辑,包含状态机和各种失败路径 查询job生命周期
当前提交-IRQ 边界快照恢复系统 总结 step-submit、owner 切换、IRQ 边界快照/写坏/恢复/校验,以及相关 struct 的职责 整理当前实验实现、查数据结构分工、回顾抢占边界语义

来源标注约定

文档中对每条信息标注来源,使用以下标记:

  • Linux rknpu 驱动 — 来自Rockchip官方仓库中rk3588-npu内核驱动代码
  • rknpu-ioctl.h — 来自 Linux rknpu 驱动include目录的 ioctl 头文件
  • StarryOS Rust 驱动 — 来自 drivers/rknpu/src/ 的 Rust 复刻实现
  • 逆向推断 — 基于代码行为推断,无官方文档确认

术语速查

术语含义
GEMGraphics Execution Manager,DRM 子系统的内存对象管理框架
PCProgram Counter / 任务控制器,NPU 的命令流执行引擎
CNAConvolution Neural-network Accelerator,卷积加速单元
DPUData Processing Unit,数据后处理单元
PPUPooling Processing Unit,池化处理单元
DDMA/SDMAData DMA / System DMA,数据搬运引擎
IOVAI/O Virtual Address,IOMMU 映射后的设备侧虚拟地址
fenceDMA fence,用于 job 完成通知与跨设备同步的内核原语