RK3588 + OpenHarmony 6.1 RKNN2 NPU 验证指南
适用场景:拿到一块新的 RK3588 + OpenHarmony 6.1 开发板,快速验证 NPU 推理是否可用。验证结果:通过 (api 2.3.2 / drv 0.9.8 / mobilenet_v1 RK3588 版推理成功 → ALL TESTS PASSED)0. 前置条件项目说明开发板RK3588 + OpenHarmony 6.1 标准系统(厂商镜像,基于 rockchip BSP 内核)调试工具hdc (HarmonyOS Device Connector),能hdc shellPC 编译环境WSL2 (Ubuntu-22.04) + GCC linaro 7.5.0 aarch64 交叉编译器RKNN2 SDKrknpu2/runtime/Linux/目录(含librknnrt.so、rknn_api.h)测试模型rknpu2/examples/rknn_api_demo/model/RK3588/mobilenet_v1.rknn(必须 RK3588 版,见 10.1)GCC linaro 路径(参考):D:\Projects\RKNN3\gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu\gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnuRKNN2 SDK 路径(参考):D:\Projects\rknn-toolkit2\rknpu21. 板端 NPU 驱动检查通过 hdc shell 连上板子,依次执行:hdc shell# 1.1 NPU 驱动版本cat/sys/kernel/debug/rknpu/version实际输出:RKNPU driver: v0.9.8✅(与 RK3576 完全一致,均为 rockchip BSP 内核自带)# 1.2 NPU 设备节点ls-la/dev/dri/renderD128实际输出:crw-rw-rw- 1 root graphics 226, 128 ...✅(DRM GEM 方式)# 1.3 板端 libc 类型确认ls/lib/ld-musl* /lib/ld-linux*2/dev/null实际输出:/lib/ld-musl-aarch64.so.1✅(OH 6.1 使用 musl libc,这是后续需要 glibc 兼容层的原因)1.4 关于 dmesg(本次实测为空输出,属正常)dmesg|grep-irknpu实际输出:空。不是驱动没加载(1.1 的 version 节点已证明驱动在工作),而是 OH 6.1 设置了kernel.dmesg_restrict=1,hdc shell 默认非 root 读不了 dmesg。若确需查看驱动加载日志:hdc shellsu0"dmesg | grep -i rknpu"结论:此项是兜底检查,非必须,空输出不影响后续流程。如果驱动未加载检查内核配置:dmesg|grep-irknpu zcat /proc/config.gz|grepRKNPU2/dev/null若 NPU 驱动未编译进内核,需要重新编译 OH 内核并启用 RKNPU 驱动(参考 GitHubrockchip-linux/kernel develop-6.1/drivers/rknpu,RK3588 官方支持零改动,compatible = "rockchip,rk3588-rknpu")。2. 在板端搭建 glibc 兼容环境由于librknnrt.so用 GCC linaro 编译、依赖 glibc,而 OH