分享

基于arm/Linux平台USB无线网卡的wifi驱动移植

 Linux学习模式 2014-10-27
1.RT73无线网卡驱动:
http://www./data/drivers/2009_0206_RT73_Linux_STA_Drv1.1.0.2.tar.bz2

2.
解压
# tar -xvzf  
2009_0206_RT73_Linux_STA_Drv1.1.0.2.tar.bz2

# cd 2009_2006_RT73_Linux_STA_Drv_1.1.0.2/Module
# cp Makefile.6  ./Makefile
3.
编辑
Makefile
######################################################################
# Module Name: Makefile
# Abstract: Makefile for rt73 linux driver on kernel series 2.6
######################################################################
CC     :=arn-linux-gcc

LD     :=arm-linux-ld

#PLATFORM=PC
PLATFORM=CMPC

#Enable for wpa_supplicant's spcific driver "driver_ralink.c", default enabled.
HAS_RALINK_WPA_SUPPLICANT_SUPPORT=y
#Enable for wpa_supplicant's generic driver "driver_wext.c", used for NetworkManager
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n
#Support Block Net-If during TxSw queue full.
HAS_BLOCK_NET_IF=y
WFLAGS := -Wall -Wstrict-prototypes -Wno-trigraphs
ifeq ($(HAS_RALINK_WPA_SUPPLICANT_SUPPORT),y)
WFLAGS += -DRALINK_WPA_SUPPLICANT_SUPPORT
endif
ifeq ($(HAS_NATIVE_WPA_SUPPLICANT_SUPPORT),y)
WFLAGS += -DNATIVE_WPA_SUPPLICANT_SUPPORT
endif
ifeq ($(HAS_BLOCK_NET_IF),y)
WFLAGS += -DBLOCK_NET_IF
endif
## Comment/uncomment the following line to enable/disable debugging
#EXTRA_CFLAGS += -DDBG
EXTRA_CFLAGS += $(WFLAGS)
ifeq ($(PLATFORM),PC)
LINUX_SRC =/lib/modules/$(shell uname -r)/build
endif
ifeq ($(PLATFORM),CMPC)
#LINUX_SRC = /home/fonchi/vendor/kernel-default-2.6.21/linux-2.6.21
LINUX_SRC = /usr/work/linux-2.6.24

endif
EXTRA_CFLAGS += -I$(LINUX_SRC)/include
obj-m := rt73.o
rt73-objs := /
rtmp_main.o /
mlme.o /
connect.o /
rtusb_bulk.o /
rtusb_io.o /
sync.o /
assoc.o /
auth.o /
auth_rsp.o /
rtusb_data.o /
rtmp_init.o /
sanity.o /
rtmp_wep.o /
rtmp_info.o /
rtmp_tkip.o /
wpa.o md5.o
ifeq ($(HAS_NATIVE_WPA_SUPPLICANT_SUPPORT),y)
rt73-objs += rtmp_wext.o
endif
ifeq ($(HAS_BLOCK_NET_IF),y)
rt73-objs += netif_block.o
endif
## Configuration files on SuSE
#NDDIR=/etc/sysconfig/network
#MOD_CONF=/etc/modprobe.d/module-renames
## NDDIR/ifcfg-rausb0
ND_CONF=/etc/sysconfig/network-scripts/ifcfg-rausb0
ifdef NDDIR
NDDIR := $(NDDIR)
else
  NDDIR := /etc/sysconfig/network-scripts
endif
ifdef MOD_CONF
MOD_CONF := $(MOD_CONF)
else
MOD_CONF := /etc/modprobe.conf
endif
all:
make -C $(LINUX_SRC) SUBDIRS=$(shell pwd) modules
clean:
rm -rf *.o *~ .*.cmd *.ko *.mod.c .tmp_versions built-in.o
install:
make -C /lib/modules/$(shell uname -r)/build /
INSTALL_MOD_DIR=extra SUBDIRS=$(shell pwd) /
modules_install
@echo "Network device directory $(NDDIR)";
@echo "Module configuration file $(MOD_CONF)";
@if [ -d "$(NDDIR)" ] ; then /
  if [ ! -f "$(ND_CONF)" ]; then /
   echo "Create 'ifcfg-rausb0' in $(NDDIR)/"; /
   cp ifcfg-rausb0 $(NDDIR)/ ; /
  fi; /
  fi
@if ! grep -q 'rausb0' $(MOD_CONF) ; then /
  echo "append 'alias rausb0 rt73' to $(MOD_CONF)"; /
  echo "alias rausb0 rt73" >> $(MOD_CONF) ; /
  fi
/sbin/depmod -a
# auto copy *.bin to /etc/Wireless/RT73STA
# mkdir /etc/Wireless ;
# mkdir /etc/Wireless/RT73STA ;
# cp $(shell pwd)/*.bin /etc/Wireless/RT73STA ;
# cp $(shell pwd)/*.dat /etc/Wireless/RT73STA ;
# Copy file on Mandriva 2007.1
# cp $(shell pwd)/*.bin /lib/firmware/ ;
config:
@touch config.mk
@./Configure
4.
交叉编译

# make all
生成
rt73.ko
5.
在嵌入式linux

# mkdir /etc/Wireless
# mkdir /etc/Wireless/RT73STA
# cp rt73.bin /etc/Wireless/RT73STA/rt73.bin
# dos2unix rt73sta.dat
# cp rt73sta.dat  /etc/Wireless/RT73STA/rt73sta.dat
# /sbin/insmod rt73.ko
#/sbin/ifconfig rausb0 inet 192.168.2.9 up
#route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.2.1  dev rausb0
ping  192.168.2.1 -t


# ifconfig rausb0 up     
# iwconfig            
# iwlist rausb0 scanning     
# iwconfig rausb0 essid "your wireless net"      
# iwconfig rausb0 key "your key"                     
设置一下IP地址和DNS,就可以上网了!

可使用udhcpc自动获取ip地址

# udhcpc -i rausb0
ping
一下网关及外网地址



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多