嵌入式Linux驱动需要加载固件(firmware)的情况
前段时间一直在板子上调试wifi模块(skwlab skw17),驱动(compat wireless)可以正常编译通过,就是加载驱动的时候,提示需要固件,但是固件总是找不到,导致wifi模块初始化失败。这个问题困扰了我好久,一直找不到原因(起初,一直以为是驱动有问题,下个四个版本的驱动,仍然如此),没办法只能换一个模块(RT3070)来调试,谁知道在调试过程中也遇到相同的问题,大致问题如下图:
和
rt2870usb 1-1:1.0: firmware: requesting rt2870.bin
phy0 -> rt2x00lib_request_firmware: Error - Failed to request Firmware.
顿时感觉不是驱动有问题,应该是我的Linux系统有问题。后来,google一番后,终于找到原因:busybox里面没有配置mdev。于是,果断在busybox选上mdev:
[*] mdev
[*] Support /etc/mdev.conf
[*] Support subdirs/symlinks
[*] Support regular expressions substitutions when renaming device
[*] Support command execution at device addition/removal
[*] Support loading of firmwares
编译,后放到板子上,在启动脚本里加上:
#start mdev
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
启动后,加载驱动,完美地解决问题。