fl2440实现路由器sta功能

S3C2440采用了由 ARM(Advanced RISC Machines) 公司研制ARM920T内核

rt3070中文名称为雷凌3070,是台湾雷凌科技有限公司生产的一款专用于usb无线网卡的处理芯片。 它完全符合符合IEEE 802.11n草案4.0和IEEE 802.11 b / g标准。

路由器sta功能的实现依托fl2440这块开发板以及linux-3.0内核。

makemenuconfig 内核配置

[*] Networking support  --->  
-*-   Wireless  --->  
     <*>   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  --->
    Generic Driver Options  --->
        -*- Userspace firmware loading support    
        [*]   Include in-kernel firmware blobs in kernel binary 
    [*] Network device support  --->  
        [*]   Wireless LAN  --->  
            <*>   Ralink driver support  --->
                <*>   Ralink rt27xx/rt28xx/rt30xx (USB) support
                [*]     rt2800usb - Include support for rt33xx devices  
                [*]   Ralink debug output

登录开发板,此时插上rt3070 usb网卡,输入ifconfig -a 可以看到如下图所示,说明有关WiFi的内核驱动已经添加成功.

一般输入ifconfig wlan0 up会出现问题,如下图:

这是因为缺少固件的原因,这里是缺少rt2870.bin 这个固件,所谓的固件是厂家直接提供的可执行文件,这样做既可以减轻开发者的开发难度,直接调用固件就可以,同时也可以保护厂家的一些核心知识产权。在这个项目中,我们把rt2870.bin固件下载到开发板的lib/fireware路径下。也就是rootfs跟文件系统的lib/fireware路径下,下载地址

https://coding.net/u/sfantree/p/self_use_OSS/git/raw/master/source/rt2870.bin

至此这个项目有关开发板的“硬件”基础就准备好了,接下来就是相关软件工具的移植。

软件移植

实现rt3070的sta功能需要wpa_supplicant这个第三方软件的支持,要安装这个软件需要先安装libnl和openssl这两个库。

openssl移植

下载源码

[xn@localhost ~]$wget https://coding.net/u/sfantree/p/self_use_OSS/git/raw/master/source/openssl-1.0.0s.tar.gz
[xn@localhost ~]$ tar -zxvf openssl-1.0.0s.tar.gz

[xn@localhost ~]$cd openssl-1.0.0s

[xn@localhost ~]$./config no-asm shared –prefix=’pwd `/install

Makefile修改

CROSS=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-

AR= (CROSS)ar $(ARFLAGS) r

RANLIB= $(CROSS)ranlib

NM= $(CROSS)nm

编译安装

[xn@localhost ~]$make

[xn@localhost ~]$make install

libnl移植

下载源码

[xn@localhost ~]wget http://www.infradead.org/~tgr/libnl/files/libnl-3.2.25.tar.gz
[xn@localhost ~] tar -zxvf libnl-3.2.25.tar.gz
[xn@localhost ~]./configure –prefix=‘pwd’/../install

环境变量设置

[xn@localhost ~]export AS=/opt/xtools/arm920t/bin/arm-linux-as
[xn@localhost ~]export AR=/opt/xtools/arm920t/bin/arm-linux-ar
[xn@localhost ~]export LD=/opt/xtools/arm920t/bin/arm-linux-ld
[xn@localhost ~]export NM=/opt/xtools/arm920t/bin/arm-linux-nm
[xn@localhost ~]export RANLIB=/opt/xtools/arm920t/bin/arm-linux-ranlib
[xn@localhost ~]export OBJDUMP=/opt/xtools/arm920t/bin/arm-linux-objdump
[xn@localhost ~]export CC=/opt/xtools/arm920t/bin/arm-linux-gcc
[xn@localhost ~]export STRIP=/opt/xtools/arm920t/bin/arm-linux-strip

编译安装

[xn@localhost ~] make
[xn@localhost ~] make install

wpa_supplicant安装

源码下载

[xn@localhost ~]wget https://w1.fi/releases/wpa_supplicant-2.5.tar.gz
[xn@localhost ~]tar wpa_supplicant-2.5.tar.gz
[xn@localhost ~]cp defconfig .config

环境变量

[xn@localhost ~]export PKG_CONFIG_PATH=../../../libnl/install/lib/pkgconfig/
[xn@localhost ~]export AS=/opt/xtools/arm920t/bin/arm-linux-as
[xn@localhost ~]export AR=/opt/xtools/arm920t/bin/arm-linux-ar
[xn@localhost ~]export LD=/opt/xtools/arm920t/bin/arm-linux-ld
[xn@localhost ~]export NM=/opt/xtools/arm920t/bin/arm-linux-nm
[xn@localhost ~]export RANLIB=/opt/xtools/arm920t/bin/arm-linux-ranlib
[xn@localhost ~]export OBJDUMP=/opt/xtools/arm920t/bin/arm-linux-objdump
[xn@localhost ~]export CC=/opt/xtools/arm920t/bin/arm-linux-gcc
[xn@localhost ~]export STRIP=/opt/xtools/arm920t/bin/arm-linux-strip

修改.config

软件安装时默认会调用系统的库,我们刚才安装的openssl和libnl提供的库需要我们指定路径。此时需要在.config文件中指定。
在.config文件中,作以下修改:

^.openssl/include.|CFLAG+=-I&{OPPENSSL}/install/include (此句表示以openssl/include.打头的语句换成CFLAGS += -I${OPENSSL_PATH}/install/include用来指定编译时所需的头文件库,其他语句同理)
^.openssl/lib.|LIBS += -L${OPENSSL_PATH}/install/lib
^.libnl include files.|CFLAGS += -I${LIBNL_PATH}/install/include/libnl3
^.libnl library files.|LIBS += -L${LIBNL_PATH}/install/lib
^.CONFIG_LIBNL32=.|CONFIG_LIBNL32=y (不改会出现usr/bin/ld: cannot find -lnl )

编译安装

[xn@localhost ~]make
[xn@localhost ~]make install

编译安装后会生成wpa_suppliant wpa_cli wpa_passphrase三个可执行文件,我们只需要用到wpa_supplicant.用file命令查看,确认其可以在ARM开发板上执行。将其拷到开发板的bin路径下。

[xn@localhost wpa_supplicant]$ file wpa_supplicant
wpa_supplicant: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped

开发板操作实现功能

在etc/下创建wpa_supplicant.conf

[xn@localhost ~]vim wpa_supplicant.conf
ctrl_interface=/var/run/
network={
ssid=”LingYun_XiaoMi”     #(路由器名字)
key_mgmt=WPA-PSK
proto=WPA2             #(路由器相关的认证加密协议)
pairwise=TKIP CCMP
group=TKIP CCMP
psk=”lingyun_emb”       #(路由器密码)
}

启用wpa_supplicant:

wpa_supplicant -B -d -Dwext -i wlan0 -c /etc/wpa_supplicant.conf

IP设置

此时给无线网卡分配一个IP地址,注意和路由器的私有IP地址在一个网段内,实验室的小米路由器IP为192.168.0.1

ifconfig wlan0 192.168.0.11
此时可以ping通小米路由器,要想访问Internet,还需要在etc/下加resolv.conf文件,并设置网关。esolv.conf内容如下:
nameserver 8.8.8.8 #或者其他的dns
网关设置:
route add default gw 192.168.0.1

现在的开发板能够ping的通外网

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值