返回卡片页面

RK3568开发板更新RKNNPU2驱动教程

从版本1.3.0升级到2.3.2的完整指南

准备工作

在开始更新之前,请确保您已准备好以下内容:

概述

本教程将指导您完成RK3568开发板上RKNNPU驱动的更新过程。RKNNPU是Rockchip的神经网络处理单元,用于加速AI推理任务。更新到最新版本可以获得更好的性能、更多的算子支持和更好的兼容性。

注意:在更新驱动前,请务必备份重要数据。虽然此操作通常不会导致数据丢失,但预防措施总是必要的。

更新步骤

1 检查当前驱动版本

首先,我们需要查看开发板上当前安装的RKNN驱动版本。通过ADB连接到开发板并执行以下命令:

在开发板上执行
strings /usr/bin/rknn_server | grep -i "rknn_server version"
strings /usr/lib/librknnrt.so | grep -i "librknnrt version"

执行后,您应该会看到类似下面的版本信息:

旧版本 (更新前)
rknn_server version: 1.3.0 (build@2022-05-04T20:17:01)
librknnrt version: 1.3.0 (9b36d4d74@2022-05-04T20:17:01)
新版本 (更新后)
rknn_server version: 2.3.2 (1842325 build@2025-03-30T09:54:34)
librknnrt version: 2.3.2 (429f97ae6b@2025-04-09T09:09:27)

重要:请确保rknn_serverlibrknnrt.so的版本号完全一致,否则RKNNPU可能无法正常工作!

2 推送新驱动文件到开发板

在您的主机上,找到RKNN-Toolkit2开发包中的驱动文件,然后使用ADB将其推送到开发板:

在主机上执行 (Linux/Windows/macOS)
# 进入驱动文件目录 (根据您的实际路径调整)
cd rknn-toolkit2/rknpu2/runtime/Linux/librknn_api/aarch64

# 推送librknnrt.so到开发板
adb push librknnrt.so /usr/lib/

# 进入rknn_server目录
cd ../../rknn_server/aarch64/usr/bin

# 推送所有rknn_server相关文件到开发板
adb push * /usr/bin/

提示:如果开发板上的/usr/lib/usr/bin目录是只读的,您可能需要先重新挂载文件系统为可写模式:adb shell mount -o remount,rw /

3 设置文件权限并重启服务

文件推送完成后,需要设置执行权限并重启rknn_server服务:

在开发板上执行 (通过ADB shell)
adb shell

# 进入/usr/bin目录
cd /usr/bin

# 设置执行权限
chmod a+x rknn_server
chmod a+x start_rknn.sh
chmod a+x restart_rknn.sh

# 重启rknn_server服务
./restart_rknn.sh

或者,您也可以使用以下命令直接重启服务:

adb shell "cd /usr/bin && chmod a+x rknn_server start_rknn.sh restart_rknn.sh && ./restart_rknn.sh"

4 验证更新结果

更新完成后,再次检查版本号以确保更新成功:

在开发板上执行
strings /usr/bin/rknn_server | grep -i "rknn_server version"
# 应该显示: rknn_server version: 2.3.2 (1842325 build@2025-03-30T09:54:34)

strings /usr/lib/librknnrt.so | grep -i "librknnrt version"
# 应该显示: librknnrt version: 2.3.2 (429f97ae6b@2025-04-09T09:09:27)

如果两个版本号都显示为2.3.2(或您安装的其他新版本),并且版本号一致,说明驱动更新成功!

故障排除

常见问题及解决方法

问题1:执行adb push时提示"Read-only file system"

解决方法:重新挂载文件系统为可写模式:adb shell mount -o remount,rw /

问题2:重启rknn_server服务失败

解决方法:检查文件权限是否正确,或尝试手动杀死进程后重启:
adb shell "pkill rknn_server && /usr/bin/start_rknn.sh"

问题3:版本号不一致或更新后RKNN模型无法运行

解决方法:确保rknn_server和librknnrt.so来自同一个RKNN-Toolkit2版本,必要时重新推送两个文件并重启服务。

问题4:找不到rknn-toolkit2目录或驱动文件

解决方法:从Rockchip官方网站或GitHub仓库下载最新的RKNN-Toolkit2开发包:
https://github.com/rockchip-linux/rknn-toolkit2

更新日志

版本 2.3.2 更新内容(相较于 1.3.0)

建议同时更新RKNN-Toolkit2到对应版本(2.x.x),以确保开发环境和运行环境的一致性,避免兼容性问题。