操作系統:Ubuntu 12,04
交叉編譯器:arm-none-linux-gnueabi gcc version 4.3.2
WIFI 模組:TP-LINK TL-WN725N 2.0
驅動版本:8188eu_USB_Linux
因爲我們是要移植到ARM開發板上,所以首先我們需要更改驅動的Makefile;
CONFIG_PLATFORM_I386_PC = n
CONFIG_PLATFORM_ANDROID_X86 = n
CONFIG_PLATFORM_ARM_S3C2K4 = n
CONFIG_PLATFORM_ARM_PXA2XX = n
CONFIG_PLATFORM_ARM_S3C6K4 = y
將I386_PC從y改爲n, s3c6410 平臺從 n 改爲 y;
根據自身 linux 開發環境修改s3c6410處編譯環境
ifeq ($(CONFIG_PLATFORM_ARM_S3C6K4), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm
CROSS_COMPILE := arm-none-linux-gnueabi-
KVER := 3.0.8
KSRC ?= /usr/src/linux-3.0.8
endif
其中KVER是你開發板的linux版本,一般情況下跟我們電腦環境的Linux版本是不一樣的,那麼此時我們就需要把開發板上的內核在電腦上編譯一下(詳細編譯方法一般開發板光盤上面就有),編譯完成後KSRC就指向你所編譯的內核。
當這些全部完成之後,執行make命令編譯,就可以得到開發板上面的驅動文件8188eu.ko。
zhaokeke@ubuntu:~/8188eu_USB_linux/driver/rtl8188eu$ make
zhaokeke@ubuntu:~/8188eu_USB_linux/driver/rtl8188eu$ ls
8188eu.ko Makefile.bak hal
8188eu.mod.c Makefile_1 ifcfg-wlan0
8188eu.mod.o Module.symvers include
8188eu.o READEME make_drv
Kconfig autoconf_rtl8188e_usb_linux.h modules.order
Kconfig_rtl8188e_usb_linux autoconf_rtl8189e_sdio_linux.h os_dep
Kconfig_rtl8189e_sdio_linux clean runwpa
Makefile core wlan0dhcp
將驅動文件拷貝到開發板上,然後加載驅動
[root@FriendlyARM /sdcard]# insmod 8188eu.ko
[root@FriendlyARM /sdcard]# ifconfig
eth0
Link encap:Ethernet HWaddr 00:22:12:34:56:90
inet addr:192.168.1.20 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:57 errors:0 dropped:0 overruns:0 frame:0
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:6144 (6.0 KiB) TX bytes:1338 (1.3 KiB)
Interrupt:108 Base address:0x8000
lo
Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 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:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
此時仍然看不到USB無線網卡wlan0,如何確定我們的驅動安裝是否正確呢?此時我們可以在/proc/net 目錄下可以看到 wlan0[root@FriendlyARM /sdcard]# cd /proc/net/
[root@FriendlyARM net]# cat wireless
Inter-| sta-| Quality | Discarded packets | Missed | WE
face | tus | link level noise | nwid crypt frag retry misc | beacon | 22
wlan0: 0000 0. 0. 0. 0 0 0 0 0 0
如果能看到上面的wlan0,說明驅動是沒有什麼問題了,此時我們需要配置網卡;
首先我們需要綁定IP地址:
[root@FriendlyARM net]# ifconfig wlan0 192.168.1.22
爲能夠是 usb wifi 能夠正常訪問網絡,還需一些應用軟件:iwconfig iwlist 等
通過 ifconfig 命令可以看到比先前看到的多出 wlan0,可見目前已經將 wlan0 激活。但仍需要要一些設置才能訪問網絡。
[root@FriendlyARM net]# ifconfig wlan0 up
這一步很重要,我覺得好像就是打開無線網卡,如果沒有這一步的話,無論後面的再正確都是無法ping通的。
執行iwconfig命令可以看到如下結果,
[root@FriendlyARM net]# iwconfig
lo no wireless extensions.
ifb0 no wireless extensions.
ifb1 no wireless extensions.
eth0 no wireless extensions.
sit0 no wireless extensions.
ip6tnl0 no wireless extensions.
wlan0 unassociated Nickname:"<WIFI@REALTEK>"
Mode:Auto Frequency=2.412 GHz Access Point: Not-Associated
Sensitivity:0/0
Retry:off RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality:0 Signal level:0 Noise level:0
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
掃描附近的wifi:[root@FriendlyARM /sdcard]# iwlist wlan0 scan
連接wifi:
[root@FriendlyARM net]# iwconfig wlan0 essid "AirJ"
這是沒有密碼的,如果有密碼,需要在後面加上key ******;
連接過之後可以通過ping電腦來測試是否連接成功
[root@FriendlyARM net]# ping 172.21.15.1
PING 172.21.15.1 (172.21.15.1): 56 data bytes
64 bytes from 172.21.15.1: seq=0 ttl=64 time=2.700 ms
64 bytes from 172.21.15.1: seq=1 ttl=64 time=2.642 ms
64 bytes from 172.21.15.1: seq=2 ttl=64 time=4.012 ms
64 bytes from 172.21.15.1: seq=3 ttl=64 time=4.909 ms
64 bytes from 172.21.15.1: seq=4 ttl=64 time=193.940 ms
64 bytes from 172.21.15.1: seq=5 ttl=64 time=2.855 ms
到此,USB網卡驅動移植結束,我在這隻介紹了正確的,其實中間還出現了很多問題,尤其是後面沒有打開無線網卡,導致出現ADDRCONF(NETDEV_UP): wlan0: link is not ready錯誤。