做了wifi模块STA 移植。。借鉴了网上和同学的文档
模块是RT3070。。开发板是fl2440跑的Linux3.0。。主机是centos6.5
基站模式(STA):任何无线设备驱动都可以工作在该模式下,这种模式是默认的模式在该模式下工作的网卡必须连接到一个在AP模式下工作的网卡。简单的说。。sta模式就是连别人的wifi
1.下载源代码。。我用的DPO_RT3070_LinuxSTA_V2.3.0.2_20100412.bz2
2.解压
3.修改os/linux 中的config.mk文件
#cd /os/linux/
#vi config.mk
HAS_WPA_SUPPLICANT=y
#endif // WPA_SUPPLICANT_SUPPORT //
#ifdef NATIVE_WPA_SUPPLICANT_SUPPORT
# Support Native WpaSupplicant for Network Maganger
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n
4.修改Makefile
#PLATFORM: Target platform
PLATFORM = PC 目标平台选择PC
ifeq ($(PLATFORM),PC)
# Linux 2.6
LINUX_SRC = /usr/src/linux-2.6.12 内核位置
# Linux 2.4 Change to your local setting
#LINUX_SRC = /usr/src/linux-2.4
LINUX_SRC_MODULE=/lib/modules/$(shelluname-r)/kernel/drivers/net/wireless/
CROSS_COMPILE= /usr/src/usr/local/arm/3.4.1/bin/arm-linux- 交叉编译器位置
Endif
5.makemake后再os/linux下生成了rt3070sta.ko
6.把RT2870STA.dat拷贝到开发板/etc/Wireless/RT2870STA目录下并给权限
把rt2870.bin usb固件拷贝到开发板 /lib/firmware
把rt3070sta.ko拷贝到开发板 /usr/ 目录下
7.挂载驱动 insmod /usr/rt3070sta.ko
挂载成功就可以ifconfig -a查看。。会有wlan0或者ra0设备
8.启动无线ifconfig ra0 up
驱动移植就是这些。。下面移植wireless tools
1.下载源码。。我的是wireless_tools.29.tar.gz
2.解压
3.改Makefile
PREFIX = /home/leo/wirelesstoolsout
CC = /usr/src/usr/local/arm/3.4.1/bin/arm-linux-gcc
AR = /usr/src/usr/local/arm/3.4.1/bin/arm-linux-ar
RANLIB = /usr/src/usr/local/arm/3.4.1/bin/arm-linux-ranlib
交叉编译器下的配件
4.交叉编译。。make & make install
5.复制libiw.so.29到开发板/lib/
复制iwpriv、iwconfig、iwlist, iwevent, iwspy到开发板/bin
6.设置IP和掩码
ifconfig wlan0 192.168.1.35 netmask 255.255.255.0
7.扫描网络
iwlist wlan0 scan
8.如果此时是有未加密的网络。。就可以直接连接
iwconfig wlan0 ESSID ***** (网络名)
就可以连接了。。
如果是加密的网络要移植Openssl
1.下载文件解压openssl-0.9.8l.tar.gz
2.建立openssl编译目标路径:mkdir /usr/local/ssl
3.修改Makefile
CC=arm-none-linux-gnueabi-gcc
AR=arm-none-linux-gnueabi-ar
RANLIB=arm-none-linux-gnueabi-ranlib
INSTALLTOP=/usr/local/ssl
OPENSSLDIR=/usr/local/ssl
前三个交叉编译器文件。。后两个之前mkdir路径
4.make & make install
5.在/usr/local/ssl/lib下会出现libcrypto.a libssl.a。。将这两个拷贝到/lib下
接下来移植wpa_supplicant
1.下载源码并解压wpa_supplicant-0.7.2.tar.gz
2.cp wpa_supplicant-0.7.2/wpa_supplicant/defconfig .config
3.在.config中添加如下代码:
CC=arm-none-linux-gnueabi-gcc-L /usr/local/ssl/lib/ 交叉编译器和刚才库路径
CFLAGS+= -I/usr/local/ssl/include/ 刚才库路径
LIBS+= -L/usr/local/ssl/lib/ 刚才的库路径
4.make
5.拷贝wpa_supplicant和wpa_cli和wpa_passphrase到开发板
6.在板子上生成wpa_supplicant.conf配置文件
wpa_passphrase wifi名 wifi密码 >> /etc/Wirelesswpa_supplicant.conf
vi wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="无线名"
key_mgmt=WPA-PSK //加密模式
proto=WPA
pairwise=TKIP CCMP
#group=TKIP CCMP //这里我注视掉了,你可以不用注释掉
psk="xiguashuang" //这里我是使用的明文,你也可以使用自动生成的加密之后的
#psk=f7c429c4e6d7e83ab648c83409ccffc53b331b58bfb69b5f6a35fa10c45cf8bf
}
7.连接无线路由器
wpa_supplicant -Dwext -iwlan0 -c /etc/Wireless/wpa_supplicant.conf &
8.检查
iwconfig
就能看到已经连接了wifi9.配置IP和掩码
ifconfig wlan0 192.168.1.244 netmask 255.255.255.0 up
ifconfig eth0 down
ping 192.168.1.102 ping自己的开发板
就能成功了
如果想要上外网。。额外要加DNS和网关
1.在/etc下创建resolv.conf
vi resolv.conf
#search localdomain
nameserver 4.2.2.2
nameserver 8.8.8.8
2.添加网关
route add default gw 192.168.1.1
3.ping www.baidu.com
有时候很慢。。但是可以ping通