RK3588 上的 LLM(二):更新 RK3588 开发板端的 NPU 驱动至 0.9.8(板端编译,基于 ubuntu-rockchip 项目)

本教程记录了在板端本地带 0.9.8 RKNPU 的编译内核并安装的过程

注:开发板端的系统是基于 ubuntu-rockchip 项目构建的 Ubuntu 24.04,构建的目标内核也是用于ubuntu-rockchip 的 Ubuntu 24.04,如果你使用的系统不是ubuntu-rockchip,请找到适合你当前系统的内核源码进行修改编译安装,编译和安装的步骤大概率会和本文有所出入
注:由于在编译此项目前本开发板已经安装过很多编译依赖包,所以如果有部分步骤些出现"Command not found"报错请自行解决一下依赖,比如 build-essential、cmake、flex之类
注:请确保您的网络环境可以连接上 GitHub,否则可能在编译过程中报错

首先克隆 ubuntu-rockchip 项目:

git clone https://github.com/Joshua-Riek/ubuntu-rockchip && cd ubuntu-rockchip

由于 ubuntu-rockchip 项目没有提供直接获取源码的脚本,故直接运行build.sh文件获取源码:

sudo ./build.sh -b orangepi5plus -s noble -f desktop -ko

其中:
-b orangepi5plus参数代表目前编译的开发板为 Orangepi5Plus
-s noble参数代表目前编译的目标系统为 Ubuntu 24.04,对应 rockchip-6.1 内核
-f desktop参数代表目标系统启用桌面功能,但此项对内核编译没有影响
-ko参数代表仅编译内核
等待内核源码拉取完毕进入编译过程后,按下Ctrl + C停止编译过程,进入内核源码目录:

cd build/linux-rockchip/

在此目录下,下载 RKNPU 0.9.8 驱动并解压:

wget https://github.com/airockchip/rknn-llm/raw/refs/heads/main/rknpu-driver/rknpu_driver_0.9.8_20241009.tar.bz2
tar -xvf rknpu_driver_0.9.8_20241009.tar.bz2
rm rknpu_driver_0.9.8_20241009.tar.bz2

RKNPU 0.9.8 驱动的源码如果直接编译会报错,需要修改drivers/rknpu/rknpu_devfreq.c文件的第237行:

235  static const struct rockchip_opp_data rk3576_npu_opp_data = {
236  		.set_read_margin = rk3576_npu_set_read_margin,
237  		.set_soc_info = rockchip_opp_set_low_length,
238  #if KERNEL_VERSION(6, 1, 0) <= LINUX_VERSION_CODE
239  		.config_regulators = npu_opp_config_regulators,
240  		.config_clks = npu_opp_config_clks,
241  #endif
242  };

.set_soc_info = rockchip_opp_set_low_length,删除或者注释:

// 		.set_soc_info = rockchip_opp_set_low_length,

保存,退出

注:如果是香橙派 6.1 的内核或者 5.10 的内核可能还需修改 kernel/include/linux/mm.h 的内容,具体看编译有没有报错再决定是否修改,修改为添加以下内容:
static inline void vm_flag_set(struct vm_area_struct *vma,
			vm_flags_t flags)
{
	vma -> vm_flags |= flags;
}
static inline void vm_flag_clear(struct vm_area_struct *vma,
			vm_flags_t flags)
{
	vma -> vm_flags &= flags;
}

随后运行build.sh进行编译:

## 回到ubuntu-rockchip目录并开始编译
cd ../../ && sudo ./build.sh -b orangepi5plus -s noble -f desktop -ko

等待编译完成后,可以在./build目录下找到五个 deb 包,类似下面的输出:

sivon@Orangepi5Plus:~/ubuntu-rockchip/build$ ls
linux-buildinfo-6.1.0-1027-rockchip_6.1.0-1027.27_arm64.deb
linux-headers-6.1.0-1027-rockchip_6.1.0-1027.27_arm64.deb
linux-image-6.1.0-1027-rockchip_6.1.0-1027.27_arm64.deb
linux-modules-6.1.0-1027-rockchip_6.1.0-1027.27_arm64.deb
linux-rockchip
linux-rockchip-headers-6.1.0-1027_6.1.0-1027.27_arm64.deb
logs

安装内核包:

sudo apt install ./build/linux-*.deb -y

安装完成后重启,进入系统后即可使用sudo cat /sys/kernel/debug/rknpu/version命令查看 RKNPU 驱动版本,此时应输出:

sivon@Orangepi5Plus:~$ sudo cat /sys/kernel/debug/rknpu/version
RKNPU driver: v0.9.8

说明 RKNPU 版本已经成功升级到 0.9.8

posted @ 2025-11-07 10:54  Sivon  阅读(9)  评论(0)    收藏  举报