OK6410+RTL8192 USB WiFi移植

手上有一块OK6410的板子,有一个水星的usb WiFi mw300,查了一下是RTL8192的驱动,OK6410接线到路由器挂载NFS有点麻烦,想把这个驱动移植的OK6410上,通过WiFi实现NFS挂载。

1、驱动移植

从网上查阅了一些资料,在瑞昱的官网上下载RTL8192的驱动:http://www.realtek.com.tw/search/default.aspx?keyword=8192

 

 

下载完成后再linux主机上解压

 

驱动在driver文件夹下

修改makefile

CONFIG_PLATFORM_I386_PC = n 默认是支持386平台,改为s3c6410平台

CONFIG_PLATFORM_ARM_S3C6K4 = y

ifeq ($(CONFIG_PLATFORM_ARM_S3C6K4), y)

EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN

ARCH := arm

CROSS_COMPILE := arm-linux-

KVER  := 3.0.1

KSRC ?= /home/dcj/test/linux-3.0.1

Endif

根据实际的平台及内核做修改。

执行Make

生产8192cu.ko 文件。

OK6410提供的linux内核本身是没有把8192驱动编译进去的,需要重新编译。

在内核下make menuconfig

 

 

然后make zImage

其实 linux3.0.1版本本身是支持RTL8192版本驱动的,但我编译出来的内核确不能识别无线网卡,这个目前还搞不清楚是什么原因。

把内核烧到开发板,8192cu.ko放到开发板上insmod 8192cu.ko Lsmod 可以发现无线网卡已经识别到,ifconfig wlan up 后,ifconfig可以看到已经存在wlan0这个网卡了。

 

2、移植无线网卡配置应用

但如何通过这个网卡来连接路由器,使开发板可以通过无线网卡上网

首先需要移植wireless_tools 和wpa_supplicant_hostapd(这两个的用处请百度)

解压RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911文件下的Wirless_tools ,修改makefile

## Compiler to use (modify this for cross compile).

#CC = gcc

CC = arm-linux-gcc

## Other tools you need to modify for cross compile (static lib only).

AR = ar

RANLIB = ranlib

然后make,在usr\local\sbin下生产 ifrename iwconfig iwenent iwgetid iwlist iwpriv iwspy这几个文件

 

把这几个文件拷贝到开发板的根文件/sbin

网络上有些资料说可以通过iwconfig wlan0 essid “xxx” key”xxx”连接路由器,我试过是不行的。还有说通过iwpriv ra0 set NetworkType=Infra 

iwpriv ra0 set AuthMode=WPA2PSK

iwpriv ra0 set EncrypType=TKIP 

iwpriv ra0 set WPAPSK=*******

iwpriv ra0 set SSID=jxj_rd 

来实现网络连接,

 

Set命令不可用,不知道是不是wireless_tools版本的问题。

移植编译wpa_supplicant_hostapd

这个移植困扰了我很久,在改makefile的时候

 

我改成

 

导致编译出来的可执行文件还是PC上的编译工具,在板上无法执行,使用的编译工具还是GCC。

又改了defconfig始终是编译出错,编译了opensll也没办法解决,后面通过仔细阅读document文件夹下的Wireless_tools_porting_guide.pdf文件发现makefile是要添加一行CC=arm-linux-gcc

 

而不是修改CC=gcc

Make后把wpa_suplicantwpa_cli wpa_passphrase拷贝到开发板上。

etc文件夹下新建wpa_supplicant.conf

文件内容如下:

# WPA-PSK/TKIP 

ctrl_interface=/var/run/wpa_supplicant 

network={ 

 ssid="xxx" 

scan_ssid=1 

 key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE  

pairwise=TKIP CCMP 

 group=CCMP TKIP WEP104 WEP40  

psk="xxx" 

Cd /etc

执行#wpa_passphrase xxx xxxx >> wpa_supplicant.conf (xxxessid xxxx为登陆密码)生成暗文密码,

此时将在wpa_supplicant.conf文件中生成:
network={
    ssid="xxx"
      #psk="xxxx"
      psk=4b2bc7cbb3710e9ea43f09e8d57e8bdb3b2a2127af44960d73216c3612f6baba
}

然后修改wpa_supplicant.conf配置文件,把 psk="1234567890" 这一行明文密码改成生成的暗文密码,即:
        psk=4b2bc7cbb3710e9ea43f09e8d57e8bdb3b2a2127af44960d73216c3612f6baba
其它生成的多余信息删除,

ctrl_interface=/var/run/wpa_supplicant 

network={ 

 ssid="xxx" 

scan_ssid=1 

 key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE  

pairwise=TKIP CCMP 

 group=CCMP TKIP WEP104 WEP40  

psk=4b2bc7cbb3710e9ea43f09e8d57e8bdb3b2a2127af44960d73216c3612f6bab 

执行# wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf &就使无线网卡连接上网络。

Ping路由器可以ping通,设置网关,DHCP就可以通过开发板上网。

其实这些软件的编译方法在documnet 文件夹下的Quick_Start_Guide_for_Driver_Compilation_and_InstallationWireless_tools_porting_guide.pdf文件下都有介绍。

 


附上可以shell命令,执行./NFS.sh使可以自动加载8192cu驱动,配置IP,挂载NFS目录。

NFS.sh文件内容如下:

#!/bin/sh

insmod /test/8192cu.ko
ifconfig wlan0 up
ifconfig eth0 down
wpa_supplicant -Dwext -iwlan0 -c /etc/wpa_supplicant.conf -dd &
ifconfig wlan0 192.168.1.115
mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 192.168.1.106:/nfs/root /mnt 


猜你喜欢

转载自blog.csdn.net/dengcanjun6/article/details/45016157