本篇基于友善之臂的mini2440 arm9开发平台,使用官方配套的根文件系统和内核树。
水星MW54U无线网卡是基于Rt2571无线网卡芯片的,属于ralink公司的rt73体系,和rt2500有些不同,在连接初始化配置时需要从主机加载镜像文件,在使用ifconfig命令激活时需要将rt73 firmware 文件通过usb接口传递到芯片上的51单片机上。
Linux内核已经包含了Ralink常见各系列的USB无线网络芯片的驱动程序,通过menuconfig工具配置
Network supports->wireless->Generic IEEE 802.11 Networking stack项和
General setup->Prompt for development and/or incomplete code/drivers项后
(根据Kconfig文件的依赖关系分析得出),可在
Device driver->Networking device support->wireless LAN->Ralink driver support项的
子菜单中选择rt2501(rt73)驱动对应的项编译进内核,安装启动内核,该无线网卡就能在系统中被识别成网络设备了,但是如果该驱动程序依赖的firmware文件rt73.bin没有在构建根文件系统时加进系统中,则在执行ifconfig wlan0 up启动网卡时出现:
phy2 -> rt2x00lib_request_firmware: Info - Loading firmware file 'rt73.bin'.
rt73usb 1-1:1.0: firmware: requesting rt73.bin
phy2 -> rt2x00lib_request_firmware: Error - Failed to request Firmware.
ifconfig: SIOCSIFFLAGS: No such file or directory
提示找不到rt73.bin文件。
解决思路与方法:缺少rt73.bin这个文件自然就要我们加进去,但是需要放在什么地方驱动程序才能找到呢?
开始试着修改驱动程序rt73.h头文件里的宏,重新编译后来还是有问题,成功的做法如下:
Ubuntu使用的是同样的内核驱动代码,可以正确配置该网卡,相同代码的行为应该一样,可以参考ubuntu的做法,在ubuntu下查找rt73.bin文件,发现该文件位于/lib/firmware/下,在目标板上创建/lib/firmware目录并把rt73.bin拷贝到该目录,最后执行ifconfig wlan0 up,就可以启动该网络设备了,提示如下(我是开启了内核的Ralink debug output选项的,不需要可以关闭):
phy2 -> rt2x00lib_request_firmware: Info - Loading firmware file 'rt73.bin'. rt73usb 1-1:1.0: firmware: requesting rt73.bin phy2 -> rt2x00lib_request_firmware: Info - Firmware detected - version: 1.7. phy2 -> rt2x00mac_conf_tx: Info - Configured TX queue 0 - CWmin: 5, CWmax: 10, A ifs: 2, TXop: 0. phy2 -> rt2x00mac_conf_tx: Info - Configured TX queue 1 - CWmin: 5, CWmax: 10, A ifs: 2, TXop: 0. phy2 -> rt2x00mac_conf_tx: Info - Configured TX queue 2 - CWmin: 5, CWmax: 10, A ifs: 2, TXop: 0. phy2 -> rt2x00mac_conf_tx: Info - Configured TX queue 3 - CWmin: 5, CWmax: 10, A ifs: 2, TXop: 0.
下一步需要进行无线网络的配置。