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

交叉编译器:arm-linux-gcc-4.5.4

Linux内核版本:Linux-3.0

开发板:FL2440

本文章的内核已经已经添加了DM9000的网卡,USB驱动,使用的是initramfs的文件系统。

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

便于理解,在这里把rt3070 sta模式一直的大体步骤说一下:添加内核支持-->编译Wireless tools生成一些库函数放到开发板的/lib/下-->编译Openssl生成一些库函数(一是放在开发板的/lib/目录下用作开发板移植所需,二是wpa_supplicant编译所需)-->编译wpa_supplicant生成命令文件(wpa_passphrase、wpa_supplicant、wpa_cli)-->开发板配置sta模式:wpa_passphrase生成配置文件,wpa_supplicant命令执行配置文件。

一、添加内核:

Linux-3.0以上的版本中,rt3070的驱动已经加入了内核源码中去了,本篇用的是Linux-3.0的内核,只需要在内核的make menuconfig中选择支持rt3070的station模式就可以了。

修改如下:

[*] Networking support  --->

-*-   Wireless  --->

<*>   cfg80211 - wireless configuration API

[*]     enable powersave by default

<*>   Common routines for IEEE802.11 drivers

<*>   Generic IEEE 802.11 Networking Stack (mac80211)

[*]   Minstrel

[*]     Minstrel 802.11n support

Default rate control algorithm (Minstrel)  --->

Device Drivers  --->

Generic Driver Options  --->

-*- Userspace firmware loading support

[*]   Include in-kernel firmware blobs in kernel binary

   [*] Network device support  --->

[*]   Wireless LAN  --->

<*>   Ralink driver support  --->

--- Ralink driver support

<*>   Ralink rt27xx/rt28xx/rt30xx (USB) support

[*]   Ralink debug output

编译内核烧录到开发板并插上rt3070模块显示如下:

usb 1-1.1: new full speed USB device number 4 using s3c2410-ohci
usb 1-1.1: New USB device found, idVendor=148f, idProduct=3070
usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-1.1: Product: 802.11 n WLAN
usb 1-1.1: Manufacturer: Ralink
phy1 -> rt2x00_set_chip: Info - Chipset detected - rt: 3070, rf: 0005, rev: 0201.

>: lsusb
Bus 001 Device 001: ID 1d6b:0001
Bus 001 Device 002: ID 05e3:0606
Bus 001 Device 004: ID 148f:3070

>: ifconfig wlan0
wlan0 Link encap:Ethernet HWaddr 00:A1:B0:40:6F:9A
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

如果想要启动wlan0还需要一个rt2870的固件。下载地址:

git clone git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git

在开发板下创建/lib/firmware文件夹,将下载下来的linux-firmware/rt2870.bin拷贝到开发板的firmware文件夹下。

二、无线网络配置工具移植

wireless_tools.29.tar.gz    下载地址http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.29

openssl-0.9.8i.tar.gz    下载地址http://www.openssl.org/source/openssl-0.9.8i

wpa_supplicant-0.7.3.tar.gz    下载地址http://hostap.epitest.fi/releases/wpa_supplicant-0.7.3

(1)wireless_tools的配置:

[xiaohexiansheng@centos6 test]$ tar xzvf wireless_tools.29.tar.gz

[xiaohexiansheng@centos6 test]$ cd wireless_tools.29

[xiaohexiansheng@centos6 wireless_tools.29]$ vim Makefile

修改如下:

CC =/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc

AR = /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-ar

RANLIB =/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-ranlib

[xiaohexiansheng@centos6 wireless_tools.29]$ make

这时可以在当前目录下找到生成的文件:iwlist iwconfig iwpriv libiw.so.29 把文件分别拷贝到开发板的/lib/ /bin/目录下,并修改权限为可执行文件:

(2)openssl的配置

因为wpa_supplicant的编译需要openssl编译出来的库文件,所以这里需要首先编译openssl。

[xiaohexiansheng@centos6 rt3070]$ tar -xzf openssl-0.9.8i.tar.gz
[xiaohexiansheng@centos6 rt3070]$ cd openssl-0.9.8i

[xiaohexiansheng@centos6 openssl-0.9.8i]$ mkdir install

[xiaohexiansheng@centos6 openssl-0.9.8i]$ vim Makefile

修改如下:

INSTALLTOP=/home/xiaohexiansheng/fl2440/3rdparty/rt3070/openssl-0.9.8i/install

OPENSSLDIR=/home/xiaohexiansheng/fl2440/3rdparty/rt3070/openssl-0.9.8i/install

CC= /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc

AR= /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-ar $(ARFLAGS) r

RANLIB= /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-ranlib

[xiaohexiansheng@centos6 openssl-0.9.8i]$ sudo make

[xiaohexiansheng@centos6 openssl-0.9.8i]$ sudo make install

[xiaohexiansheng@centos6 openssl-0.9.8i]$ ls install/lib/
engines  libcrypto.a  libssl.a   pkgconfig

将libcrypto.a  libssl.a拷贝到开发板的/lib/目录下

(3)wpa_supplicant配置

[xiaohexiansheng@centos6 rt3070]$ tar -xzf wpa_supplicant-0.7.3.tar.gz
[xiaohexiansheng@centos6 rt3070]$ cd wpa_supplicant-0.7.3
[xiaohexiansheng@centos6 wpa_supplicant-0.7.3]$ ls
COPYING patches README src wpa_supplicant
[xiaohexiansheng@centos6 wpa_supplicant-0.7.3]$ cd wpa_supplicant/

[xiaohexiansheng@centos6 wpa_supplicant]$ cp defconfig .config
[xiaohexiansheng@centos6 wpa_supplicant]$ vim .config

修改如下:

CC= /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc -L/home/guanlei/fl2440/3rdparty/rt3070/openssl-0.9.8i/install/lib

CFLAGS += -I/home/xiaohexiansheng/fl2440/3rdparty/rt3070/openssl-0.9.8i/install/include

LIBS += -L/home/xiaohexiansheng/fl2440/3rdparty/rt3070/openssl-0.9.8i/install/lib

[xiaohexiansheng@centos6 wpa_supplicant]$ make

生成的文件中我们所需要的文件有:wpa_passphrase wpa_supplicant wpa_cli

三、开发板文件配置

理一下所需要的文件及所在的位置:

/lib/:iwlist iwconfig iwpriv libiw.so.29 libcrypto.a libssl.a

/bin/:iwlist iwconfig iwpriv libiw.so.29

wpa_supplicant下生成的wpa_passphrase wpa_supplicant wpa_cli这三个文件是命令文件。

wpa_passphrase用来生成wpa_supplicant.conf的配置文件:

>: ./wpa_passphrase ssid psk >> wpa_supplicant.conf  (ssid就是wifi名字 psk是密码)

这时生成的.conf文件还不能用,需要修改一下,最终的文件是这种形式:

# WPA-PSK/TKIP
# wpa_supplicant -Dwext -iwlan0 -c/apps/etc/wireless/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
network={
  ssid="ssid"
  key_mgmt=WPA-PSK     // 加密模式 这里一定要和的你要连的wifi保持一致

  proto=WPA
  pairwise=TKIP CCMP
  #psk="psk"
  psk=a9a3f0b958b887804e71fe58694f82b5972dfc658827a366d6eea0c8abe9a42e
}

>: ./wpa_supplicant -Dwext -iwlan0 -c/apps/etc/wireless/wpa_supplicant.conf &
phy1 -> rt2x00mac_conf_tx: Info - Configured TX queue 0 - CWmin: 3, CWmax: 4, Aifs: 2, TXop: 102.
phy1 -> rt2x00mac_conf_tx: Info - Configured TX queue 1 - CWmin: 4, CWmax: 5, Aifs: 2, TXop: 188.
phy1 -> rt2x00mac_conf_tx: Info - Configured TX queue 2 - CWmin: 5, CWmax: 10, Aifs: 3, TXop: 0.
phy1 -> rt2x00mac_conf_tx: Info - Configured TX queue 3 - CWmin: 5, CWmax: 10, Aifs: 7, TXop: 0.
Trying to associate with d4:ee:07:22:6b:5c (SSID='HiWiFi_LingYun' freq=2427 MHz)
phy1 -> rt2x00mac_conf_tx: Info - Configured TX queue 2 - CWmin: 7, CWmax: 10, Aifs: 3, TXop: 0.
phy1 -> rt2x00mac_conf_tx: Info - Configured TX queue 3 - CWmin: 4, CWmax: 10, Aifs: 7, TXop: 0.
phy1 -> rt2x00mac_conf_tx: Info - Configured TX queue 1 - CWmin: 3, CWmax: 4, Aifs: 2, TXop: 94.
phy1 -> rt2x00mac_conf_tx: Info - Configured TX queue 0 - CWmin: 2, CWmax: 3, Aifs: 2, TXop: 47.
Associated with d4:ee:07:22:6b:5c
WPA: Key negotiation completed with d4:ee:07:22:6b:5c [PTK=CCMP GTK=CCMP]
CTRL-EVENT-CONNECTED - Connection to d4:ee:07:22:6b:5c completed (auth) [id=0 id_str=]

>: ./iwconfig
lo no wireless extensions.

eth0 no wireless extensions.

wlan0 IEEE 802.11bgn ESSID:"HiWiFi_LingYun"
Mode:Managed Frequency:2.427 GHz Access Point: D4:EE:07:22:6B:5C
Bit Rate=60 Mb/s Tx-Power=20 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:on
Link Quality=53/70 Signal level=-57 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:1 Missed beacon:0

>: ifconfig wlan0 192.168.199.234 up
>: ping 192.168.199.1
PING 192.168.199.1 (192.168.199.1): 56 data bytes
64 bytes from 192.168.199.1: seq=0 ttl=64 time=59.740 ms
64 bytes from 192.168.199.1: seq=1 ttl=64 time=46.335 ms
64 bytes from 192.168.199.1: seq=2 ttl=64 time=49.224 ms

--- 192.168.199.1 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 46.335/51.766/59.740 ms

好了,这时开发板就可以通过rt3070这个模块来连接路由器了。

四、登陆外网

>: ifconfig wlan0 192.168.199.234 netmask 255.255.255.0 up

>: ifconfig eth0 down

>: ifconfig
wlan0 Link encap:Ethernet HWaddr 00:A1:B0:40:6F:9A
inet addr:192.168.199.234 Bcast:192.168.199.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:690 errors:0 dropped:170 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:63943 (62.4 KiB) TX bytes:901 (901.0 B)

添加resolv.conf来进行域名解析:

>: vi /etc/resolv.conf

earch localdomain
nameserver 4.2.2.2
nameserver 8.8.8.8

>: ping www.baidu.com
PING www.baidu.com (119.75.218.70): 56 data bytes
64 bytes from 119.75.218.70: seq=0 ttl=53 time=24.430 ms
64 bytes from 119.75.218.70: seq=1 ttl=53 time=66.255 ms

FL2440 rt3070模块station模式移植的更多相关文章

  1. FL2440 rt3070模块ap模式移植

    ---------------------------------------------------------------------------------------------------- ...

  2. FL2440 rt3070模块station模式动态获取IP地址

    ---------------------------------------------------------------------------------------------------- ...

  3. 3.1 wifi网卡RT3070在S3C2440的移植和使用

    学习目标:熟悉RT3070在S3C2440的移植和使用,以及其中的相关工具的安装和使用: 一.配置内核选择WIFI驱动 1. 将usb wifi插到电脑,在ubuntu使用命令:# lsusb 查看w ...

  4. ESP8266 station模式下建立client、server TCP连接

    程序实现内容: 1.在station模式下,ESP8266作为client.server进行TCP连接2.实现数据的发送.接收(同时回传)实现思路:TCP网络通信分层为:应用层.网络层.数据链路层.物 ...

  5. 【设计模式】module(模块)模式

    写在前面 最近刚接触到设计模式, <head first设计模式>里有一篇文章,是说使用模式的心智, 1.初学者"心智" :"我要为HELLO WORLD找个 ...

  6. 设计模式-模块方法模式(TemplateMethod)

    模块方法模式是行为模式之一,它把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为. UML图: 具体代码: /** * 抽象-模块方法模式核心 */ ...

  7. MT7601 AP模式移植

    MT7601 的 STA 模式和 AP 模式的驱动,是不一样的. 所以,需要另外移植驱动 驱动源码位置 https://github.com/eywalink/mt7601u 下载之后,先修改 Mak ...

  8. TemplateMethod(模块方法模式)

    /** * 模块模式 * @author TMAC-J * 将一个完整的算法分离,分成不同的模块 * 用于有很多步骤的时候,可能以后这些步骤还会增加,把这些步骤分离 * 将有共性的部分放在抽象类中 * ...

  9. win10使用4G 模块RNDIS模式上网

    Windons使用RNDIS模式上网步骤 Chapter 1 模块端配置 1模块设置为RNDIS模式 1.       以EC20CEFAG模块为例 2.       命令如下: 1)         ...

随机推荐

  1. BZOJ1037 DP

    2013-11-15 21:51 原题传送门http://www.lydsy.com/JudgeOnline/problem.php?id=1037 拿到这道题想到了DP,后来发现三维无法确定的表示状 ...

  2. UNREFERENCED_PARAMETER()的作用

    告诉编译器,已经使用了该变量,不必警告. 在VC编译器下,当你声明了一个变量,而没有使用时,编译器就会报警告: “warning C4100: ''XXXX'' : unreferenced form ...

  3. [Leetcode Week9]Word Break II

    Word Break II 题解 题目来源:https://leetcode.com/problems/word-break-ii/description/ Description Given a n ...

  4. 如何在Ubuntu 16.04安装的Git【转】

    转自:https://www.howtoing.com/how-to-install-git-on-ubuntu-16-04/ 介绍 现代软件开发中不可或缺的工具是某种版本控制系统. 版本控制系统允许 ...

  5. 【bzoj3924&&luogu3345】幻想乡战略游戏

    这题可以用线段树做,不过正解恐怕是动态点分治?(点分树) 简单介绍下动态点分治的概念:在点分治的过程中,一般我们面对的问题都是静态的.如果涉及到修改这类的操作,我们就希望找到我们是如何处理到当前的修改 ...

  6. (十五)mysql中间件MyCAT实现

    1)拓扑如下和实现目标 写操作:都在master 读操作:在slave1上 当master1挂了,写操作自动切换到master2上 当master2挂了,写操作自动切换到master1上 2)Myca ...

  7. 使用Postman访问OAuth2保护的WebAPI

    Instantnoodle现时的WebAPI已经受Azure AD保护,平时直接输入URL的方式已经不能够正常访问到WebAPI 所有API都可以Swagger页面找到 http://getazdev ...

  8. Cookie和session的简单理解和应用

    一.COOKIE 1.http协议建立连接后,无法保持状态:但实际情况,网站和服务器要进行通讯,需要“保持状态”,因此cookie应运而生:浏览器登陆web服务器后, Web 服务器产生包含有关用户的 ...

  9. linux:/lib/libc.so.6: version `glibc_2.7′ not found【没有解决】采用新方法达到目的

    1 下载glibc wget http://ftp.gnu.org/pub/gnu/glibc/glibc-2.7.tar.gz 2. tar zxf glibc-2.7.tar.gz 3. cd g ...

  10. Nmap——主机、端口扫描工具

    nmap 其基本功能有三个,一是探测一组主机是否在线:其次是扫描主机端口,嗅探所提供的网络服务:还可以推断主机所用的操作系统 . 这是百度给的介绍:http://baike.baidu.com/lin ...