基於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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM