X210-MT7601-USB WIFI移植

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangdapao12138/article/details/82559422

1MT7601驱动的移植

(1)开发环境搭建和确认

(2)源码获取和解压

(3)配置、编译、安装

最后得到网络设备文件。

2、插入usb WiFi 启动开发板linuxlsusb查看usb驱动

Bus 001 Device 003: ID 148f:7601看到的是该驱动的厂家设备信息

3、获取MT7601的源码

4、解压源码到linux下,确认USBVIDVENDOR)和PIDPRODUCT),在rtusb_dev_id.c

如果没有,则需要添加。MT7601U,在哪里被定义?

5.确认Makefile

打开源码根目录下的Makefile

(1)平台换成:三星

PLATFORM = SMDK

(2)内核源码树路径设置

LINUX_SRC = //linux内核源码树

(3)交叉工具链路径设置

CROSS_COMPILE = //交叉编译环境

 

5、可以更改wifi名字

(1)常用无线网卡名称:raxwlanx 
(2)
修改include/rtmp_def.h文件

 

6、添加wpa_supplicant支持

确保在os/linux/config.mk文件中WPA_SUPPLICANT=y

清理&编译

make clean && make -j4

生成os/linux/mt7601Usta.ko就是驱动模块

将编译好的os/linux/mt7601Usta.ko放到/home/aston/rootfs/rootfs 目录下

7.驱动源码的简单分析

从os/linux分析,因为我们是用在linux系统下面的。

从哪里开始找?当我们insmod时候,会注册,那么我们找下module_init

INT __init rtusb_init(void)

usb_register(&rtusb_driver);

00362: struct usb_driver rtusb_driver = {
00363: .name=RTMP_DRV_NAME, //驱动名称
00364: .probe=rtusb_probe,
00365: .disconnect=rtusb_disconnect,
00366: .id_table=rtusb_dev_id,
00368: #ifdef CONFIG_PM
00369: #ifdef USB_SUPPORT_SELECTIVE_SUSPEND
00370: .supports_autosuspend = 1,
00371: #endif /* USB_SUPPORT_SELECTIVE_SUSPEND */
00372: suspend: rt2870_suspend,
00373: resume: rt2870_resume,
00374: #endif /* CONFIG_PM */
00375: .supports_autosuspend = 1,
00376: };

8、无线网卡的驱动模块装载

挂载,然后安装驱动(成功后肯定得到一个设备文件(可以ifconfig -a查看),可以打开网卡ifconfig ra0 up),打印出一系列信息。

安装ko模块:

9.iwconfig工具

iwconfig工具集的介绍和使用演示

1linux专用来配置无线网络的一些命令集,这些命令集比较老了。

2)因为iwconfig本身有一定限制,它只支持一定的加密格式,在我们这里不用

10.路由器端基础知识

ap(路由器端)和station(手机)

(1)路由器的WAN、LAN

(2)无线参数:SSID(路由器的名字)、频段(2.4G附近分割成若干频段,每个用户使用不同频段)、模式(工作在哪种标准)

(3)安全类型:WEP(早版本)和WPA(升级版)、WPA2(完整版)

(4)安全选项

(5)加密算法

(6)PSK密码

11.wpa_supplicant配置文件

1wpa_supplicant简介

进行wifi网络管理的工具,也集成到了busybox中,即可以直接用。

2)建立/etc/Wireless/RT2870STA/目录(mkdir -p /etc/Wireless/RT2870STA/(这是wifi网卡的配置文件)),然后拷贝RT2870STA.dat(源码中有)到此目录下。

3)编辑/etc/wpa_supplicant.conf


12.网卡配置(上网)命令顺序

(1)安装驱动程序:insmod mt7601Usta.ko

(2)开启无线网卡:ifconfig ra0 up

(3)连接无线网络:wpa_supplicant -B -c /etc/wpa_supplicant.conf -i ra0

(4)查看连接状态:wpa_cli -i ra0 status

至此,usb_wifi已经连上了路由器。

1、ra0的配置和上网前,一定要先关掉eth0(ifconfig eth0 down),否则你ping或者设置等等都是默认使用的eth0而不是ra0.

2、当wifi网卡连接上路由器后,想要ping通路由器(网关),本地wifi网卡需要和网关同一网段的ip地址。这个本地的ip地址可以dhcp分配,也可以手工配置一个。

3、本地有了ip地址,并且wifi网卡通过wpa_supplicant配置连上路由器后,就能ping通网关了。但是这时还不能ping通外网,因为本地还没有添加网关配置。添加网关配置有2种方法:通过route命令动态添加,或者通过/etc/network/interfaces文件添加。

4、添加网关后就能ping通外网IP了,但是还ping不通www.baidu.com等域名,因为还没有dns。

(1)ifconfig eth0 down

(2)ifconfig ra0 192.168.1.200  //手动配置ra0的ip地址,和路由器处于同一网段

(3)route add default gw 192.168.1.1 dev ra0  //配置网关(配置网关才能访问外网)

ping 192.168.1.1    //ping 网关

ping 8.8.8.8        //ping 外网(谷歌某地址)

(4)vi /etc/resolv.conf  //配置dns。即在此文件里添加nameserver xx.xx.xx.xx(根据实际)

ping www.baidu.com  

13、使用DHCP动态分配IP

(1)原理:路由器中有个dhcp服务器,本地有dhcp客户端

(2)前导步骤

ifconfig eth0 down

insmod mt7601Usta.ko            //安装驱动程序

ifconfig ra0 up                 //开启无线网卡

wpa_supplicant -B -c /etc/wpa_supplicant.conf -i ra0  //连接无线网络

wpa_cli -i ra0 status       //查看连接状态

(3)至此,wifi网卡已经启动并且连接上路由器。但由于本地没有ip地址,无法ping通路由器。怎么办?

使用dhcp分配一个本地ip。

方法1:命令行使用udhcpc -i ra0命令来分配

方法2:使用interface文件选择dhcp模式然后重启网卡

14、让开发板开机自动连上路由器上网

改/etc/init.d/rcS及其相关文件。

(1)etc/init.d/下的目录,和rcS文件的遍历执行该目录下的文件。

 

(2)在etc/init.d/目录下新建文件S41WIFI,添加如下内容,保存够修改权限。

然后修改chmod 777 S41WIFI。

15、在自己定制的rootfs中移植网卡

1、确认自己制作的rootfs并启动

(1)busybox交叉编译

(2)启动后直接nfs方式挂载文件夹形式的rootfs,测试ok后再做成镜像烧录

(3)挂载参数bootargs和bootcmd

setenv bootargs root=/dev/nfs nfsroot=192.168.1.100:/root/rootfs ip=192.168.1.10:192.168.1.100:192.168.1.1:255.255.255.0::eth0:off  init=/linuxrc console=ttySAC2,115200

set bootcmd 'tftp 30008000 zImage; bootm 30008000'

2、确认需要的移植的工具集

(1)iwconfig工具集:需要另外移植,不是busybox中的

 

(2)dhcp工具集:是busybox中集成的,确认busybox的menuconfig中配置支持了这个

(3)wpa_supplicant工具集:需要另外移植,不是busybox中的

3、交叉编译iwconfig

(1)源码下载

--------------------

移植环境:

       主机操作系统:Ubantu 10.10

       目标系统:hi351x 内核 linux-2.6.14

       交叉编译器:arm-hismall-linux-

wireless_tools版本: wireless_tools.29.tar.bz2

1.1 下载wireless_tools.29.tar.bz2

下载地址:下载wireless_tools.29.tar.bz2

1.2 解压

#tar xvfj wireless_tools.29.tar.bz2

#cd wireless_tools.29

1.3 Makefile修改

- 表示去掉的

+ 表示新增加的

#vi Makefile

- CC = gcc

+ CC= arm-hismall-linux-gcc

- AR = ar

+ AR= arm-hismall-linux-ar

#make

1.4 或者复制文件到产品板

拷贝libiw.so.29文件到目标系统/usr/lib/

拷贝用到的几个程序到产品板就可以了

iwpriv、iwconfig、iwlist, iwevent, iwspy

至此wireless_tools移植完成

 

有可能出现的错误:

在到产品板上还出现can't resolve symbol '__ctype_b_loc' 错误

去掉iwlib.h中这一行重新编译即可

#include <ctype.h>

----------------

(2)配置

(3)交叉编译

(4)部署安装

(5)测试

16、移植wpa_supplicant并制作镜像

1、交叉编译wpa_supplicant

(1)下载wpa_supplicant源码并配置编译。参考http://blog.csdn.net/hktkfly6/article/details/48949863

(2)下载配套版本的openssl并配置编译。

(3)去掉配置NL相关的选项省去移植libnl。参考:http://www.cnblogs.com/helloworldtoyou/p/6145995.html

2、在nfs中测试wpa_supplicant使用

3、制作ext2镜像并刷机测试

 

猜你喜欢

转载自blog.csdn.net/wangdapao12138/article/details/82559422