您的位置:首页 > 编程语言 > PHP开发

构建ARM-PC无线局域网->Tp-link wn321G无线网卡(Rt73)驱动+wireless_tools for Kernel 2.6

2012-07-22 18:03 323 查看

构建ARM-PC无线局域网->Tp-link wn321G无线网卡(Rt73)驱动+wireless_tools for Kernel 2.6

构建ARM-PC无线局域网
Tp-link wn321G无线网卡(Rt73)驱动+wireless_tools
for Kernel 2.6
由于需要使用无线处理近距离数据传输,故有了此文的出现。用arm平台进行视频采集编码,然后用无线局域网传输到PC端再进行各种处理。由于linux下面的无线网卡,如果官方没有提供linux下面的驱动,我们常常会使用madwifi这一开源公司的驱动进行移植,或者用Ndiswrapper进行虚拟加载windows下面的驱动,前者适用的芯片范围有限,如果对其驱动进行更改移植,必然造成比较大的工作量。而后者往往存在不少的问题。而这里使用的一款无线网卡使用的是Ralink的RT2571WF,可以查看硬件信息或者撬开外壳得到确认。所以我们在这里可以直接使用Ralink提供的linux下面的驱动进行移植,大大减少了工作量。这里我就参考张驿风的文章进行移植试验(其blog地址:http://blog.21ic.com/user1/765/archives/2007/41046.html)。张驿风提到的一些问题,我移植过程中并没有出现,所以这里并没有做介绍,如果有遇到了什么问题可以访问上面的地址进行查阅。

一. 主要硬件环境:

ARM:mini2440

TP-link无线路由器

Tp-link wn321g无线网卡

二. 主要软件环境:

Kernel:2.6.13

RT73芯片驱动程序

Wireless_tools工具集。

三. 下载必备文件:

1. kernel:这里我使用mini2440提供的2.613版的内核进行试验。

2. rt73芯片驱动:RT2501USB(RT73:RT2571W/RT2573/RT2671)

(地址:http://www.ralinktech.com.tw/data/drivers/2009_0206_RT73_Linux_STA_Drv1.1.0.2.tar.bz2)

3. Wireless_tools:

地址

http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.29.tar.gz

四. 阅读README,了解安装方法

解压进入到~/2009_0206_RT73_Linux_STA_Drv1.1.0.2/Module目录下,

Vi README

=======================================================================

Build Instructions:

====================

1> $tar -xvzf RT73_Linux_STA_Drv_x.x.x.x.tar.gz

go to "./RT73_Linux_STA_Drv_x.x.x.x/Module" directory.

2> $cp Makefile.4 ./Makefile # [kernel 2.4]

or

$cp Makefile.6 ./Makefile # [kernel 2.6]

3> [kernel 2.4]

$chmod 755 Configure

$make config # config build linux os version

4> $make all # compile driver source code

4.1> $make install

5> $cp rt73.bin /etc/Wireless/RT73STA/ # copy firmware

6> $dos2unix rt73sta.dat

$cp rt73sta.dat /etc/Wireless/RT73STA/rt73sta.dat

# !!!check if it is a binary file before loading !!!

7> $load

#[kernel 2.4]

# $/sbin/insmod rt73.o

# $/sbin/ifconfig rausb0 inet YOUR_IP up

#[kernel 2.6]

# $/sbin/insmod rt73.ko

# $/sbin/ifconfig rausb0 inet YOUR_IP up

=======================================================================

五. 交叉编译RT73驱动程序

1.# rm -f Makefile //删除原来的Makefile文件

2.根据Makefile.6文件进行精简修改:

(1)去掉一些对于我们移植没有用的编译选项,只留下编译命令.

(2)内核源代码树的目录也是需要修改.

(3)还有一点很重要,在前段时间做项目时候发现的,在arm平台下C语言char类

型默认为unsigned char类型,所以一点要给CFLAGS加上一个-fsigned-char选项

不然编译出现了很多warnin。

(4) 编译生成了rt73.ko模块.

具体Makefile文件如下:

gedit Makefile &

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

# Module Name: Makefile

# Abstract: Makefile for rt73(tp-link wn321G) linux driver on kernel series 2.6

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

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

CFLAGS += $(WFLAGS) -fsigned-char

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

KDIR := ../../kernel-2.6.13

all:

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

clean:

rm -rf *.o *~ .*.cmd *.ko *.mod.c .tmp_versions built-in.o

六. 交叉编译wireless-tools

这个工具的安装较之驱动就更为简单了,修改一下交叉编译器,添加一个

CROSS =/usr/local/arm/3.4.1/bin/arm-linux-

然后把CC,AR,RANLIB前面都加上$(CROSS)

为了arm能够很方便的从pc下取得这些文件,把Makefile中的PREFIX修改为 /root/iwconfig,如果没有这个目录,会自创建的,这样就把编译结果安装到这个目录下

# make

# make install

现在就会在/root/iwconfig 目录下面生成我们需要的工具和其运行所必需的库文件。

七. 将我们编译的成果,下载到arm板上,开始测试

我一向使用简易的ftp进行下载,无论你使用ftp,tftp,nfs等等各种方式,你要把我们生成的驱动文件:rt73.ko, 上面的工具文件/root/iwconfig/sbin/*,/root/iwconfig/lib/*下载到arm开发板上。

八. 这里差点忘记了,我们的驱动要能够工作,必须要有一个前提,那就是我们的内核支持无线模块。所以我们要在内核配置的时候加上无线的支持:

Device Drivers --->

Network device support --->

Wireless LAN (non-hamradio) --->

<*> Wireless LAN drivers (non-hamradio) & Wireless Extensions

可以在给你提供的内核源文件里使用配置命令查看一下make menuconfig,是不是加入了wireless的支持。如果没有话,请加入无线支持,重新编译内核,配置添加的选项也不一定只有上面的一项,根据自己的内核版本进行添加。

九.测试

1.加载驱动: insmod rt73.ko

2.用./iwlit scanning查看附近无线网络

3.# iwconfig rausb0 essid linuxer #无线ESSID名称

# iwconfig rausb0 enc ********** #无线密钥

# iwconfig rausb0 mode managed #无线模式

# dhclient rausb0 #让rausb0获取IP

如果没有dhclient就可以手动添加网络信息:

/****************************

# insmod rt73.ko

# ifconfig rausb0 inet 192.168.1.77 up

# route add default gw 192.168.1.1

# iwconfig rausb0 essid "linuxer"

# iwconfig rausb0 mode mananed

# iwconfig rausb0 channel 6

****************************/

# ifconfig #就可以查看rausb0的网络信息了。

然后ping一下网关,通了,OK!至此,PC-ARM的局域网无线网络已搭建成功!

十.值得说明的:

1.USB的无线网卡,除了rt73的驱动外,必然需要usb的驱动了,所以对于你的kernel,如果边usb的通用驱动都没有,必须不能使用。

2.iwconfig的配置请参考手册,这里不再累述。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: