您的位置:首页 > 运维架构 > Linux

Linux-3.5 下WiFi移植

2015-09-04 01:05 417 查看
环境:Linux-3.5,雷凌MT7601U模组网卡,tiny4412板子

一、 获得源码。

       网卡插开发板上(或者连入虚拟机,这个没有试过,感觉应该可以),在uboot命令行下,lsusb,就会出现WiFi的产品芯片,百度一下产品芯片,应该能知道该芯片用的是哪一个公司的模组,然后到对应模组公司下载Linux下的驱动源码,如本例子里是MT7601U,下完源码,在Linux下解压出来。

二、修改移植

   1. 首先在common/rtusb_dev_id.c文件中修改USB_DEVICE_ID rtusb_dev_id[],也就是增加所用产品芯片到module
table 中,如果不知道在哪个文件中,可以建立一个source insight工程,然后搜索USB_DEVICE_ID关键字,排除一些文件应该就能够找你到响应的文件。在rtusb_dev_id[]中找到#ifdef
MT7601U定义的地方,仿造别人的方法加一个自己的WiFi下信息,如增加{USB_DEVICE(0x148f,0x760b)}, /* MT 6370 */。

   
2.有时候源码中会忘记关闭debug打印信息,这导致我们安装模块时,会不停的打印出调试信息,阻碍我们输入东西。可能不同的板子会打印出不同的信息,但是可以在source inside下搜索打印语气的地方,然后前后分析一下打印原因,就可以关闭debug。本例子中有一个地方需要关闭。也就是include/os/rt_linux.h中在
1558 后面加上两句话,变成如下:

1558
#include "os/rt_os.h"
1559 #undef DBGPRINT
1560 #define DBGPRINT(aa, arg ...)
1561 #endif /* __RT_LINUX_H__ */

     
3. 打开REDME文件,或者类似文件,里面有移植介绍。虽然有可能更新跟不上,但是这是我们最好的帮助了。因为READEME文档很有可能更新跟不上产品,所有需要在参考过程中理性的去思考到底要不要去做这一步。这里需要修改:

PLATFORM
= PC ,改成自己板子的类型,如果是三星的板子则改成PLATFORM = SMDK;

修改内核源码路径,和编译器类型。编译内核需要依赖源码,同时要交叉编译,这个需要去确认源码中所用的是否与自己实际用的板子一样,一般源码会默认设置成支持x86的。在当前文件中搜索CROSS_COMPILE,找到定义内核路径和交叉编译器的地方,改成自己实际要用的就好了。这里改成这样:

 ifeq
($(PLATFORM),SMDK)
 LINUX_SRC = /root、/linux-3.5、
CROSS_COMPILE = arm-linux-

 endif

   
4.按照README文档找到os/linux/config.mk,将里面两处配置成:

HAS_WPA_SUPPLICANT=y

HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y

然后make,make之后如果没有什么错误,就好生成.ko文件,将这个文件复制到自己板子的文件系统上。这里是

cp os/linux/mt7601Usta.ko /root/work/home/

然后根据README文档复制配置文件到板子指定目录上,这里是

cp
RT2870STA.dat /root/work/etc/Wireless/RT2870STA/


如果没有复制配置文件后面应该会有:

Could
not set interface ra0 flags: Operation not permitted
Failed to initialize driver interface

这个错误。

到这里可以移植成功了,但是最好还要移植一些WiFi配置工具,让我们可以配置WiFi的工作模式。

  
5. 可以移植wpa_supplicant和wireless_tools,他们有的是可执行文,有的是库,将可执行文件复制到板子/bin目录下(需要修改权限,使之具有可执行权限),库则复制到/lib目录下。

   6.安装模组,要是有打印错误无法分配内存,则有可能是一次要分配的内存太大,无法分配,这需要在bootargs中指定,可以在bootargs后面加上coherent_pool=2M

再次安装模块,幸运的话应该就成功了,这时插入usbwifi,然后用iwconfig命令查看网卡信息,看看是否有自己的WiFi信息。

要是有根据README提示,在

创建/etc/[b]wpa_supplicant.conf
文件输入内容:
[/b]

#
WPA-PSK/TKIP
ctrl_interface=/var/run/wap_supplicant
ap_scan=1
update_config=1
network={
[b]ssid="xxx" #WIFI
网络名,根据自己的修改
key_mgmt=WPA-PSK
proto=WPA
pairwise=TKIP CCMP
group=TKIP CCMP
psk="ooooo" #WIFI
密码,根据自己的修改
}[/b]

mkdir
/var/run/wap_supplicant -p
[b]wpa_supplicant
-Dwext -ira0 -c /etc/wpa_supplicant.conf -B命令启动WiFi。
[/b]

到这里差不多了。

后面配置ip既可以了

7.
配置ip


    

[b]ifconfig ra0 192.168.1.10(这里是你连接无线的网段) broadcast 192.168.1.255 netmask 255.255.0.0 up


    配置路由表,由于是无线网卡,这里的网关不要和有线网卡的一
b792
样,如果你的有限网卡网关是192.168.0.1,你的WiFi则要配成类似192.168.1(非0).1的网关。[/b]

  
网关查看命令:route -n


 
路由配置查看命令:iproute


 
路由配置命令:
[b]route add default gw 192.168.1.1
[/b] 

  设置好网关后,ping一下其他网站,如ping 119.75.218.77能通就说明可以上网了。


8、
如果要实现ping域名,则这么搞:


   
创建/etc/resolv.conf 文件,内容:


[b]nameserver
192.168.1.1

nameserver 8.8.8.8[/b]

……其他的域名解释服务器DNS

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: