728x90
출처
- 香橙派5 RK3588S NPU驱动升级0.9.8_orangepi5用npu跑llm-CSDN博客
- GitHub - cse-repon/orangepi-5b-rknpu-0.9.8-update
- Orange Pi 5 Pro
- Orange Pi 5 Pro - Armbian
- RKLLM Installation | Radxa Docs
- 3. rknn-toolkit2 설치하기 | RKNN Cookbook
리눅스 버전 확인
orangepi@orangepi5plus:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.5 LTS
Release: 22.04
Codename: jammy
orangepi@orangepi5plus:~$ free -h
total used free shared buff/cache available
Mem: 7.7Gi 522Mi 6.4Gi 13Mi 907Mi 7.1Gi
Swap: 3.9Gi 0B 3.9Gi
rknpu2 드라이버 버전 확인
orangepi@orangepi5plus:~$ sudo cat /sys/kernel/debug/rknpu/version
RKNPU driver: v0.9.6
github에서 orangepi-build 다운로드
orangepi@orangepi5plus:~$ cd ~
orangepi@orangepi5plus:~$ git clone https://github.com/orangepi-xunlong/orangepi-build.git -b next
리눅스 5.10 커널 소스 코드 다운로드
orangepi@orangepi5plus:~$ cd orangepi-build
orangepi@orangepi5plus:~/orangepi-build$ mkdir kernel && cd kernel
orangepi@orangepi5plus:~/orangepi-build/kernel$ git clone https://github.com/orangepi-xunlong/linux-orangepi.git -b orange-pi-6.1-rk35xx
orangepi@orangepi5plus:~/orangepi-build/kernel$ mv linux-orangepi/ orange-pi-6.1-rk35xx
RKNPU 드라이버 무시함
orangepi@orangepi5plus:~/orangepi-build/kernel$ cd ~/orangepi-build
orangepi@orangepi5plus:~/orangepi-build$ git clone https://github.com/airockchip/rknn-llm.git
orangepi@orangepi5plus:~/orangepi-build$ tar -xvf rknn-llm/rknpu-driver/rknpu_driver_0.9.8_20241009.tar.bz2
orangepi@orangepi5plus:~/orangepi-build$ cp -r drivers/ kernel/orange-pi-6.1-rk35xx/
컴파일 오류를 피하기 위해 몇 가지 파일을 수정
kernel/include/linux/mm.h 코드 추가
orangepi@orangepi5plus:~/orangepi-build$ vi kernel/orange-pi-6.1-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;
}

rknpu_devfreq.c 코드 수정
orangepi@orangepi5plus:~/orangepi-build$ vi kernel/orange-pi-6.1-rk35xx/drivers/rknpu/rknpu_devfreq.c
237행 주석 처리 : set_soc_info = rockchip_opp_set_low_length,

소스 코드 동기화 비활성화
kernel/orange-pi-5.10-rk35xx 디렉터리에 드라이버를 수동으로 덮어썼기 때문에, 컴파일을 직접 실행하면 스크립트가 클라우드 내 소스 코드와 불일치를 검사해 코드를 다시 풀어서 덮어쓰기 문제가 발생합니다. 따라서 설정 파일에서 소스 코드 동기화 기능을 비활성화해야 합니다.
빌드 스크립트를 실행하여 초기화 실행
orangepi@orangepi5plus:~/orangepi-build$ sudo ./build.sh

config-default.conf 수정
orangepi@orangepi5plus:~/orangepi-build$ sudo vi userpatches/config-default.conf
IGNORE_UPDATES="yes"
build.sh 실행 리눅스 커널 컴파일 시작
orangepi@orangepi5plus:~/orangepi-build$ sudo ./build.sh




orangepi@orangepi5plus:~/orangepi-build$ sudo ./build.sh
dpkg-deb: building package 'linux-headers-current-rockchip-rk3588' in '../linux-headers-current-rockchip-rk3588_1.2.0_arm64.deb'.
dpkg-deb: building package 'linux-dtb-current-rockchip-rk3588' in '../linux-dtb-current-rockchip-rk3588_1.2.0_arm64.deb'.
dpkg-deb: building package 'linux-image-current-rockchip-rk3588' in '../linux-image-current-rockchip-rk3588_1.2.0_arm64.deb'.
dpkg-deb: building package 'linux-image-current-rockchip-rk3588-dbg' in '../linux-image-current-rockchip-rk3588-dbg_1.2.0_arm64.deb'.
dpkg-genchanges: info: binary-only upload (no source code included)
dpkg-buildpackage: info: binary-only upload (no source included)
[ o.k. ] Kernel build done [ @host ]
[ o.k. ] Target directory [ /home/orangepi/orangepi-build/output/debs/ ]
[ o.k. ] File name [ linux-image-current-rockchip-rk3588_1.2.0_arm64.deb ]
[ o.k. ] Runtime [ 35 min ]
[ o.k. ] Repeat Build Options [ sudo ./build.sh BOARD=orangepi5plus BRANCH=current BUILD_OPT=kernel KERNEL_CONFIGURE=no ]
deb 패키지 설치
orangepi@orangepi5plus:~/orangepi-build$ ls output/debs/linux-*
output/debs/linux-dtb-current-rockchip-rk3588_1.2.0_arm64.deb 커널에서 사용하는 dtb 파일 포함
output/debs/linux-headers-current-rockchip-rk3588_1.2.0_arm64.deb 커널 헤더 포함
output/debs/linux-image-current-rockchip-rk3588_1.2.0_arm64.deb 커널 미러링 및 커널 모듈 포함
output/debs/linux-image-current-rockchip-rk3588-dbg_1.2.0_arm64.deb
linux-image-legacy-rockchip-rk3588_1.1.8_arm64.deb 설치
orangepi@orangepi5plus:~/orangepi-build$ sudo apt purge -y linux-image-current-rockchip-rk3588
orangepi@orangepi5plus:~/orangepi-build$ sudo dpkg -i output/debs/linux-image-current-rockchip-rk3588_1.2.0_arm64.deb
Selecting previously unselected package linux-image-current-rockchip-rk3588.
(Reading database ... 168054 files and directories currently installed.)
Preparing to unpack .../linux-image-current-rockchip-rk3588_1.2.0_arm64.deb ...
Unpacking linux-image-current-rockchip-rk3588 (1.2.0) ...
Setting up linux-image-current-rockchip-rk3588 (1.2.0) ...
* dkms: running auto installation service for kernel 6.1.43-rockchip-rk3588
...done.
update-initramfs: Generating /boot/initrd.img-6.1.43-rockchip-rk3588
update-initramfs: Converting to u-boot format
Free space after deleting the package linux-image-current-rockchip-rk3588 in /boot: 936.9M
재부팅
orangepi@orangepi5plus:~/orangepi-build$ sudo reboot
rknpu2 드라이버 버전확인
orangepi@orangepi5plus:~$ sudo cat /sys/kernel/debug/rknpu/version
RKNPU driver: v0.9.8728x90