编译报错
MODPOST /home/liefyuan/luckfox/luckfox-pico/sysdrv/drv_ko/wifi/rtl8723ds/Module.symvers
ERROR: modpost: "rockchip_wifi_get_oob_irq" [/home/liefyuan/luckfox/luckfox-pico/sysdrv/drv_ko/wifi/rtl8723ds/rtl8723ds.ko] undefined!
ERROR: modpost: "rockchip_wifi_mac_addr" [/home/liefyuan/luckfox/luckfox-pico/sysdrv/drv_ko/wifi/rtl8723ds/rtl8723ds.ko] undefined!
ERROR: modpost: "rockchip_wifi_set_carddetect" [/home/liefyuan/luckfox/luckfox-pico/sysdrv/drv_ko/wifi/rtl8723ds/rtl8723ds.ko] undefined!
ERROR: modpost: "rockchip_wifi_power" [/home/liefyuan/luckfox/luckfox-pico/sysdrv/drv_ko/wifi/rtl8723ds/rtl8723ds.ko] undefined!
scripts/Makefile.modpost:169: recipe for target '/home/liefyuan/luckfox/luckfox-pico/sysdrv/drv_ko/wifi/rtl8723ds/Module.symvers' failed
make[5]: *** [/home/liefyuan/luckfox/luckfox-pico/sysdrv/drv_ko/wifi/rtl8723ds/Module.symvers] Error 1
make[5]: *** 正在删除文件“/home/liefyuan/luckfox/luckfox-pico/sysdrv/drv_ko/wifi/rtl8723ds/Module.symvers”
Makefile:1819: recipe for target 'modules' failed
make[4]: *** [modules] Error 2
make[4]: Leaving directory '/home/liefyuan/luckfox/luckfox-pico/sysdrv/source/kernel'
Makefile:2363: recipe for target 'modules' failed
make[3]: *** [modules] Error 2
make[3]: Leaving directory '/home/liefyuan/luckfox/luckfox-pico/sysdrv/drv_ko/wifi/rtl8723ds'
Makefile:80: recipe for target 'build-sdio' failed
make[2]: *** [build-sdio] Error 2
make[2]: Leaving directory '/home/liefyuan/luckfox/luckfox-pico/sysdrv/drv_ko/wifi'
Makefile:22: recipe for target 'all' failed
make[1]: *** [all] Error 2
make[1]: Leaving directory '/home/liefyuan/luckfox/luckfox-pico/sysdrv/drv_ko'
Makefile:513: recipe for target 'drv' failed
make: *** [drv] Error 2
make: Leaving directory '/home/liefyuan/luckfox/luckfox-pico/sysdrv'
[build.sh:error] Running build_driver failed!
[build.sh:error] exit code 2 from line 509:
[build.sh:info] make -C ${SDK_SYSDRV_DIR} drv
可以初步确认是Linux内核之中有功能没有打开,导致编译这个内核ko模块无法通过。
全局查找
liefyuan@ubuntu:~/luckfox/luckfox-pico/sysdrv/source/kernel$ grep -r "rockchip_wifi_get_oob_irq" ./
./net/rfkill/rfkill-wlan.c:int rockchip_wifi_get_oob_irq(void)
./net/rfkill/rfkill-wlan.c:EXPORT_SYMBOL(rockchip_wifi_get_oob_irq);
./net/rfkill/rfkill-wlan.c:int rockchip_wifi_get_oob_irq_flag(void)
./net/rfkill/rfkill-wlan.c:EXPORT_SYMBOL(rockchip_wifi_get_oob_irq_flag);
./include/linux/rfkill-wlan.h:int rockchip_wifi_get_oob_irq(void);
./include/linux/rfkill-wlan.h:int rockchip_wifi_get_oob_irq_flag(void);
./drivers/net/wireless/rockchip_wlan/rtl8723cs/platform/platform_ops.c: oob_irq = rockchip_wifi_get_oob_irq();
./drivers/net/wireless/rockchip_wlan/rtl8821cs/platform/platform_ops.c: oob_irq = rockchip_wifi_get_oob_irq();
./drivers/net/wireless/rockchip_wlan/rtl8189fs/platform/platform_ops.c: oob_irq = rockchip_wifi_get_oob_irq();
./drivers/net/wireless/rockchip_wlan/rtl8188fu/platform/platform_ops.c: //oob_irq = rockchip_wifi_get_oob_irq();
./drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_gpio.c: host_oob_irq = rockchip_wifi_get_oob_irq();
./drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_gpio.c: irq_flags = rockchip_wifi_get_oob_irq_flag();
./drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_indep_power/dhd_gpio.c: host_oob_irq = rockchip_wifi_get_oob_irq();
./drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_indep_power/dhd_gpio.c: irq_flags = rockchip_wifi_get_oob_irq_flag();
./drivers/net/wireless/rockchip_wlan/rtl8723ds/platform/platform_ops.c: oob_irq = rockchip_wifi_get_oob_irq();
./drivers/net/wireless/rockchip_wlan/ssv6xxx/platforms/rk3126-generic-wlan.c:extern int rockchip_wifi_get_oob_irq(void);
./drivers/net/wireless/rockchip_wlan/ssv6xxx/platforms/rk3126-generic-wlan.c: oob_irq = rockchip_wifi_get_oob_irq();
./drivers/net/wireless/rockchip_wlan/cywdhd/bcmdhd/dhd_gpio.c: irq = rockchip_wifi_get_oob_irq();
./drivers/net/wireless/rockchip_wlan/cywdhd/bcmdhd/dhd_gpio.c: irq_flags = rockchip_wifi_get_oob_irq_flag();
关键信息
./net/rfkill/rfkill-wlan.c:int rockchip_wifi_get_oob_irq(void)
./net/rfkill/rfkill-wlan.c:EXPORT_SYMBOL(rockchip_wifi_get_oob_irq);
./include/linux/rfkill-wlan.h:int rockchip_wifi_get_oob_irq(void);
参考:https://blog.csdn.net/m0_61737429/article/details/129842585
由rfkill-wlan.c
文件入手
里面的Makefile文件
# SPDX-License-Identifier: GPL-2.0-only
#
# Makefile for the RF switch subsystem.
#
rfkill-y += core.o
rfkill-$(CONFIG_RFKILL_INPUT) += input.o
obj-$(CONFIG_RFKILL) += rfkill.o
obj-$(CONFIG_RFKILL_GPIO) += rfkill-gpio.o
rfkill-rk-y += rfkill-wlan.o rfkill-bt.o
obj-$(CONFIG_RFKILL_RK) += rfkill-rk.o
Kconfig
# SPDX-License-Identifier: GPL-2.0-only
#
# RF switch subsystem configuration
#
menuconfig RFKILL
tristate "RF switch subsystem support"
help
Say Y here if you want to have control over RF switches
found on many WiFi and Bluetooth cards.
To compile this driver as a module, choose M here: the
module will be called rfkill.
# LED trigger support
config RFKILL_LEDS
bool
depends on RFKILL
depends on LEDS_TRIGGERS = y || RFKILL = LEDS_TRIGGERS
default y
config RFKILL_INPUT
bool "RF switch input support" if EXPERT
depends on RFKILL
depends on INPUT = y || RFKILL = INPUT
default y if !EXPERT
config RFKILL_GPIO
tristate "GPIO RFKILL driver"
depends on RFKILL
depends on GPIOLIB || COMPILE_TEST
default n
help
If you say yes here you get support of a generic gpio RFKILL
driver.
config RFKILL_RK
tristate "Rockchip RFKILL driver"
depends on RFKILL
depends on MMC
depends on ARCH_ROCKCHIP
default n
help
Rockchip rfkill driver for rk29/rk3X
结果确认
到这里,就基本上就确定了,需要打开内核的RFKILL
。
OK!模块编译通过!