fl2440-添加RT3070驱动(STA模式)实现无线上网

时间:2020-12-04 20:38:37

***************************************************************************************************************************************************************************************

开发板     :fl2440

CPU          :  s3c2440

linux内核:linux3.0

开发模块:RT3070

***************************************************************************************************************************************************************************************

前言:在开发这个模块之前,我们先了解一下RT3070。RT3070有两种工作模式:STA(station)模式和SoftAP(Access Point)模式。本片博文主要是通过RT3070的STA模式实现fl2440开发板连上wifi上网。

  1.内核配置

[zoulei@CentOS linux-3.0]$ make menuconfig

[*] Networking support  --->  
<*> cfg80211 - wireless configuration API
[*] enable powersave by default
[*] cfg80211 wireless extensions compatibility
[*] Wireless extensions sysfs files
{*} Common routines for IEEE802.11 drivers
<*> Generic IEEE 802.11 Networking Stack (mac80211)
Device Drivers --->
[*] Include in-kernel firmware blobs in kernel binary
[*] Network device support --->
[*] Wireless LAN --->
<*> Ralink driver support --->
<*> Ralink rt27xx/rt28xx/rt30xx (USB) support
[*] Ralink debug output
修改内核配置之后,make编译重新烧录进开发板。

如果成功,会发现开发板有无线网卡wlan0出现,如图:

fl2440-添加RT3070驱动(STA模式)实现无线上网

2.关闭有线网卡,开启无线网卡

 关闭有线网卡:ifconfig eth0 down

 开启无线网卡:ifconfig wlan0 up

之后再ifconfig发现只有wlan0

fl2440-添加RT3070驱动(STA模式)实现无线上网

插上RT3070网卡后,终端显示如下信息:

fl2440-添加RT3070驱动(STA模式)实现无线上网

3.下载RT3070固件

下载RT3070固件,放到开发板/lib/firmware下:

fl2440-添加RT3070驱动(STA模式)实现无线上网

打开无线网卡wlan0时,打印信息提示需要下载3070固件:

fl2440-添加RT3070驱动(STA模式)实现无线上网

如果没有这个固件,则会出错。

该固件可以到这里下载:https://coding.net/u/sfantree/p/self_use_OSS/git/raw/master/source/rt2870.bin

4.wpa_supplicant和openssl移植

wpa_supplicant:主要是用来支持WEP,WPA/WPA2和WAPI无线协议和加密认证。 
OpenSSL: 是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。

4.1.openssl 移植

openssl源码下载地址:https://coding.net/u/sfantree/p/self_use_OSS/git/raw/master/source/openssl-1.0.0s.tar.gz 

(1)解压、并指定安装目录

[zoulei@CentOS tftp]$tar zxvf openssl-1.0.0s.tar.gz

[zoulei@CentOS tftp]$cd  openssl-1.0.0s

[zoulei@CentOS openssl-1.0.0s]$mkdir install

(3)修改makefile

 29 INSTALLTOP=/tftp/openssl-1.0.0s/install/
30
31 # Do not edit this manually. Use Configure --openssldir=DIR do change this!
32 OPENSSLDIR=/tftp/openssl-1.0.0s/install/

62 CC= /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc
63 CFLAG= -O
64 DEPFLAG= -DOPENSSL_NO_GMP -DOPENSSL_NO_JPAKE -DOPENSSL_NO_MD2 -DOPENSSL_NO_RC 5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_STORE
65 PEX_LIBS=
66 EX_LIBS=
67 EXE_EXT=
68 ARFLAGS=
69 AR= /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-ar $(ARFLAGS) r
70 RANLIB= /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-ranlib
(4)编译

[zoulei@CentOS openssl-1.0.0s]$sudo make 

[zoulei@CentOS openssl-1.0.0s]$sudo make install

编译完之后会生成libcrypto.a , libssl.a两个静态库文件

fl2440-添加RT3070驱动(STA模式)实现无线上网

libcrypto.a , libssl.a两个静态库拷到开发板的/lib路径下。

4.2.wpa_supplicant移植

(1)下载wpa_supplicant源码 :https://coding.net/u/sfantree/p/self_use_OSS/git/raw/master/source/wpa_supplicant-0.7.3.tar.gz 

(2)解压、并修改.config配置文件

[zoulei@CentOS tftp]$tar zxvf wpa_supplicant-0.7.3.tar.gz

[zoulei@CentOS tftp]$ cd wpa_supplicant-0.7.3

[zoulei@CentOS wpa_supplicant-0.7.3]$ ls

COPYING  patches  README  src  wpa_supplicant

[zoulei@CentOS wpa_supplicant-0.7.3]$ cd wpa_supplicant/
[zoulei@CentOS wpa_supplicant]$
 cp defconfig .config

(3)修改.config文件

[zoulei@CentOS wpa_supplicant]$ vim .config

 26 CC=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc -L /tftp/openssl-1.0    .0s/install/lib
27 #CC=/opt/brcm/hndtools-mipsel-uclibc/bin/mipsel-uclibc-gcc
28 #CFLAGS += -Os
29 CPPFLAGS += -I /tftp/openssl-1.0.0s/install/include
30 LIBS += -L /tftp/openssl-1.0.0s/install/lib
(4) make 编译

[zoulei@CentOS wpa_supplicant]$make

fl2440-添加RT3070驱动(STA模式)实现无线上网

wpa_cli,wpa_supplicant,wpa_passphrase拷贝到开发板的/bin目录下。并给予权限 chmod 777:wpa_cli,wpa_supplicant,wpa_passphrase

5.开发板上操作

>: ls /etc/

>:wpa_passphrase Router_LingYun lingyun_emb >> wpa_supplicant.conf()

注意:输入命令:wpa_passphrase ssid psk >> wpa_supplicant.conf (ssid就是你wifi的名字 psk就是密码)

而我的是wifi是Router_LingYun 密码是lingyun_emb

(1)修改配置文件

>: vi /etc/wpa_supplicant.conf

fl2440-添加RT3070驱动(STA模式)实现无线上网

(2)连接路由器

接下来使用wpa_supplicant连接路由器:

输入命令:>:wpa_supplicant
-B -d -Dwext -iwlan0 -c /etc/wpa_supplicant.conf
 

fl2440-添加RT3070驱动(STA模式)实现无线上网

(3)网络设置 

3.1未开启DHCP,所以得手动分配: 
配置IP:ifconfig wlan0 192.168.2.60 
配置默认网关:route add default gw 192.168.2.1 
配置DNS:echo "nameserver 114.114.114.114" > /etc/resolv.conf

fl2440-添加RT3070驱动(STA模式)实现无线上网

ping测试

fl2440-添加RT3070驱动(STA模式)实现无线上网

3.2开启DHCP:

busybox已经集成了DHCP的客户端和服务端,make编译后,我们只要把Busybox的examples/udhcp/simple.script 拷

贝到开发板/usr/share/udhcpc/下,并重命名为default.script,然后更改文件default.script的权限.

fl2440-添加RT3070驱动(STA模式)实现无线上网

ping测试:

fl2440-添加RT3070驱动(STA模式)实现无线上网