1. 程式人生 > >移植wifi無無線網絡卡到mini2440上全過程

移植wifi無無線網絡卡到mini2440上全過程

  管理提醒: 本帖被 qq2440 執行取消置頂操作(2009-08-07)

    前

    段時間移植了U-boot和linux2.6.27.9到mini2440上,最近有點空,手頭有一個usb介面的zd1211b晶片的wifi無線網絡卡

    (PSP和NDSL玩家都知道的神卡),於是決定在核心中加入此無線網絡卡的驅動。我是在我移植的linux2.6.27.9核心上移植的。關於核心移植,

    請看我的這篇文章。

    新版的linux2.6.27.9已自帶zd1211b的驅動。此驅動在rat-linux-2.6.27.9/drivers/net/wireless/zd1211rw/中。

    要讓此驅動生效,得修改核心配置。

    選中

    networking support-->wireless-->Generic IEEE 802.11 Networking Stack (mac80211)

    選中

    device drivers-->netword device support-->wirelss lan-->ZyDAS ZD1211/ZD1211B USB-wireless support

    重新編譯核心。下載到板子中,重啟。加入無線網絡卡。出現

    usb 1-1: USB disconnect, address 2

    usb 1-1: new full speed USB device using s3c2410-ohci and address 3

    usb 1-1: configuration #1 chosen from 1 choice

    usb 1-1: reset full speed USB device using s3c2410-ohci and address 3

    zd1211rw 1-1:1.0: phy1

    表示無線網絡卡已被識別。使用cat /proc/net/wireless 命令,可以檢視到系統中多了個wlan0網絡卡。此時,網絡卡還沒工作。使用命

    令ifconfig wlan0 up則出現firmware:requesting zd1211,然後沒反應了,這是因為沒有firmware的原因,從這裡

    下載到zd1211 firmware 1.4後,根據firmware的說明,將其中的zd1211_*檔案拷貝到根檔案系統/lib/firmware/zd1211目錄中。這

    裡再執行ifconfig wlan0 up命令,則出現

    firmware: requesting zd1211/zd1211b_ub

    firmware: requesting zd1211/zd1211b_uphr

    zd1211rw 1-1:1.0: firmware version 4725

    zd1211rw 1-1:1.0: zd1211b chip 0ace:1215 v4810 full 00-02-72 AL2230_RF pa0 g--N

    網絡卡硬體開始正常工作了。其中,0ace:1215是網絡卡的ID,可以用主機linux系統命令lsusb檢視到。

    但此時,網絡卡還沒被正確配置,還不能正常使用。

    要正常使用無線網絡卡,還要正確配置。linux下的配置工具是wireless-tools,可以在這裡下載到它的最新版。

    下載後,將原始碼解壓。再修改其中的makefile檔案,將其中的

    CC = gcc

    AR = ar

    RANLIB = ranlib

    改為

    CC = arm-linux-gcc

    AR = arm-linux-ar

    RANLIB = arm-linux-ranlib

    再執行make,編譯完成後,將生成的iwconfig,iwlist檔案拷貝到rat-linux for mini2440的根檔案系統中的/bin目錄下,將

    libiw.so.29拷貝到/lib目錄下。

    啟動mini2440開發板,進入linux命令列後,執行ifconfig wlan0 up,啟動無線網絡卡。再執行iwlist scanning,此命令可以搜尋到

    可用的無線網路接入點。我的無線接入點是一臺無線路由器,ESSID是"rat-linux",執行此命令後就會下列輸出

    wlan0 Scan completed :

     Cell 01 - Address: 00:19:C6:53:B9:CE

     ESSID:"rat-linux"

     Mode:Master

     Channel:2

     Frequency:2.417 GHz (Channel 2)

     Quality=11/100 Signal level:66/100

     Encryption key:on

     Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s

     9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s

     48 Mb/s; 54 Mb/s

     Extra:tsf=000000056306469f

     Extra: Last beacon: 1065ms ago

    其中可以看到我的無線接入點是需要密碼的。假設密碼是123456。使用如下的命令設定密碼。

     iwconfig wlan0 key 123456

    為了能接無線網,還要使用下面的命令設定ESSID

     iwconfig wlan0 essid "rat-linux"

    其它的引數可以都採用預設的,不用再設了。可以使用下面的命令加入無線網了。

     iwconfig wlan0 ap auto

    再執行iwconfig wlan0,就可以看到下面的資訊。

    wlan0 IEEE 802.11bg ESSID:"rat-linux"

     Mode:Managed Frequency:2.417 GHz Access Point: 00:19:C6:53:B9:CE

     Bit Rate=1 Mb/s Tx-Power=27 dBm

     Retry min limit:7 RTS thr:off Fragment thr=2352 B

     Encryption key:1234-56 Security mode:open

     Power Management:off

     Link Quality=100/100 Signal level:66/100

     Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0

     Tx excessive retries:0 Invalid misc:0 Missed beacon:0

    這就表示已接入無線網。

    最後,為無線網絡卡指定IP地址。命令如下

     ifconfig wlan0 192.168.1.30 netmask 255.255.255.0

    我的開發主機和無線網絡卡處於同一網段,因此是可以相互PING通的。因此可以用從開發主機上PING無線網絡卡的IP地址的方法來確網

    卡是否工作正常。從主機上執行ping 192.168.1.30,正常PING通。

    至此,無線網絡卡安裝全部完成。

    最後,為了方便配置,可以將上述的配置命令寫入linux指令碼檔案,以後,只要執行此指令碼,即可完成上述步驟的配置。指令碼檔案內

    容如下。

    #! /bin/sh

    ifconfig wlan0 up

    iwconfig wlan0 key 123456

    iwconfig wlan0 essid "rat-linux"

    iwconfig wlan0 ap auto

    ifconfig wlan0 192.168.1.30 netmask 255.255.255.0