下载0.9.8驱动文件
https://github.com/airockchip/rknn-llm/blob/main/rknpu-driver/rknpu_driver_0.9.8_20241009.tar.bz2
下载orangepi keneral
https://github.com/orangepi-xunlong/linux-orangepi/blob/orange-pi-6.1-rk35xx
执行sudo ./build.sh 会遇到如下错误
[ error ] ERROR in function compile_kernel [ ./build.sh:305 -> scripts/main.sh:638 -> scripts/main.sh:541 -> scripts/compilation.sh:506 -> scripts/general.sh:0 ]
[ error ] Kernel was not built [ @host ]
[ o.k. ] Process terminated
查看output/debug/下的 日志文件
drivers/net/wireless/rtl8189es/os_dep/linux/ioctl_cfg80211.c:4146:20: 警告: ‘nl80211_tx_power_setting_str’ defined but not used [-Wunused-function]
drivers/net/wireless/rtl8189es/os_dep/linux/ioctl_cfg80211.c:4146:20: 警告: 'nl80211_tx_power_setting_str' 已定义但未使用 [-Wunused-function]
4146 | static const char nl80211_tx_power_setting_str(int type)
4146 | 4146 static const char nl80211_tx_power_setting_str(int类型)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/wireless/rtl8192eu/hal/hal_hci/hal_usb.c: 在函数‘usb_init_recv_priv’中:
drivers/net/wireless/rtl8192eu/hal/hal_hci/hal_usb.c:28:22: 警告: cast between incompatible function types from ‘void ()(void )’ to ‘void ()(long unsigned int)’ [-Wcast-function-type]
drivers/net/wireless/rtl8192eu/hal/hal_hci/hal_usb.c:28:22: 警告:在不兼容的函数类型之间进行转换,从 'void ()(void )' 到 'void ( )(long unsigned int)' [-Wcast -功能类型]
28 | (void()(unsigned long))usb_recv_tasklet,
28 | 28 (void()(无符号长整型))usb_recv_tasklet,
| ^
drivers/net/wireless/rtl8192eu/hal/rtl8192e/usb/rtl8192eu_xmit.c: 在函数‘rtl8192eu_init_xmit_priv’中:
drivers/net/wireless/rtl8192eu/hal/rtl8192e/usb/rtl8192eu_xmit.c:28:22: 警告: cast between incompatible function types from ‘void ()(void )’ to ‘void ()(long unsigned int)’ [-Wcast-function-type]
drivers/net/wireless/rtl8192eu/hal/rtl8192e/usb/rtl8192eu_xmit.c:28:22: 警告:在不兼容的函数类型之间进行转换,从 'void ()(void )' 到 'void ( )(long unsigned int)' [ -Wcast-函数类型]
28 | (void(*)(unsigned long))rtl8192eu_xmit_tasklet,
28 | 28 (void(*)(无符号长整型))rtl8192eu_xmit_tasklet,
| ^
drivers/rknpu/rknpu_devfreq.c:237:25: 错误: ‘rockchip_opp_set_low_length’未声明(不在函数内)
237 | .set_soc_info = rockchip_opp_set_low_length,
237 | 237 .set_soc_info = rockchip_opp_set_low_length,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
make[3]: *** [scripts/Makefile.build:250:drivers/rknpu/rknpu_devfreq.o] 错误 1
make[2]: *** [scripts/Makefile.build:500:drivers/rknpu] 错误 2
make[2]: *** 正在等待未完成的任务....
make[1]: *** [scripts/Makefile.build:500:drivers] 错误 2
make: *** [Makefile:2013:.] 错误 2
解决:
rknpu_devfreq.c:
static const struct rockchip_opp_data rk3576_npu_opp_data = {
.set_read_margin = rk3576_npu_set_read_margin,
// .set_soc_info = rockchip_opp_set_low_length, 未定义, 需要删除
#if KERNEL_VERSION(6, 1, 0) <= LINUX_VERSION_CODE
.config_regulators = npu_opp_config_regulators,
.config_clks = npu_opp_config_clks,
#endif
};