arm linux usb网卡,rt73 USB无线网卡驱动在arm linux平台上的移植

描述

最近想搞一个无线的网络收音机玩玩,有现成的at91sam9261ek板子,linux操作系统是2.6.20,mplayer前几天已经成功移植到该平台,使用网线连接播放电台已经ok。

去科技京城赛格4楼转了一圈询问商家usb类型的无限网卡,好象仅有的几个有usb无线网卡的商户卖的都是TL-WN321G或者是TL-WN322G类型的。呵呵其实我还不知道上海卖这些电脑周边配件的集散地在哪里?因为比较熟悉赛格。 网上找了一圈算是还有收获,TL-WN321G使用的是rt73芯片,还好有rt73的开源linux驱动。

1 .下载:rt73 (USB)代码。

2 . 解压到内核源代码的drivers/usb/net/rt73目录下。

3 .删除其Makefile文件。重新编写Makefile如下:

CROSS-COMPILE = arm-linux-

CC=$(CROSS-COMPILE)gcc

obj-$(CONFIG_RT73) +=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

KDIR    := /home/at91sam9261ek/linux-2.6.20

PWD     := $(shell pwd)

default:

$(MAKE) -C $(KDIR) M=$(PWD) modules

clean:

rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions *.symvers test

install:

scp rt73.ko   192.168.2.46:/home/nfs/usr

4.   修改drivers/usb/net/Kconfig 加入下面的项:

config RT73

tristate "support rt73 wireless usb network device"

depends on USB && NET && USB_USBNET

5. 修改drivers/usb/net/Makefile 加入下面的项:

obj-$(CONFIG_RT73)              += rt73/

6. 重新配置内核选中rt73设备。

make menuconfig

7. 编译:

如果选中为M 使用 make modules 编译rt73.ko 运行时候手工加载。

如果选中为*    使用make uImage       直接把rt73设备编译到内核去。

8. 插入rt73

提示找不到rt73.bin ,应该是fireware加载有问题,可 是我一直没有处理掉,后来突然发现 http://www.ralinktech.com.tw/data/RT73_Linux_STA_Drv1.0.4.0.tar.gz 已经把rt73.bin文件转换为C语言数组存放在rtmp_init.c文件里,不需要使用hotplug事件去加载rt73.bin了。于是决定使用RT73_Linux_STA_Drv1.0.4.0.tar.gz 代码。

9. 下载RT73_Linux_STA_Drv1.0.4.0.tar.gz 。

10. 修改makefile 适合编译到arm linux2.6.20上。

代码原来的makefile没有考虑到arm上的移植不是很适合交叉编译的,我的makefile修改后如下:

#####################################################################

#       Module Name: Makefile

#       Abstract: Makefile for rt73 linux driver on kernel series 2.6

######################################################################

WFLAGS := -Wall -Wstrict-prototypes -Wno-trigraphs

CFLAGS += $(WFLAGS)

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

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

KDIR    := /home/at91sam9261ek/linux-2.6.20

all:

#       make -C $(KDIR)   SUBDIRS=$(shell pwd) modules

make -C $(KDIR) 'EXTRA_CFLAGS=-DRTMP_EMBEDDED -I.' 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

11. 重新编译RT73_Linux_STA_Drv1.0.4.0.tar.gz 。

由于在Makefile gcc编译选项里加入   DRTMP_EMBEDDED 造成一个编译错误,要修改rtmp_init.c中

VOID    RTMPMoveMemory( OUT PVOID       pDest, IN      PVOID   pSrc, IN      ULONG   Length)

函数,修改后如下:

VOID    RTMPMoveMemory(

OUT PVOID       pDest,

IN      PVOID   pSrc,

IN      ULONG   Length)

{

#ifdef RTMP_EMBEDDED

if(Length <= 8){

unsigned char *dest,*src;

int i;

dest = pDest;

src = pSrc;

for(i=0;i*(dest++) = *(src++);

}

}

else

memcpy(pDest, pSrc, Length);

#else

memcpy(pDest, pSrc, Length);

#endif

}

12. 加载rt73.ko.

insmod rt73.ko

ifconfig rausb0 up

udhcpc -i rausb0

可以从无线AP获取到ip地址ping 一下网关,scp一个文件都成功了。

13.总结:

看来其实移植这个usb无线网卡并不麻烦,网上有人说1.0.3版本的很难,移植好的代码 要收费,现在看来1.0.4是很好移植的并不难。

打开APP阅读更多精彩内容

点击阅读全文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值