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

浙公网安备 33010602011771号