OK6410+RTL8192 USB WiFi移植
手上有一塊OK6410的板子,有一個水星的usb WiFi mw300,查了一下是RTL8192的驅動,OK6410接線到路由器掛載NFS有點麻煩,想把這個驅動移植的OK6410上,通過WiFi實現NFS掛載。
1、驅動移植
下載完成後再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放到開發板上
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_suplicant和wpa_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 (xxx為essid 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_Installation和Wireless_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