|
最近在想方设法为SEP4020处理器添加无线网卡功能,由于我们使用了外扩的USB-HOST芯片(S1R72V17),导致寻找无线网卡的道路充满了艰辛,容我慢慢道来。
要想在arm-linux下使用无线网卡,首先要有该款无线网卡的linux驱动,其次驱动能够交叉编译通过。网上有不少高手搞定了无线网卡,分享了好文,这儿感谢互联网和大家的分享精神。
刚开始选择了网上移植文章最多的ralink公司的RT73芯片,代表网卡品牌有TP-link的321G和华硕WL-167G(我们买的这个)等,属于54M通用大众网卡,市面上很容易买到。该款网卡在三星的S3C2410工作正常,很快连上我们的dlink路由器(调试时没有加密)。但是相同的程序,在SEP4020+S1R72V17上无法正常工作。表面现象是CPU占用率100%,于是打开prink进行调试,发现RT73网卡在发送大量命令传输数据包时,突然发送了一个bulk数据包,这个时候URB层报告错误。继续跟踪urb.c的代码,发现USB状态机此时处于Addressed状态,无法处理这个bulk包,usb状态机必须要在下一个状态Configured态才可以处理其他传输类型。既然2410上调试没有问题,RT73的驱动应该没有太大问题,我主要怀疑是S1R72V17的USB驱动不够完善导致,但ESPON写的这个驱动实在复杂(既不是OHCI又不是EHIC,完全是自己的协议),我跟了一段时间代码,没能力和精力去研究,遂放弃,开始换网卡的慢慢长路。
第二款选定的网卡芯片是ZD1211系类,ZD1211是当前热门无线网卡,同样是54M,因为拥有连接PSP和NDS上网对战的功能,有神卡之称?代表品牌有TP-link的322G+(貌似,没买)、水星品牌的54M、以及市面上最便宜的萨基姆54M(只要三十多元)等,我买了个杂牌,芯片是ZD1211B,价格不到50元。ZD的驱动不是我调试,那周正好去了深圳,由FP负责。首先还是在2410上测试,同样很好没有问题,然后到我们的SEP4020+V17上又不能work。FP实力很强,调了一周,看了不少ZD1211的代码,发现ZD芯片在发送一个数据包时,要等很久才能收到回包。如果这是ZD又发送了数据包,就会出现接受数据错位导致错误的现象。于是他把zd1211.c中一处由短暂的延时改为直到收到回包才返回,终于能够连上Dlink路由器了。可惜连上的过程依然非常不稳定,丛开始搜索到连上竟然要2-3分钟,连上的速率一般还只有1M,无法实用。同时,由于V17采用中断处理数据,系统出现了中断过多的现象,难道是54M的网卡太快了?我们的小ARM7处理不过来?抱着这个想法我决定换第三款芯片,换个11M的试试。
第三款无线网卡芯片是AT76C503a,11M时代很常用的芯片,Linux内核中就集成了这款芯片的驱动程序。从网上搜到的网卡品牌有TP-link的WN220M,还有Dlink的DWL 120和Linksys的WUSB11等。首先我买了一个WN220M网卡,3.0版本,由ztt同学负责调试。大概调了一周,编译了数个版本的at76驱动,竟然都无法识别。郁闷到最后拆卡一看,TP竟然换芯片了,3。0版本采用了SIS芯片,网上找不到资料。既然3.0不是,那就买2.0吧,可惜2.0暂时买不到,我又选择了Dlink的DWL120。120到手,插上依然没有反应,直接暴力拆开,傻眼了,又不是AT76的芯片,是ISL公司的。在网上搜了下,有人说DWL120也有两个版本,一个是AT76,另外是ISL,还有一句话引起了我的注意,ISL在linux可以用linux-wlan的开源项目。
抱着一丝希望,我搜了下linux-wlan,发现全称叫linux-wlan-ng,支持prism2的网卡,国内竟然也有朋友试过!下载编译了linux-wlan-ng 0.2.5驱动,很顺利,但还是无法识别我那块DWL120。但是,网上有人说netgear公司的MA111也支持这个驱动,立刻上网购买MA111。今天下午拿到MA111,上手测试,竟然很顺利的用起来了(终于泪流满面),现在ping网关一个晚上,暂时未发现大问题。
总结一下,目前发现共有4款芯片可以在arm-linux上使用,分别是RT73、ZD1211、AT76C503A和ISL芯片,这四款我没有试过AT76,但在2410上使用都该没有任何问题。由于我们存在USB芯片的兼容问题,能有一款可用我也满足了。有空应该看看驱动和USB的源码,我相信兼容的问题是可以用过修正代码解决的!
(原文件名:ef109c77e11eda3fb051b9ab.jpg) |
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|