fl2400开发板rt3070芯片—station模式

-------------------------------------------------------------------------
Cross compiler:arm-linux-gcc-4.5.4
Linux kernel version:linux-3.0
Development board:fl2440
Author:  Yuzhonghan <754270866@qq.com>

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

在Linux-3.0内核里,RT3070的STA驱动已经作为正式版本加入了Linux内核源码中了(从Linux-2.6.32开始以实验版本加入Linux内核中)。
本篇文章主要介绍如何在内核中编译支持RT3070的STA驱动,并连接到我的无线路由器上去。

1.配置Linux-3.0内核支持RT3070,我们以make menuconfig的方式将RT3070的驱动集成到内核里去

[*] Networking support  --->
         -*-   Wireless  --->
              <*>   cfg80211 - wireless configuration API
              [ ]     nl80211 testmode command
              [ ]     enable developer warnings
              [ ]     cfg80211 regulatory debugging
              [*]     enable powersave by default
              [ ]     use statically compiled regulatory rules database
              [ ]     cfg80211 wireless extensions compatibility
              <*>   Common routines for IEEE802.11 drivers
              [ ]   lib80211 debugging messages
              <*>   Generic IEEE 802.11 Networking Stack (mac80211)
              [ ]   PID controller based rate control algorithm
              [*]   Minstrel
              [*]     Minstrel 802.11n support
                    Default rate control algorithm (Minstrel)  --->
              [ ]   Enable mac80211 mesh networking (pre-802.11s) support
              [ ]   Select mac80211 debugging features  --->
 
Device Drivers  --->
       Generic Driver Options  --->
              (/sbin/hotplug) path to uevent helper
              [ ] Maintain a devtmpfs filesystem to mount at /dev
              [ ] Select only drivers that don't need compile-time external firmware
              [ ] Prevent firmware from being built
              -*- Userspace firmware loading support
              [*]   Include in-kernel firmware blobs in kernel binary
              ()    External firmware blobs to build into the kernel binary
[*] Network device support  --->
          [*]   Wireless LAN  --->
             <*>   Ralink driver support  --->
                   --- Ralink driver support
                   < >   Ralink rt2500 (USB) support
                   < >   Ralink rt2501/rt73 (USB) support
                   <*>   Ralink rt27xx/rt28xx/rt30xx (USB) support
                   [ ]    rt2800usb - Include support for rt33xx devices
                   [ ]    rt2800usb - Include support for rt35xx devices (EXPERIMENTAL)
                   [ ]    rt2800usb - Include support for rt53xx devices (EXPERIMENTAL)
                   [ ]    rt2800usb - Include support for unknown (USB) devices
                   [*]   Ralink debug output

2.插入RT2070无线网卡并加载新内核启动

>: usb 1-1.2: new full speed USB device number 8 using s3c2410-ohci
phy1 -> rt2x00_set_chip: Info - Chipset detected - rt: 3070, rf: 0005, rev: 0201.

>: ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr 00:24:25:50:A9:4D  
          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)

3.Linux内核官方站点下载rt2870.bin这个系统固件

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

 >: tftp -gr rt2870.bin 192.168.1.2
  rt2870.bin           100% |*******************************|  8192   0:00:00 ETA

>: ifconfig wlan0 up
phy1 -> rt2x00lib_request_firmware: Info - Loading firmware file 'rt2870.bin'.
phy1 -> rt2x00lib_request_firmware: Info - Firmware detected - version: 0.36.
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.

4.无线网络配置工具Wireless tools和Wpa_supplicant以及Openssl移植

(1)wireless_tools.29.tar.gz:  
 下载地址如下http://www.linuxfromscratch.org/blfs/view/svn/basicnet/wireless_tools.htm

解压后修改Makefile

 11 ## Compiler to use (modify this for cross compile).
 12 CC = /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc
 13 ## Other tools you need to modify for cross compile (static lib only).
 14 AR = /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-ar
 15 RANLIB = /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-ranlib

之后进行 make 会得到下列文件:

[Ciel@localhost wireless_tools.29]$ ls
 19-udev-ifrename.rules  ifrename.8           iwconfig.8  iwevent.o  iwlib.h        iwpriv   iwspy.d      sample_enc.c              wireless.14.h  wireless.22.h
CHANGELOG.h             ifrename.c           iwconfig.c  iwgetid    iwlib.so       iwpriv.8  iwspy.o      sample_pm.c               wireless.15.h  wireless.7
COPYING                 ifrename.d           iwconfig.d  iwgetid.8  iwlist         iwpriv.c  libiw.so.29 sample_priv_addr.c        wireless.16.h  wireless.h
cs                      ifrename.o           iwconfig.o  iwgetid.c  iwlist.8       iwpriv.d  macaddr.c    udev.import_devpath.diff  wireless.17.h
DISTRIBUTIONS.txt       IFRENAME-VS-XXX.txt  iwevent     iwgetid.d  iwlist.c       iwpriv.o  Makefile     wireless.10.h             wireless.18.h
fr                      iftab.5              iwevent.8   iwgetid.o  iwlist.d       iwspy     PCMCIA.txt   wireless.11.h             wireless.19.h
HOTPLUG.txt             INSTALL              iwevent.c   iwlib.c    iwlist.o       iwspy.8   README       wireless.12.h             wireless.20.h
ifrename                iwconfig             iwevent.d   iwlib.d    iwmulticall.c  iwspy.c   README.fr    wireless.13.h             wireless.21.h

生成的  iwlist、iwconfig、iwpriv,libiw.so.29 把工具和库拷贝到你的开发板的/lib ,/bin目录下并修改权限chmod a+x iw* libiw.so.29

(2)下载openssl源代码:http://download.csdn.net/detail/u010944778/8918317

$ mkdir install     //编译的文件放在这个文件中
29 INSTALLTOP=/home/guanlei/fl2440/3rdparty/rt3070/openssl-0.9.8i/install //指定ssl的安装目录
32 OPENSSLDIR=/home/guanlei/fl2440/3rdparty/rt3070/openssl-0.9.8i/install 
62 CC= /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc
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

#sudo make install (这里一定要用root权限,否者会出错,显示权限不够)
#ls install/lib/
engines libcrypto.a libssl.a pkgconfig

将 libcrypto.a libssl.a 放到你的开发板的  /lib  目录下

>: tftp -gr libssl.a 192.168.1.2
libssl.a             100% |*******************************|   359k  0:00:00 ETA
>: tftp -gr libcrypto.a 192.168.1.2
libcrypto.a          100% |*******************************|  2162k  0:00:00 ETA

(3)下载wpa_supplicant源码

http://w1.fi/releases/ 
#tar -xzf wpa-supplicant-0.7.3.tar.gz

[Ciel@localhost wpa]$ cd wpa_supplicant-0.7.3
[Ciel@localhost wpa_supplicant-0.7.3]$ ls
COPYING  patches  README  src  wpa_supplicant
[Ciel@localhost wpa_supplicant-0.7.3]$ cd wpa_supplicant/

[Ciel@localhost wpa_supplicant-0.7.3]$ cp defconfig .config

[Ciel@localhost wpa_supplicant]$ vim .config 

修改:

25 #### sveasoft (e.g., for Linksys WRT54G) ######################################
 26 #CC=mipsel-uclibc-gcc
 27 #CC=/opt/brcm/hndtools-mipsel-uclibc/bin/mipsel-uclibc-gcc
 28 CC=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc -L/home/Ciel/fl2440/3rdparty/rt3070/openssl/install/lib
 29 #CFLAGS += -Os
 30 CFLAGS +=-I/home/Ciel/fl2440/3rdparty/rt3070/openssl/install/include
 31 #CPPFLAGS += -I../src/include -I../../src/router/openssl/include
 32 #LIBS += -L/opt/brcm/hndtools-mipsel-uclibc-0.9.19/lib -lssl
 33 LIBS += -L/home/Ciel/fl2440/3rdparty/rt3070/openssl/install/lib

然后make 得到:

[Ciel@localhost wpa_supplicant]$ ls
ap.c             ChangeLog        ctrl_iface.h             eap_register.d   main_symbian.cpp  README-Windows.txt  win_if_list.c     wpas_glue.d
ap.h             config.c         ctrl_iface_named_pipe.c  eap_register.o   main_winmain.c    README-WPS          wpa_cli           wpas_glue.h
bgscan.c         config.d         ctrl_iface.o             eap_testing.txt  main_winsvc.c     scan.c              wpa_cli.c         wpas_glue.o
bgscan.h         config_file.c    ctrl_iface_udp.c         events.c         Makefile          scan.d              wpa_cli.d         wpa_supplicant
bgscan_simple.c  config_file.d    ctrl_iface_unix.c        events.d         mlme.c            scan.h              wpa_cli.o         wpa_supplicant.c
blacklist.c      config_file.o    ctrl_iface_unix.d        events.o         mlme.h            scan.o              wpa_gui           wpa_supplicant.conf
blacklist.d      config.h         ctrl_iface_unix.o        examples         nmake.mak         sme.c               wpa_gui-qt4       wpa_supplicant.d
blacklist.h      config_none.c    dbus                     ibss_rsn.c       notify.c          sme.h               wpa_passphrase    wpa_supplicant_i.h
blacklist.o      config.o         defconfig                ibss_rsn.h       notify.d          symbian             wpa_passphrase.c  wpa_supplicant.nsi
bss.c            config_ssid.h    doc                      main.c           notify.h          tests               wpa_passphrase.d  wpa_supplicant.o
bss.d            config_winreg.c  driver_i.h               main.d           notify.o          todo.txt            wpa_passphrase.o  wps_supplicant.c
bss.h            ctrl_iface.c     eapol_test.c             main_none.c      preauth_test.c    vs2005              wpa_priv.c        wps_supplicant.h
bss.o            ctrl_iface.d     eap_register.c           main.o           README            win_example.reg     wpas_glue.c       xcode

将上面的绿色文件tftp到你的开发板上

5.在开发板上运行

在开发板上输入命令:wpa_passphrase ssid psk>>wpa_supplicant.conf  (ssid就是你wifi的名字 psk就是密码)

修改你的配置文件:

>: vi wpa_supplicant.conf 

# WPA-PSK/TKIP
# wpa_supplicant -Dwext -iwlan0 -c/apps/etc/wireless/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
network={
        ssid="HiWiFi_LingYun"
        key_mgmt=WPA-PSK
        proto=WPA
        pairwise=TKIP CCMP
        #psk="lingyun-emb"
        psk=a9a3f0b958b887804e71fe58694f82b5972dfc658827a366d6eea0c8abe9a42e
}
6.连接你的路由器:

>: wpa_supplicant -Dwext -iwlan0 -c/apps/etc/wireless/wpa_supplicant.conf &

>: Trying to associate with d4:ee:07:22:6b:5c (SSID='HiWiFi_LingYun' freq=2417 MHz)
phy2 -> rt2x00mac_conf_tx: Info - Configured TX queue 2 - CWmin: 5, CWmax: 10, Aifs: 3, TXop: 0.
phy2 -> rt2x00mac_conf_tx: Info - Configured TX queue 3 - CWmin: 4, CWmax: 10, Aifs: 7, TXop: 0.
phy2 -> rt2x00mac_conf_tx: Info - Configured TX queue 1 - CWmin: 3, CWmax: 4, Aifs: 2, TXop: 94.
phy2 -> 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=]

设置你的无限网卡IP和子网掩码

>: ifconfig wlan0 192.168.199.234 netmask 255.255.255.0

你可以ping一下你的主机IP(192.168.199.1是博主的主机IP)

>: 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=51.114 ms
64 bytes from 192.168.199.1: seq=1 ttl=64 time=56.285 ms
64 bytes from 192.168.199.1: seq=2 ttl=64 time=93.388 ms
64 bytes from 192.168.199.1: seq=3 ttl=64 time=45.505 ms
64 bytes from 192.168.199.1: seq=4 ttl=64 time=45.558 ms
64 bytes from 192.168.199.1: seq=5 ttl=64 time=49.961 ms

当然ping自己的主机有点不好玩,那我们来试试外网的链接

在开发板目录/etc/创建一个resolv.conf的文件,因为在内核启动的时候内核会在resolv.conf文件中找dns

>: vi resolv.conf 
#search localdomain
nameserver 4.2.2.2 
nameserver 8.8.8.8 

添加网关后就来试试吧!

>: route add default gw 192.168.199.1
>: 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.659 ms
64 bytes from 119.75.218.70: seq=1 ttl=53 time=65.189 ms
64 bytes from 119.75.218.70: seq=2 ttl=53 time=65.130 ms
64 bytes from 119.75.218.70: seq=3 ttl=53 time=65.225 ms

这时你肯定有一点点的小激动了,其中一定还会有很多鬼畜的错误,不要着急,take easy!

这只是第一篇哦!



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值