RT3070 STA模式——开发板实现上网功能

来源:互联网 发布:mac桌面上快捷图标删除 编辑:程序博客网 时间:2024/05/16 19:50

北方有佳人,遗世而独立。
北方有佳人,绝世而独立。
一顾倾人城,再顾倾人国。
宁不知倾城与倾国?
佳人难再得!


交叉编译器环境:arm-linux-gcc-4.5.4 (可通过命令/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc -v查询)
开发板平台: fl2440


rt3070中文名称为雷凌3070,是台湾雷凌(Ralink)科技有限公司生产的一款专用于usb无线网卡的处理芯片。是一种低功耗高度集成的MAC / BBP和2.4G RF单一芯片,支持300Mbps的吞吐量。
RT3070无线网卡有两种工作模式STA模式和softAP模式,分别由STA驱动和softAP驱动来实现,STA驱动支持无线网卡工作在STA模式下,可以连接到网络实现上网功能。而SoftAP的驱动支持无线网卡工作在softAP模式下,可以作为一个软的接入点(相当于一个路由器),实现无线路由器功能。

前面的学习过程中,在FL2440上面已经使能了DM9000的有线网卡(eth0)和USB驱动,可以使用DM9000网卡接入网线实现上网功能,现在对于FL2440基于RT3070添加STA驱动使其可以使用雷凌公司的RT3070芯片实现无线上网功能。


修改内核配置:

[*] 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

楼主只作简要分析,具体移植过程可参照博客:
http://blog.csdn.net/Edroid1530/article/details/72230196


总结(简略步骤):

内核使能无线网卡后,要连路由器上网还需要移植无线上网工具:openssl和wpa_supplicant,openssl是一个库,存放wpa_supplicant工具所依赖的库文件。

一、使能网卡:

添加内核支持,使能成功后出现wlan0.

> ifconfig wlan0 up

wlan0 Link encap:Ethernet HWaddr 00:A1:B0:40:6E:F7
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)

第一行:连接类型:Ethernet(以太网)HWaddr(硬件mac地址)
第三行:MULTICAST(支持组播)MTU:1500(最大传输单元):1500字节
第四、五行:接收、发送数据包情况统计
第七行:接收、发送数据字节数统计信息


二、第三方应用移植:

1、移植openssl库:

和之前移植madplay播放器类似,首先要查看下载下来的包是否有Makefile,如果没有的话,必有一个config或者configure。如果存在Makefile的话,只需要将Makefile中有关编译的内容改成交叉编译就可以。如果不存在Makefile一般要做如下操作生成Makefile:

/config no-asm shared –prefix=pwd/_install
no-asm是在交叉编译过程中不使用汇编代码代码加速编译过程.原因是它的汇编代码是对arm格式不支持的。
shared生成动态连接库。
prefix=路径 就是你的安装目录。安装完成后在这个目录下会有四个文件夹:bin lib include ssl。这四个目录非常重要,openssl编程就需要这些目录的配合。


2、移植wpa_supplicant

(1)备份:cp keconfig .config

defconfig—–>.config (第二步)
kconfig——->.config———->makefile(第三步)

(2)修改.config:
这里写图片描述

配置文件中:

CC 指定了交叉编译器的路径 以及用-L指定所依赖的库所在的目录,也就是我们在上面移植的openssl库的lib路径。

CFLAGS: 指定头文件(.h文件)的路径,如:CFLAGS=-I/usr/include -I/path/include。

LDFLAGS:gcc 等编译器会用到的一些优化参数,也可以在里面指定库文件的位置。用法:LDFLAGS=-L/usr/lib -L/path/to/your/lib。每安装一个包都几乎一定的会在安装目录里建立一个lib目录。如果明明安装了某个包,而安装另一个包时,它愣是说找不到,可以抒那个包的lib路径加入的LDFALGS中试一下。

LIBS:告诉链接器要链接哪些库文件,如LIBS = -lpthread -liconv

移植完成后生成三个工具:

  • wpa_cli 默认的启动命令
  • wpa_passphrase 生成配置文件
  • wpa_supplicant 连接wifi命令

通过命令可查看某个工具所依赖的库:

>arm-linux-readelf -d ./wpa_supplicant

wpa_passphrase使用实例:

/*Router_LingYun_Master是我将要连接的路由器的SSID*//*ling_emb是SSID为Router_Lingyun的路由器认证密码*/wpa_passphrase   Router_LingYun_Master  lingyun_emb>> /etc/wpa_supplicant.conf

生成了一个配置文件wpa_supplicant.conf,文件中存放着我们需要连接的路由器的SSID以及密码。

wpa_supplicant使用实例:(连接wifi)

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

-B 后台执行
-d 增加调试信息输出
-Dwext 驱动名称
-i 网口名称
-c 附加配置文件,即根据配置文件执行操作


3、Wireless tools移植

wireless_tools.29.tar.gz
这个工具提供了很多工具,最好移植一下。
http://download.csdn.net/detail/u010944778/8916883
修改makefile:

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

修改完后编译生成如下工具:

  • iwevent:通过linux下面的netlink机制将内核的信息发送给用户态程序,这里的用户态程序就是iwevent。通过该命令可获得无线网卡连接上ap时的打印信息
  • iwpriv:操作Wireless Extensions 特定驱动。通过iwpriv,我们可以得到AP的一些参数设置,也可以设置自己的WIFI参数。

  • iwgetid:

  • ifrename:基于各种静态标准命名接口
  • iwspy :获取每个节点链接的质量(只能查阅与之相连的节点)
  • iwconfig:设置基本无线参数
  • iwlist :扫描、列出频率,比特率,密钥等

iwconfig使用实例:

#iwconfig    wlan0  key   xxxx   //输入验证密码  #iwconfig    wlan0  key  open    //密码验证功能打开  #iwconfig    wlan0  essid  “edan” //设置ESSID  #iwconfig    wlan0  ap  auto    //加入无线网络  #ifconfig    wlan0  192.168.1.23  //设置wifi IP地址 

参考:http://www.cnblogs.com/tkid/p/3998721.html


四、手动设置DHCP

#配置IP地址ifconfig wlan0 192.168.0.168      #配置默认网关route add default gw 192.168.0.1  //必须与你电脑在同一个网段#配置DNSecho "nameserver 114.114.114.114" > /etc/resolv.conf

五、自动获取IP:

busybox已经集成了DHCP的客户端和服务端,源码编译过后的examples/udhcp/simple.script作为DHCP客户端的示例配置文件如下,将其重命名为/usr/share/udhcpc/default.script,特别注意必须给default.script 可执行权限**。直接拷贝到开发板udhcpc指定目录下就可以。

然后运行如下命令可自动获取:

udhcpc -i wlan0

然后就可以上网了,可以ping百度试试。


六、通过脚本实现开机自启:

将脚本命名为S**

#!bin/shifconfig eth0 192.168.1.111 up    ifconfig wlan0 upwpa_supplicant -B -d -Dwext -i wlan0 -c /etc/wpa_supplicant.conf          //连接wifi    ifconfig wlan0 192.168.0.123      route add default gw 192.168.0.1echo "nameserver 114.114.114.114" > /etc/resolv.conf

因为脚本默认自启目录是/app/etc/init.d/以及/etc/init.d/,所以我们可以把该脚本命名为以S打头,在app目录下创建路径etc/init.d或者直接把脚本放到/etc/init.d目录,都可以实现脚本自启动。

楼主只作简要分析,具体移植过程可参照博客:
http://blog.csdn.net/Edroid1530/article/details/72230196

原创粉丝点击