close

軟硬件平臺如下:
開發板:FL2440, Linux內核版本-2.6.12
宿主機:ASUS PC, redhat 9.0
網卡:雷淩 Ralink rt3070 v1.0
驅動源碼:2009_0525_RT3070_Linux_STA_v2.1.1.0
交叉編譯器:arm-linux-gcc 3.4.1
1、雷淩官網下載源碼。
2、解壓驅動源碼。
#tar jxvf 2009_0525_RT3070_Linux_STA_v2.1.1.0.bz2
3、/usr/src/2009_0525_RT3070_Linux_STA_v2.1.1.0/os/linux 中的config.mk文件需要修改如下:
#cd /os/linux/
#vi config.mk
HAS_WPA_SUPPLICANT=y
#endif // WPA_SUPPLICANT_SUPPORT //
#ifdef NATIVE_WPA_SUPPLICANT_SUPPORT
# Support Native WpaSupplicant for Network Maganger
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n
4、去掉 os/linux/config.mk 中的 -Wpointer-sign 標誌,可能是編譯器不支持
5、linux內核的makefile需要修改:export KBUILD_BUILDHOST := $(SUBARCH)
ARCH       ?= arm
CROSS_COMPILE ?=/usr/src/local/arm/3.4.1/bin/arm-linux-
中CROSS_COMPILE  ?=/usr/src/local/arm/3.4.1/bin/arm-linux-
改為:
CROSS_COMPILE ?=/usr/src/usr/local/arm/3.4.1/bin/arm-linux-
6、/usr/src/2009_0525_RT3070_Linux_STA_v2.1.1.0中的Makefile中所要修改如下:
#PLATFORM: Target platform
PLATFORM = PC   目標平臺選擇PC
ifeq ($(PLATFORM),PC)
# Linux 2.6
LINUX_SRC = /usr/src/linux-2.6.12   內核源所在位置
# Linux 2.4 Change to your local setting
#LINUX_SRC = /usr/src/linux-2.4
LINUX_SRC_MODULE=/lib/modules/$(shelluname-r)/kernel/drivers/net/wireless/
CROSS_COMPILE= /usr/src/usr/local/arm/3.4.1/bin/arm-linux-  交叉編譯器所在的位置
Endif
7、make。
#cd 2009_0525_RT3070_Linux_STA_v2.1.1.0
#make通過,在2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO/os/linux目錄下生成了rt3070sta.ko,也就是RT3070的驅動了
8、把驅動和相關文件拷到板子上相應目錄下,註意這裏對 RT2870STA.dat 要用 dos2unix 先轉一下。
#dos2unix RT2870STA/RT2870STA.dat
把RT2870STA.dat拷貝到/etc/Wireless/RT2870STA目錄下
#chmod +x /etc/Wireless/RT2870STA/RT2870STA.dat
把rt2870.bin usb固件拷貝到 /lib/firmware 此路徑有嚴格要求
#cp common/rt2870.bin /lib/firmware/
把rt3070sta.ko拷貝到目標系統的 /usr/ 目錄下
#cp rt3070sta.ko /usr/
9、掛載驅動:insmod /usr/rt3070sta.ko
顯示
rtusb init --->
=== pAd = c4b01000, size =$465920 ===
<-- RTMPAllocAdapterBlock, Status=0
usbcore: registered new driver rt2870
加載成功
#ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:12:34:56:80:49
          inet addr:172.20.182.92  Bcast:172.20.255.255  Mask:255.255.0.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errorw:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:51 Base address:0x8300
lo        Link encap:Local Loopback
          LOOPBACK  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)
ra0       Link encap:Ethernet  HWaddr 00:00:00:00:00:00
          BROADCAST MULTICAST  MTU:1500  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:1000
          RX bytes:0 ,0.0 B)  TX bytes:0 (0.0 B)
可以查看到ra0設備的存在
啟動無線:
#ifconfig ra0 up
顯示
<-- RTMPAllocTxRxRingMemory, Status=0
-->RTUSBVenderReset
<--RTUSBVenderReset
Key1Str is Invalid key length(0) or Type(0)
Key2Str is Invalid key length(0) or Type(0)
Key3Str is Invalid key length(0) or Type(0)
Key4Str is Invalid key length(0) or Type(0)
1. Phy Mode = 9
2. Phy Mode = 9
NVM is Efuse and its size$=2d[2d0-2fc]
3. Phy Mode = 9
RTMPSetPhyMode: channel is out of range, use first channel=1
MCS Set = ff 00 00 00 01
<==== rt28xx_init, Status=0
0x1300 = 00064300
啟動成功!
下一步需要移植wireless tools 進行聯網和配置。
移植環境:
主機操作系統:redhat 9.0
目標系統:FL2440 內核 linux-2.6.28
交叉編譯器:arm-linux-gcc 3.4.1
wireless_tools版本:wireless_tools.29.tar.bz2
 
1.下載wireless_tools.29.tar.gz
2.解壓:#tar zxvf wireless_tools.29.tar.gz
3.修改makefile
PREFIX = /home/leo/wirelesstoolsout
CC = /usr/src/usr/local/arm/3.4.1/bin/arm-linux-gcc
AR = /usr/src/usr/local/arm/3.4.1/bin/arm-linux-ar
RANLIB = /usr/src/usr/local/arm/3.4.1/bin/arm-linux-ranlib
4. 交叉編譯:
#cd wireless_tools.29
#make
#make install
5. 復制文件到ARM開發板
拷貝libiw.so.29文件到目標系統/lib/
拷貝用到的幾個程序到目標系統的 /bin/ 目錄下就可以了
iwpriv、iwconfig、iwlist, iwevent, iwspy
至此wireless_tools移植完成
6. 設置 ip地址及子網掩碼:
# ifconfig ra0 172.31.13.229 netmask 255.255.254.0
7. 掃描無線網絡
# iwlist ra0 scan
===>rt_ioctl_giwscan. 14(14) BSS returned, data->length = 1526
ra0       Scan completed :
          Cell 01 - Address: 00:23:89:08:02:10
                    Protocol:802.11b/g
                    ESSID:"IMUST"
                    Mode:Managed
                    Channel:1
                    Quality:42/100  Signal level:-73 dBm  Noise level:-115 dBm
                    Encryption key:off
                    Bit Rates:18 Mb/s
          Cell 02 - Address: 00:23:89:DC:35:B0
                    Protocol:802.11b/g
                    ESSID:"IMUST"
                    Mode:Managed
                    Channel:1
                    Quality:42/100  Signal level:-73 dBm  Noise level:-115 dBm
                    Encryption key:off
                    Bit Rates:18 Mb/s
          Cell 03 - Address: 00:23:89:DC:38:90
                    Protocol:802.11b/g
                    ESSID:"IMUST"
                    Mode:Managed
                    Ghannel:1
                    Quality:89/100  Signal level:-55 dBm  Noise level:-115 dBm
                    Encryption key:off
                    Bit Rates:18 Mb/s
        
(顯示以上信息說明模塊已經正常工作,內蒙古科技大學的無線網絡服務區別號為 IMUST,該接入點沒有加密。)
8. 設置ESSID
# iwconfig ra0 ESSID IMUST
至此成功接入校園的無線網絡!
小結:無限網卡的主要做用就是尋找wifi熱點並與目標熱點進行物理連接。從而為數據的傳輸建好了一個通路。由於墻壁的阻擋,所以有信號衰減的問題,在傳輸監控視頻圖像時有些延遲。因為學校的無線網絡是開放式的,所以不需要對網卡進行WPA加密。

arrow
arrow
    全站熱搜

    主要步驟 發表在 痞客邦 留言(0) 人氣()