1. 程式人生 > >arm-linux 移植無線網絡卡RT3070驅動

arm-linux 移植無線網絡卡RT3070驅動

環境:
編譯環境:Ubuntukylin 14.04
交叉編譯器:arm-linux-gcc 4.4.1
開發板核心:Linux2.6 & 3.0.1及以上
無線模組:雷凌Ralink - rt3070

一、核心版本:Linux 3.0及以上


1、配置Linux核心
1.1 進入Linux核心目錄:$ make menuconfig
1.2 勾選 Networking support --->Wireless --->cfg80211 - wireless configuration API / Generic IEEE 802.11 Networking Stack (mac80211)
1.3 勾選 Device Drivers --->Network device support --->Wireless LAN ---> Ralink driver support ---> Ralink rt27xx/rt28xx/rt30xx (USB) support
1.4 退出儲存配置
2、重新編譯核心
$ make clean
$ make
在目錄下生成新核心zImage
3、開發板重新燒錄
重新SD卡燒錄核心zImage到開發板
4、韌體rt2870.bin的拷貝
雷凌官網驅動包中的"/common/rt2870.bin"拷貝到開發板"/lib/firmware/"目錄下
5、無線和有線的連線除錯
有線連線:
1.$ ifconfig eth0 192.168.20.203      (設定IP地址)
2.$ ping 192.168.20.201               (測試與PC機的連通)
無線連線:
1.$ ifconfig wlan0 up                         (開啟無線網絡卡)
2.$ iwlist wlan0 scan                         (搜尋無線網路)
3.$ iwconfig wlan0 essid "linux" key s:11223  (設定無線essid和密碼)
4.$ iwconfig      (檢視無線連線資訊)
5.$ ifconfig wlan0 192.168.20.209     (設定無線IP地址)
6.$ route add default gw 192.168.20.1     (配置路由表,新增網管)
7.$ ping 192.168.20.201     (測試與PC機的連通)
(此種無線連線命令只適合 WEP加密方式 或 不加密)
6、shell指令碼命令
#!/bin/sh
ifconfig eth0 down
#iwlist wlan0 scan
iwconfig wlan0 essid "linux" key s:11223
ifconfig wlan0 up

ifconfig wlan0 192.168.20.209
route add default gw 192.168.20.1
udhcpc –i wlan0#以上兩行可以使用此命令代替,自動獲取IP,分配路由表
ifconfig eth0 up




二、核心版本:Linux2.6



1、驅動原始碼的交叉編譯
1.1 解壓原始碼包,修改Makefile檔案
CHIPSET = 3070
PLATFORM = SMDK

ifeq ($(PLATFORM),SMDK)
LINUX_SRC = /home/tango/code/linux-2.6.32.2
CROSS_COMPILE = /opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-
1.2 修改/os/linux/config.mk檔案
定義:
CHIPSET = 3070
CROSS_COMPILE =/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-
修改:
# Support Wpa_Supplicant
HAS_WPA_SUPPLICANT=y
# Support Native WpaSupplicant for Network Maganger
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y
1.3 $ make
生成/os/linux/rt3070sta.ko檔案
$ arm-linux-strip -S rt3070sta.ko (如果太大,去掉除錯資訊)
2、重新編譯核心
2.1 配置Linux核心,進入Linux核心目錄
$ make menuconfig
2.2 勾選 Device Drivers --->Network device support --->Wireless LAN(non-hamradio) ---> Wireless LAN driver(non-hamradio)& Wireless Extensions
2.3 雙擊鍵盤“Esc”鍵退出,儲存配置
2.4 編譯核心
$ make clean
$ make
在"./arch/arm/boot"目錄下生成新核心zImage
2.5、開發板重新燒寫核心
重新SD卡燒錄核心zImage到開發板(具體步驟見開發板手冊)
3、移植無線驅動到開發板
3.1 拷貝驅動到目標系統
把./RT2870STA.dat拷貝到開發板(/etc/Wireless/RT2870STA)目錄下
把./os/linux/rt3070sta.ko拷貝到開發板(/xxx/)目錄下,xxx自定
把./common/rt2870.bin拷貝到開發板(lib/firmware)目錄下
3.2 載入驅動模組
$ insmod /xxx/rt3070sta.ko
4、無線模組配置
$ ifconfig ra0 192.168.20.225 netmask 255.255.255.0
$ iwlist ra0 scan
4.1 無密碼
iwpriv ra0 set NetworkType=Infra
iwpriv ra0 set AuthMode=OPEN
iwpriv ra0 set EncrypType=NONE
iwpriv ra0 set SSID="AP's SSID"
4.2 WEP加密演算法
iwpriv ra0 set NetworkType=Infra
iwpriv ra0 set AuthMode=SHARED
iwpriv ra0 set EncrypType=WEP
iwpriv ra0 set DefaultKeyID=1
iwpriv ra0 set Key1="11223"
iwpriv ra0 set SSID="linux"
設定完一會,等網路連線好就可以了
(如果沒有iwpriv命令,把檔案中的iwpriv拷貝到開發板/bin/目錄下就可以了)