zoukankan      html  css  js  c++  java
  • 基于TQ2440开发板的WiFi模块的使用经验总结

    一、软、硬件资源准备:

    内核版本:linux-2.6.30.4

    交叉编译器版本:4.3.3

    wpa_supplicant工具:wpa_supplicant-0.7.3.tar ; openssl-0.9.8e.tar

     

    开发板:TQ2440

    无线网卡芯片:RTL8192CU,(淘宝上35元购买了一个USB接口的无线网卡:http://item.taobao.com/item.htm?spm=a1z09.5.0.0.H6U4Yy&id=25936180156&_u=kk57vmr1977

    无线网卡驱动:RTL8192CU_linux_v3.0.2164.20110715(购买无线网卡时带有一张光盘,这里使用的是此光盘配套的驱动,也可从官网下载;下载地址:http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&PNid=48&PFid=48&Level=5&Conn=4&DownTypeID=3&GetDown=false&Downloads=true#RTL8192CU

     

     

    二、无线网卡驱动移植:

    1、驱动在压缩包中的driver目录(也是一个压缩包),将其解压到/opt/EmbedSky/linux-2.6.30.4/drivers/net/wireless下

    2、将无线网卡驱动目录下Kconfig中的信息拷贝到上一级目录的Kconfig末尾

    3、修改/opt/EmbedSky/linux-2.6.30.4/drivers/net/wireless目录下的Makefile:

    在最后加上 obj-$(CONFIG_RTL8192CU) += rtl8188C_8192C/            (这个是驱动的相对路径,根据自己的实际情况修改rtl8188C_8192C为你自己的目录)

    4、 配置内核

                     跳转到内核的目录 cd /opt/EmbedSky/linux-2.6.30.4

                     执行 make menuconfig

                     进入Device Drivers  --->

                                   [*] Network device support  --->

                                                  Wireless LAN  --->

                                                             将这一项打上信号:<*> Realtek 8192C USB WiFi

                      保存

    5、make zImage

     

     

    三、wpa_supplicant工具移植:

    1、解压wpa_supplicant-0.7.3.tar 和 openssl-0.9.8e.tar

    2、编译openssl库 

    # cp wpa_supplicant-0.7.3/patches/openssl-0.9.8e-tls-extensions.patch openssl-0.9.8e/             (将wpa_supplicant中的补丁拷贝到openssl中)

    #cd openssl-0.9.8e

    #mkdir /usr/local/ssl

    #vim Makefile

    CC= arm-linux-gcc

    AR= arm-linux-ar $(ARFLAGS) r

    RANLIB= arm-linux-ranlib

    INSTALLTOP=/usr/local/ssl

    OPENSSLDIR=/usr/local/ssl

    #make

    #make install

    这样就在/usr/local/ssl目录下安装了ssl库

    #ls /usr/local/ssl

    #bin  certs  include  lib  man  misc  openssl.cnf  private

    后面编译wpa_supplicant要依赖openssl中的lib和include

    3、编译wpa_supplicant

    进入wpa_supplicant-0.7.3.tar.gz解压生成的wpa_supplicant-0.7.3/wpa_supplicant目录中:

    #cp defconfig        .config

    #vim .config

    CC=arm-linux-gcc  -L/usr/local/ssl/lib/

    #CC=/opt/brcm/hndtools-mipsel-uclibc/bin/mipsel-uclibc-gcc

    CFLAGS += -I/usr/local/ssl/include

    #CPPFLAGS += -I../src/include -I../../src/router/openssl/include

    LIBS += -L/usr/local/ssl/lib

    #make

    经过编译后的wpa_supplicant源程序可以看到两个主要的可执行工具:wpa_supplicant和wpa_cli。wpa_supplicant是核心程序,它和wpa_cli的关系就是服务和客户端的关系:后台运行wpa_supplicant,使用wpa_cli来搜索、设置、和连接网络。

    4、将可执行工具wpa_supplicant拷贝到制作的根文件系统/bin目录下。

     

    四、开发板连接无线路由器:

    1、启用USB WiFi网卡:

    ifconfig wlan0 up

    image

    2、手动设置USB WiFi的IP:

    ifconfig wlan0 192.168.0.111 netmask 255.255.255.0

    3、在开发板的/etc目录中为连接创建配置脚本wpa_supplicant.conf,参考内容如下:

    ctrl_interface=/var/run/wpa_supplicant                               (手动在var目录下创建了目录run,但此目录为空)
         network={
              ssid="GygcYjs"
              psk="xxxxxxxx"
        }

    这里是针对wpa-psk加密方式的配置文件,且只对两个关键的选项ssid(要连接的无线路由器的ssid)、psk(要连接的无线路由器的连接密码)进行了配置。

    另外一种是wep加密方式,其配置文件有所不同(http://blog.csdn.net/laotie1015/article/details/8529081给出了两种配置文件)。如何确定自己需要哪种类型的配置文件呢?可以参考如下图所示方式查看(将鼠标放在要连接的无线网络名称上就会有个弹出框):

    image

    4、使用wpa_supplicant启动连接:

    wpa_supplicant –Dwext –iwlan0 -c/etc/wpa_supplicant.conf -B

    image

    可以看出上面的输出结果中有一条“ioctl[SIOCSIWAP]: Operation not permitted”的错误信息,目前还没有找到是什么原因造成的。但是,现在已经成功连接到了我们实验室的无线路由器,从第5步可以看出。

    注:如果在运行此命令时出现:socket(PF_PACKET): Address family not supported by protocol

    原因:内核不支持RAW socket

    解决办法:编译内核时把CONFIG_PACKET选项打开

    具体操作:进入内核顶层目录,使用vim编辑器编辑.config文件,添加如下行:

    CONFIG_PACKET = y

    5、测试:

    ping 192.168.0.1

    image

    而且ping我自己的笔记本在本网段内的IP也是成功的:

    image

     

     

    参考:

    http://blog.csdn.net/ti_tantbx/article/details/7037741

    http://blog.csdn.net/laotie1015/article/details/8528899

    http://blog.csdn.net/laotie1015/article/details/8529081

    http://blog.csdn.net/duloveding/article/details/7483799

  • 相关阅读:
    ecshop ajax请求验证captcha(验证码)
    ecshop ajax内置函数Ajax.call
    Execl中函数使用总结
    php应用篇 PHPMailer使用
    Jquery中的选择器
    你的水桶有多满
    在纸上写todo list还是用APP?
    absolute居中
    搬家租房总结
    编译器的作用:将汇编语言翻译成机器语言
  • 原文地址:https://www.cnblogs.com/nufangrensheng/p/3738910.html
Copyright © 2011-2022 走看看