【发布时间】:2020-09-21 08:44:08
【问题描述】:
我获得了已集成到 Yocto 项目中的无线驱动程序。内核使用的.config 设置了以下标志:
CONFIG_CFG80211=m
这应该以CFG80211 作为模块来编译内核。但是,当我尝试使用此命令加载 MY_MODULE 时:
insmod MY_MODULE.ko fw_name=mrvl/MY_MODULE.bin cfg80211_wext=0xf cal_data_cfg=none fw_serial=0
模块加载失败:
insmod: ERROR: could not insert module MY_MODULE.ko: Unknown symbol in module
失败的原因是加载模块时CFG80211符号不存在。这在运行dmesg时可以看到:
[ 1534.508504] sd8xxx: Unknown symbol mlan_main_process (err 0)
[ 1534.508560] sd8xxx: Unknown symbol cfg80211_sched_scan_results (err 0)
[ 1534.508704] sd8xxx: Unknown symbol cfg80211_rx_assoc_resp (err 0)
[ 1534.508847] sd8xxx: Unknown symbol cfg80211_scan_done (err 0)
[ 1534.508911] sd8xxx: Unknown symbol cfg80211_sched_scan_stopped (err 0)
[ 1534.508948] sd8xxx: Unknown symbol mlan_shutdown_fw (err 0)
[ 1534.509037] sd8xxx: Unknown symbol mlan_rx_process (err 0)
[ 1534.509064] sd8xxx: Unknown symbol cfg80211_remain_on_channel_expired (err 0)
[ 1534.509077] sd8xxx: Unknown symbol cfg80211_cac_event (err 0)
...
我尝试手动加载 CFG80211 模块,但它不在 lib/modules/3.14.55-yocto-standard/kernel/net 文件夹中。这些文件夹中当前可用的模块有:
./kernel/net/wireless
./kernel/net/wireless/lib80211_crypt_tkip.ko
./kernel/net/wireless/lib80211_crypt_ccmp.ko
./kernel/net/wireless/lib80211.ko
./kernel/net/wireless/lib80211_crypt_wep.ko
为什么在加载内核模块时缺少CFG80211 符号?我应该有一个可加载的 80211.ko 还是我缺少其他东西?
【问题讨论】:
标签: module linux-kernel wifi yocto