香橙派5 RK3588S NPU驱动升级0.9.8

本文备份链接:升级RKNPU驱动-VR小杰的技术文档中心

升级RKNPU驱动

从官方镜像Orangepi5_1.1.10_ubuntu_jammy_desktop_xfce_linux5.10.160安装的系统自带RKNPU 驱动版本0.9.6。但是要运行最新的RKLLM大模型,还是建议升级到0.9.8(写文档时间 2025.2.2 最新版本0.9.8)。

注意:

  1. 本教程基于香橙派5的 官方Ubuntu镜像不是第三方Ubuntu镜像,实测第三方Ubuntu镜像刷入deb包后会导致系统无法启动!其他官方系统镜像(Debian、Orangepi OS等)的兼容性请自行测试。

  2. 建议开发板预留20GB以上的空间

  3. 需要clone GitHub上的仓库,请确保开发板网络环境能正常连接至GitHub!

1 查看NPU驱动版本


sudo cat /sys/kernel/debug/rknpu/version

查看到NPU驱动版本为0.9.6

在这里插入图片描述

2 板端编译的系统需求

本教程使用开发板的 Ubuntu22.04 系统编译,其他系统没有测试过。查看开发板已安装的 Ubuntu 版本的命令如下所示:


lsb_release -a

如果 Release 字段显示的不是 22.04,说明当前使用的 Ubuntu 版本不符合要求,请更换系统后再进行下面的操作。


No LSB modules are available.

Distributor ID: Ubuntu

Description:    Ubuntu 22.04.4 LTS

Release:        22.04

Codename:       jammy

3 从 github 下载 orangepi-build

linux sdk 其实指的就是 orangepi-build 这套代码,orangepi-build 是基于 armbian build 编译系统修改而来的,使用 orangepi-build 可以编译出多个版本的 linux 镜像。

安装git并从GitHub克隆next分支


cd ~

sudo apt-get update

sudo apt-get install -y git

git clone https://github.com/orangepi-xunlong/orangepi-build.git -b next

成功clone仓库的内容如图所示,如果clone出现错误,请检查网络环境能否连接至GitHub及命令是否有错误。

在这里插入图片描述

4 下载Linux5.10内核源码

首先创建kernel文件夹,用于存放内核源码


cd orangepi-build

mkdir kernel && cd kernel


git clone https://github.com/orangepi-xunlong/linux-orangepi.git -b orange-pi-5.10-rk35xx

在这里插入图片描述

将文件夹改名以备后面使用


mv linux-orangepi/ orange-pi-5.10-rk35xx

5 覆盖RKNPU 驱动

回到PC虚拟机,将~/rknn-llm/rknpu-driver目录下的rknpu_driver_0.9.8_20241009.tar.bz2文件上传到开发板~/orangepi-build目录下

解压驱动


cd ~/orangepi-build

tar -xvf rknpu_driver_0.9.8_20241009.tar.bz2

覆盖驱动


cp drivers/ kernel/orange-pi-5.10-rk35xx/ -r

6 修改几个文件避免编译出错

  1. 修改kernel/include/linux/mm.h

打开文件


vi kernel/orange-pi-5.10-rk35xx/include/linux/mm.h

添加代码


static inline void vm_flags_set(struct vm_area_struct *vma,

 vm_flags_t flags)

{

 vma->vm_flags |= flags;

}

static inline void vm_flags_clear(struct vm_area_struct *vma,

 vm_flags_t flags)

{

 vma->vm_flags &= ~flags;

}

在这里插入图片描述

保存退出。

  1. 修改rknpu_devfreq.c

打开文件


vi kernel/orange-pi-5.10-rk35xx/drivers/rknpu/rknpu_devfreq.c

在242行注释掉这句.set_soc_info = rockchip_opp_set_low_length,
在这里插入图片描述

保存退出。

7 禁用源码同步功能

由于先前我们手动覆盖了drivers到kernel/orange-pi-5.10-rk35xx目录下,如果现在直接运行编译,脚本会检查到与云端的源码不一致,导致重新拉取代码覆盖的问题。因此,要在配置文件内禁用源码同步功能。

首先运行一次build.sh 脚本,进行初始化。


sudo ./build.sh

等待片刻,见到让我们选择的界面时,操作键盘的方向→键和回车键到Exit退出菜单。

再次查看当前目录下,发现多出来一个userpatches文件夹,里面存放着配置文件。

编辑配置文件config-default.conf


sudo vi userpatches/config-default.conf

找到IGNORE_UPDATES,改为


IGNORE_UPDATES="yes"

保存退出。

8 运行build.sh开始编译linux 内核

运行 build.sh 脚本


sudo ./build.sh

选择Kernel package

在这里插入图片描述

选择不更改内核配置

在这里插入图片描述

选择你的开发板型号,我的是orangepi5

在这里插入图片描述

选择 legacy,这个对应的内核是5.10的

在这里插入图片描述

编译成功后的输出如下所示

在这里插入图片描述

9 安装deb包

查看输出的deb包


ls output/debs/linux-*

a. linux-dtb-legacy-rockchip-rk3588_1.1.8_arm64.deb 包含内核使用的 dtb 文件
b. linux-headers-legacy-rockchip-rk3588_1.1.8_arm64.deb 包含内核头文件
c. linux-image-legacy-rockchip-rk3588_1.1.8_arm64.deb 包含内核镜像和内核模块

你编译出来的版本号可能与我的1.1.8不同,不影响

我们只需要安装linux-image-legacy-rockchip-rk3588_1.1.8_arm64.deb


sudo dpkg -i output/debs/linux-image-legacy-rockchip-rk3588_1.1.8_arm64.deb

成功后重启开发板,再次查看NPU驱动版本。


sudo cat /sys/kernel/debug/rknpu/version

现在驱动已升级为0.9.8

10 GitLab/Gitee仓库

考虑到相比于GitHub,GitLab/Gitee连接性能更好一些,所以将仓库上传于这两个代码托管站。

查看GitLab仓库

查看Gitee仓库

### 升级 Rockchip RK3588NPU 驱动至版本 0.9.8 为了将 Rockchip RK3588NPU 驱动升级到版本 0.9.8,可以按照以下方法操作: #### 检查当前驱动版本 在执行任何升级之前,建议先确认当前安装的 NPU 驱动版本。可以通过以下命令完成此操作: ```bash dmesg | grep -i rknpu cat /sys/kernel/debug/rknpu/version cat /sys/kernel/debug/rknpu/driver_version cat /proc/debug/rknpu/driver_version ``` 这些命令可以帮助验证当前系统的 NPU 驱动状态[^1]。 #### 下载并编译最新版驱动 访问官方 GitHub 存储库获取最新的工具链和支持文件: ```plaintext https://github.com/rockchip-linux/rknn-toolkit https://github.com/rockchip-linux/rknn-toolkit2 ``` 下载完成后,解压源码包,并根据文档中的说明配置环境变量以及必要的依赖项。通常情况下,这一步涉及安装特定的开发工具和库文件[^3]。 #### 安装更新后的驱动程序 对于香橙 5 (RK3588S),其支持的 NPU 驱动已知可被升级到版本 `0.9.8`。具体步骤可能因设备型号略有不同,但一般流程如下所示: 1. **准备镜像文件**:如果现有固件不包含目标版本,则需重新烧录带有新版驱动的支持镜像; 2. **手动替换模块**:通过交叉编译生成适配于硬件平台的新内核模块 (`rknpu.ko`) 并加载它; 3. **测试功能正常性**:重启系统之后再运行前述指令来核实最终结果是否达到预期标准[^2]。 #### 示例脚本 下面提供一段简单的 Bash 脚本来简化部分过程: ```bash #!/bin/bash # 更新软件包索引 sudo apt update && sudo apt upgrade -y # 获取rknn toolkit资源 git clone https://github.com/rockchip-linux/rknn-toolkit.git cd rknn-toolkit/ # 构建项目前设置好交叉编译器路径等参数... make clean all # 替换旧有ko文件为新构建出来的那个 cp output/lib/modules/*/*.ko /lib/modules/$(uname -r)/kernel/drivers/ depmod $(uname -r) echo "Reboot now..." sleep 3 reboot ```
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值