嵌入式Linux驱动需要加载固件(firmware)的情况

Published: 23 May 2014 Category: linux

前段时间一直在板子上调试wifi模块(skwlab skw17),驱动(compat wireless)可以正常编译通过,就是加载驱动的时候,提示需要固件,但是固件总是找不到,导致wifi模块初始化失败。这个问题困扰了我好久,一直找不到原因(起初,一直以为是驱动有问题,下个四个版本的驱动,仍然如此),没办法只能换一个模块(RT3070)来调试,谁知道在调试过程中也遇到相同的问题,大致问题如下图:

firmware

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  

启动后,加载驱动,完美地解决问题。