?? tl-wn321g無線網卡for2.6.14移植詳細步驟.rtf
字號:
1.進入無線網卡驅動目錄 #cp Makefile.6 Makefile2.修改Makefile:NDDIR=/WirelessCard/busybox-1.2.1/_install/etc/sysconfig/networkMOD_CONF=/WirelessCard/busybox-1.2.1/_install/etc/modprobe.d/module-renames## NDDIR/ifcfg-rausb0ND_CONF=/WirelessCard/busybox-1.2.1/_install/etc/sysconfig/network-scripts/ifcfg-rausb0還需修改其它的3.#make all3.#cp rt73.bin busybox的主目錄/_install/etc/Wireless/RT73STA/ 4.#dos2unix rt73sta.dat #cp rt73sta.dat busybox的主目錄/_install/etc/Wireless/RT73STA/rt73sta.dat5.6.進入開發板系統 # insmod rt73.ko以上問題解決后,無線網卡工作正常。但還需移植無線擴充以便使用無線配置命令。從http://www.hpl.hp.co.uk/personal/Jean_Tourrilhes/Linux/Tools.html處下載無線擴充包修改無線擴充包的Makefile(可參照wireless tools 26),然后編譯,出現下列提示:/include -o iwconfig iwconfig.o libiw.a/WirelessCard/arm-cross-3.4.1/usr/local/arm/3.4.1/bin/../lib/gcc/arm-linux/3.4.1/../../../../arm-linux/bin/ld: cannot find -lgcc_s解決方法:在Makefile文件的CFLAGS中添加-L /WirelessCard/arm-cross-3.4. 1/usr/local/arm/3.4.1/arm-linux/lib -lm -lc -lgcc_s然后進入交叉編譯器的lib目錄 ,輸入:ln -s libgcc_s.so.1 libgcc_s.a$make$make install 成功______________________________________________________________________4.無線網卡配置a.先執行一下這個命令看一下rausb0設備是否注冊:cat /proc/net/dev如果顯示rausb0表已注冊b. $/sbin/insmod rt73.ko 然后插入網卡輸入: $/sbin/ifconfig rausb0 inet YOUR_IP netmask 255.255.255.0 up$route add default gw 10.1.41.2$/usr/local/sbin/iwconfig rausb0 essid "TP-LINK" (不能成功設置)$/usr/local/sbin/iwconfig rausb0 mode "ad-hoc" (能成功設置)$/usr/local/sbin/iwconfig rausb0 channel 54 (能成功設置)所以無法進行無線通信問題解決:為了解決問題,重新在PC機上進行試驗。按照驅動的README文件的說明,發現關鍵的一點是必須用命令$dos2unix rt73sta.dat 保證rt73sta.dat是二進制文件。而且必須用vi -b rt73sta.dat 對rt73sta.dat進行必要的修改。# Copy this file to /etc/Wireless/RT73STA/rt73sta.dat
# This file is a binary file and will be read on loading rt.o module.通過上述方法PC可以成功和AP通信,但在嵌入式板子上進行試驗發現把rt73sta.dat文件刪除與否效果一致,表明在裝入驅動時根本沒有讀這個二進制文件,這就是問題的癥結所在。問題解決: 1.i can't see the SSID - after I had it set with iwpriv oder iwconfig.Ony if i compile the driver with Debug option (CFLAGS += -DDBG) $insmod rt73.ko $ifconfig rausb0 inet 10.1.41.222 netmask 255.255.255.0 然后出現debug信息,觀察發現**RT2573**<7>--> NICLoadFirmware**RT2573**<7>--> Error 2 opening /friendly-arm/root/etc/Wireless/RT73STA/rt73.bn**RT2573**<7>NICLoadFirmware failed, used local Firmware(v 1.7) instead**RT2573**<7><-- NICLoadFirmware (src=/friendly-arm/root/etc/Wireless/RT73STA/r)**RT2573**<7>--> NICInitializeAsic**RT2573**<7>BBP version = 22**RT2573**<7><-- NICInitializeAsic**RT2573**<7>--> Error 2 opening /friendly-arm/root/etc/Wireless/RT73STA/rt73stt**RT2573**<7>--> NICReadEEPROMParameters也就是說NICLoadFirmware去裝載的配置文件的位置不對搜索驅動源文件目錄:grep 'friendly-arm' * 修改 vi rt_config.h中以下各行:#define PROFILE_PATH "/friendly-arm/root/etc/Wireless/RT73STA/rt73sta.dat"#define RT2573_IMAGE_FILE_NAME "/friendly-arm/root/etc/Wireless/RT73STA/rt73.bin"經過以上修改,仍有以下錯誤:ERROR!!! <7>MlmeEnqueueForRecv: frame too large, size = 3083分別到網卡驅動源程序目錄中:make all > /zxh/NetCardForPC 2>&1 ;make all > /zxh/NetCardForArm 2>&1對比對驅動進行本機編譯和交叉編譯過程的對比,發現交叉編譯中有以下警告信息:/WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/mlme.c: In function `AsicS witchChannel': 32 /WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/mlme.c:3822: warning: comp arison is always false due to limited range of data type 33 /WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/mlme.c:3828: warning: comp arison is always true due to limited range of data type 34 /WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/mlme.c:3880: warning: comp arison is always false due to limited range of data type/WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/mlme.c: In function `AsicA djustTxPower': 36 /WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/mlme.c:4439: warning: comp arison is always false due to limited range of data type/WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/rtmp_init.c: In function ` NICReadEEPROMParameters': 96 /WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/rtmp_init.c:1053: warning: comparison is always false due to limited range of data type 97 /WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/rtmp_init.c:1066: warning: comparison is always false due to limited range of data type 98 /WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/rtmp_init.c:1083: warning: comparison is always false due to limited range of data type 99 /WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/rtmp_init.c:1183: warning: comparison is always false due to limited range of data type 100 /WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/rtmp_init.c:1187: warning: comparison is always false due to limited range of data type 101 /WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/rtmp_init.c:1195: warning: comparison is always false due to limited range of data type 102 /WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/rtmp_init.c:1199: warning: comparison is always false due to limited range of data type 103 /WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/rtmp_init.c: In function ` RTMPCckBbpTuning': 104 /WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/rtmp_init.c:3207: warning: comparison is always true due to limited range of data type分析:on x86 char defaults to signed char, but on the ppc (and ARM, don't know aboutsparc) char =3D=3D unsigned char.gcc has the options -fsigned-char and -funsigned-char to change the signedness of type char通過以上設置與ap的通信依然有點問題,在debug模式下出現的提示信息中有如下內容:(以下信息是在ad-hoc模式下與acer筆記本通信時的信息)PeerBeaconAndProbeRspSanity - missing field, Sanity=0x00可用diff -u -b rt_config.h /download/RT73_Linux_STA_Drv1.0.3.6/ARM-Module/rt_config.h來比較兩個文件的內容用diff -u -b debug /download/RT73_Linux_STA_Drv1.0.3.6/ARM-Module/比較兩個目錄的文件在rtmp_init.c的第2775行加入語句if (Length ==0) return; IN PVOID pSrc, IN ULONG Length) {+ if (Length ==0) return;+ #ifdef RTMP_EMBEDDED(rt_config.h中包含了i386的頭文件,改成arm后編譯鏈接可以通過,但不能正常建立無線連接
后來我使用printk不斷地跟進代碼的執行路徑, 最終才發現在ARM板上向網卡
下的配置數據流和在PC機上向網卡下的配置數據流不一致才確認是結構定義的修飾問題
還有一個空指針問題如果只修改上面兩點, 在ARM上運行時會發生oops原因是使用中存在空指針訪問)__________________________________________________________________________________________________________________________________________________________________________If you want for rt73 driver to auto-load at boot time:A) choose rausb0 for first RT73 WLAN card, rausb1 for second RT73 WLAN card, etc. B) create(edit) 'ifcfg-rausb0' file in /etc/sysconfig/network-scripts/, edit( or add the line) in /etc/modules.conf: alias rausb0 rt73C) edit(create) the file /etc/sysconfig/network-scripts/ifcfg-rausb0 DEVICE='rausb0' ONBOOT='yes'_______________________________________配置:iwconfig ath0 essid XXXXXXiwconfig ath0 key open YYYYYYYifconfig ath0 up然后就是配ip和網關,我用的dhcpdhcpclient ath0然后就ok了(essid等信息和AP的設置有關,將AP設置中的essid等信息修改一下,就可以在無線網卡的信息中列出來(如果在測試區域內只有一個AP的話)用iwconfig設置無線物理參數:1.網絡標識:[root@Jack ~]# iwconfig ath0 essid “jack”2.網絡頻率:[root@Jack ~]# iwconfig ath0 freq 5.2G3.網絡頻道:[root@Jack ~]# iwconfig ath0 channel 114.網絡速率:[root@Jack ~]# iwconfig ath0 rate 54M auto5.WEP加密:[root@Jack ~]# iwconfig ath0 key DEAD-BEFF-AA (可選,默認不加密)6.發射功率: [root@Jack ~]# iwconfig ath0 txpower 30 (可選, 以dBm為單位,自動使用默認值)最常用的工具是 iwconfig,它的用法類似 ifconfig。沒有接口名稱之外的參數的 iwconfig 命令可以得到網卡的工作狀態:gnawux@APTITUDE:~$ /sbin/iwconfig wlan0wlan0 unassociated ESSID:off/any Nickname:"ipw2100" Mode:Managed Channel=0 Access Point: 00:00:00:00:00:00 Bit Rate=0 kb/s Tx-Power:off Retry:on RTS thr:off Fragment thr: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使用“mode”參數,你可以更改無線網卡的工作模式APTITUDE:/home/gnawux# iwconfig wlan0 mode 1APTITUDE:/home/gnawux# iwconfig wlan0wlan0 unassociated ESSID:off/any Nickname:"ipw2100" Mode:Ad-Hoc Channel=0 Cell: 00:00:00:00:00:00 Bit Rate=0 kb/s Tx-Power:off Retry:on 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這里,我們把網卡的工作模式改成了 Ad Hoc 模式(點對點)了。使用 essid 參數,還可以改動網絡的名稱:APTITUDE:/home/gnawux# iwconfig wlan0 essid gnawuxAPTITUDE:/home/gnawux# iwconfig wlan0wlan0 IEEE 802.11b ESSID:"gnawux" Nickname:"ipw2100" Mode:Ad-Hoc Frequency:2.412 GHz Cell: 02:0C:F1:0F:11:2A Bit Rate=0 kb/s Tx-Power:off Retry:on RTS thr:off Fragment thr:off Encryption key:off Power Management:off Link Quality=60/100 Signal level=-83 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0你可能注意到了,現在我們的很多狀態參數都有了有意義的值,這是因為我們有了一個合法的 ESSID 了。對于其他參數,可以參考 iwconfig(8)。另一個常用工具是 iwlist,這個工具可以用來列出可用資源。使用 scanning 參數,可以看到所有的 AP:gnawux@APTITUDE:~$ /sbin/iwlist wlan0 scanningwlan0 Scan completed : Cell 01 - Address: 00:0D:BD:6F:B4:48 ESSID:"" Protocol:IEEE 802.11b Mode:Master Channel:6 Encryption key:on Bit Rate:11 Mb/s Extra: Rates (Mb/s): 1 2 5.5 11 Extra: Signal: -70 dBm Extra: Last beacon: 59ms ago Cell 02 - Address: 86:CF:C1:34:12:06 ESSID:"gnawux" Protocol:IEEE 802.11b Mode:Ad-Hoc Channel:11 Encryption key:off Bit Rate:11 Mb/s Extra: Rates (Mb/s): 1 2 5.5 11 Extra: Signal: -37 dBm Extra: Last beacon: 2ms ago而使用 frequency 參數,我們可以得到頻率列表:gnawux@APTITUDE:~$ /sbin/iwlist wlan0 freqwlan0 14 channels in total; available frequencies : Channel 01 : 2.412 GHz Channel 02 : 2.417 GHz Channel 03 : 2.422 GHz Channel 04 : 2.427 GHz Channel 05 : 2.432 GHz Channel 06 : 2.437 GHz Channel 07 : 2.442 GHz Channel 08 : 2.447 GHz Channel 09 : 2.452 GHz Channel 10 : 2.457 GHz Channel 11 : 2.462 GHz Channel 12 : 2.467 GHz Channel 13 : 2.472 GHz Channel 14 : 2.484 GHz Current Channel=1你同樣可以通過 iwlist(8) 得到更多信息。除了上面的兩個,還有很多其他工具,包括 iwevent, iwgetid, iwpriv, iwspy, 用來獲取網卡工作狀態、對網卡進行管理。 四、備份文件用cp在不同的盤中復制往往會出問題,最好用tar打包a.tar cvf aa.tar aa ;(aa為目錄)b.對復制進行驗證無論使用 cp 還是 tar,您始終都應該驗證復制過程是否成功完成。盡管 tar 對所復制的文件進行了證實(使用 v 選項),但是您應該確保在新的文件系統中正確地創建了這些文件。首先,檢查 du 對舊的和新的系統的輸出$ du -sk /usr3923068 /usr$ du -sk /mnt/usr.tmp3923068 /mnt/usr.tmp這兩個數字應該是相等的,然而,根據新文件系統的類型以及舊文件系統/目錄和新文件系統/目錄中對應的文件和目錄的分配大小的不同,您可能會發現它們在大小上有些細微的差異。另一種好的測試方法是,比較源和目標文件/目錄的數目。您可以使用簡單的 find command 來完成這項工作$ find /usr |wc -l347001$ find /mnt/usr.tmp |wc -l347001_________________________________________________________________
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -