1. 程式人生 > >移植Realtek USB無線網絡卡到 mini2440

移植Realtek USB無線網絡卡到 mini2440

開發板:mini244
核心版本:2.6.32.2
交叉編譯器:arm-linux-gcc-4.4.3
無線網絡卡:TL-wn721N
無線網絡卡晶片:rtl8192cu
TL-wn721N 驅動原始碼包:RTL8192CU
RTL8192xC_USB_linux_v3.4.4_4749.20121105 .zip 


步奏:準備好usb無線網絡卡,確定網絡卡晶片所用的驅動原始碼包(這裡是RTL8192xC_USB_linux_v3.4.4_4749.20121105 .zip)


1:手工定製核心,配置usb無線網絡卡驅動 ,重新編譯核心(這裡生成的是 zImage)。
2:定製驅動原始碼、編譯生成usb網絡卡驅動模組(生成的檔案:8192cu.ko )
3:核心(zImage)燒寫進開發板,並將相應的usb網絡卡驅動模組(8192cu.ko)裝載到開發板(modprobe 8192cu)
4:至此,無線網絡卡已能用,接著就是搜尋wifi熱點,連入及配置IP的過程…… 


具體如下:
一、編譯核心
注意提供的usb網絡卡晶片 原始碼包廠商名稱
 在核心目錄下:
 執行 make menuconfig
                 進入Device Drivers  --->
                               [*] Network device support  ---> 
                                              Wireless LAN  ---> 
                                                         將這一項打上訊號:<*> Realtek 8192C USB WiFi 


二、配置usb無線網絡卡驅動
1:在移植無線網絡卡之前首先得確保你的核心能夠識別你的usb網絡卡,我的網絡卡插入後顯示資訊如下
[
[email protected]
/]# usb 1-1: USB disconnect, address 2
usb 1-1: new full speed USB device using s3c2410-ohci and address 3
usb 1-1: New USB device found, idVendor=0bda, idProduct=8176
usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-1: Product: 802.11n WLAN Adapter
usb 1-1: Manufacturer: Realtek
usb 1-1: SerialNumber: 00e04c000001
usb 1-1: configuration #1 chosen from 1 choice
此外你還可以通過lsusb命令在你的pc linux系統上讀出你的USB網絡卡型號資訊,然後百度一下就可以查到的無線網絡卡型號了,我的網絡卡資訊如下
Bus 001 Device 002: ID 0bda:8176 Realtek Semiconductor Corp. 
我的無線網絡卡型號是TL-wn721N開始百度了下說是AR9271後來移植了好久都不行就懷疑網絡卡型號錯了

2:到Realtek官網下載原始碼包
http://www.realtek.com/downloads/downloadsView.aspx?Langid=3&PNid=48&PFid=48&Level=5&Conn=4&DownTypeID=3&GetDown=false&Downloads=true#RTL8192CU
RTL8192xC_USB_linux_v3.4.4_4749.20121105 .zip
解壓到進入到
/RTL8188C_8192C_USB_linux_v3.4.4_4749.20121105/driver/rtl8188C_8192C_usb_linux_v3.4.4_4749.20121105目錄下

修改 Makefile配置檔案,找到如下程式碼 改成下面的效果
CONFIG_PLATFORM_I386_PC = n
CONFIG_PLATFORM_ARM_S3C2K4 = y              //修改晶片架構
CONFIG_POWER_SAVING                     =       n     //去掉節能模式

ifeq ($(CONFIG_PLATFORM_ARM_S3C2K4), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm
CROSS_COMPILE := arm-linux-
KVER  := 2.6.32.2
KSRC := /linux-$(KVER)
endif
修改依賴核心型別   我的核心路徑/home/tools/linux-2.6.32.2,注意你的核心檔案必須的編譯過了的否則會提示找不到config配置檔案

最後一步就是make 
生成:
[
[email protected]
rtl8188C_8192C_usb_linux_v3.4.4_4749.20121105]# ls
8192cu.ko     8192cu.o  hal          Kconfig        Module.symvers
8192cu.mod.c  clean     ifcfg-wlan0  Makefile       os_dep
8192cu.mod.o  core      include      modules.order  wlan0dhcp
其中的8192cu.ko就為我們編譯得到的驅動

三、將8192cu.ko檔案 載入到開發板應用。
在開發板中 進入到/lib/modules/2.6.32.2-FriendlyARM
執行:modpromod 8192cu
(如果不行:先 depmod後 modpromod 8192cu)就行了

四、配置usb無線網
啟動無線網絡卡:ifconfig wlan0 up
檢視可用搞得無線網路接入點:iwlist scanning
接入無線網:start-wifi wpa2 wifiname  wifikey
設定IP:ifconfig wlan0 172.16.16.16 netmask xxx.xxx.xxx.xxx up
如:
ifconfig eth0 192.168.2.110 netmask 255.255.255.0 up

route add default gw 192.168.2.1 dev wlan0

到此,已經基本結束


五、為了更好的管理wifi,可以選擇編譯wireless_tools
進入/home/RTL8188C_8192C_USB_linux_v3.4.4_4749.20121105/wireless_tools/wireless_tools.30.rtl,修改makefile即可

## Compiler to use (modify this for cross compile).
CC = arm-linux-gcc
## Other tools you need to modify for cross compile (static lib only).
AR = arm-linux-ar
RANLIB = arm-linux-ranlib

再執行make,編譯完成後,將生成的iwconfig,iwlist檔案拷貝到開發板的根檔案系統中的/bin目錄下,將
libiw.so.29拷貝到/lib目錄下。