TL-WN321G无线网卡驱动在armlinux平台上的移植TL-WN321G无线网卡驱动在armlinux平台上的移植正文:
TP-link的这款网卡恐怕是比较常见的一种无线网卡了,本周的任务是将其移
植到ARM上。
电脑:ubuntu6.10,kernel2.6.17-12-generic
ARM: emdoor 2.4.21-rmk1-pxa1-xsbase270中国各省简称
上篇文章说过“2.4.18的内核对wireless网络接口不完善,所以不好移植,
需要在内核代码中添加东西,只是刚开始编译试了一下,内核中缺少相关定义,所以就没有继续。最好在2.4.20以后的版本中进行。”我在2.4.17上大概试了一下,确实报错有很多定义都没有,幸好这个arm平台是2.4.21的,就用他做实验啦。
1,首先当然要到相应的驱动程序,linux的源代码:
www.ralinktech.tw/
2,尝试在本机安装,按照readme可以轻松完成,网卡正常工作。一来测试网卡是否正常,而来测试驱动能否正常工作。
3,参照原来的Makefile,重新编写Makefile,修改的地方主要包括:CROSS-COMPILE,CC,LD,AFLAGS,CFLAGS,主要目的是用交叉编译器来进行编译,而且相应的库都用arm版本来代替。Makefile的写法有严格的要求,比如只能用Tab不能用空格等等,最头疼的是不知道CFLAGS在说什么,总出问题,而且不显示出在这里,了一大圈才又回头看Makefile,发现和网上介绍的不太一样,有些错误其实是可以直接发现的,太粗心了。为了编译顺利我甚至怀疑是否主机也必须是2.4内核的,于是我又装了redhat虚拟机,后来证明这是没有关系的。
>>>>>>>>>>>>>#### #
# Module Name: Makefile
# Abstract: Makefile for rt73 linux driver on kernel series 2.4 >>>>>>>>>>>>>#### #
CROSS-COMPILE = arm-linux-
CC=$(CROSS-COMPILE)gcc
LD = $(CROSS-COMPILE)ld
LINUX_SRC := /home/sunpei/embed/linux-2.4.21-51Board_EDR
WFLAGS := -Wall -Wstrict-prototypes -Wno-trigraphs
#定义char为signed char,消除PC和ARM差异
AFLAGS := -fsigned-char
CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -march=armv4 -DMODULE -DMODVERSIONS -include $(LINUX_SRC)/include/linux/modversions.h CFLAGS += $(WFLAGS)
CFLAGS += $(AFLAGS)
OBJ = rt73.o
途家民宿网rt73.o : 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
$(LD) -r $^ -o $@
all: $(OBJ)
clean:
rm -rf *.o *~ core .*.cmd *.ko *.mod.c .tmp_versions built-in.o
>>>>>>>>>>>>>#### #
4,如果直接编译会报错,说许多定义都没有,因为有些头文件还是用的i386的,将这些include指向arm就可以顺利编译啦。编译的时候说Modversion没有,后来莫名其妙的就好了,我也不知道我动了什么。
5,在arm板上新建文件夹/etc/Wireless/RT73STA,这个目录路径实际上是在
买房子流程rt_config.h中定义的,当然你也可以修改他。
# mkdir /etc/Wireless
梦到丢鞋# mkdir /etc/Wireless/RT73STA
将需要的文件拷贝至ARM,当然是同学教我的crtl-a,z,s,。。。好久不接触都忘记了。
# cp rt73.bin /etc/Wireless/RT73STA
# cp rt73sta.dat /etc/Wireless/RT73STA
# dos2unix /etc/Wireless/RT73STA/rt73sta.dat //把配置文件转换为linux 格式,有关换行格式等
6,insmod rt73.o,应该说这样就可以了,但是还是出现了许多奇怪的问题,奇怪到从来没有人遇到过这种问题(以查阅google为准)。这些问题的排除也是除了正确编译驱动以外最大的工作量,每天早上都有新想法,来到实验室一实验果然可以,呵呵,睡眠有利于解决问题。:P
6.1 一加载.o文件就死机
#insmod rt73.o
using rt73.o
没有动静了。
加载驱动就死机,第一个想到的问题就是驱动源代码有错,近十万行的源代码要通读太费劲,关键是编译的时候不报错,加载就死机,这种真的是无从下手的感觉,硬着头皮读了两天,不知所云。第二天清早忽然恍然大悟,我是在NFS网络文件系统上放着这个文件并执行的,有一次我从主机给ARM传文件时也死机了,会不会是因为无法从网络文件系统目录上正确读取驱动?七点多就跑来实验了,果然不出所料,把.o文件传到目标板上,insmod一下,ifconfig rausb0 up一下,成功!
6.2 网卡标识不正确
网卡看似起来了,但是当查看网卡信息的时候显示:
HWaddr 00:00:00:00:00:00
显然网卡识别不正确,但是有时候rmmod再insmod后就会认出mac地址,估计是系统不稳定吧。
6.3 无法配置无线网络连接
在主机上非常简单,用iwconfig进行配置即可,比如最重要的ssid,用iwconfig rausb0 essid dlink就可以加入到dlink的网络当中去了,但是在
目标板上并非如此。
无线网卡的初始参数在rt73sta.dat中,具体的示意在readme中都有,于是乎我gedit rt73sta.dat,按照我们的无线网络配置修改ssid=dlink,channel=3,保存并传输到指定目录下,重新加载驱动模块,竟然显示: rausb0 RT73 WLAN ESSID:off/any
用iwconfig进行配置也是徒劳,依然显示上面的配置。
没有办法配置ssid,眼睁睁的看着驱动起来的网卡不能用,查便天下真
的是没有第二个人遇到我这种问题,郁闷之情无法言表,为了解决这个问题,我怀疑是iwconfig有问题,交叉编译了最新的iwconfig,还是不行。我一遍
遍修改rt73sta.dat,还是不行,但是有些参数修改就有用,比如channel=3
等一些数字的修改就有时候会起作用。我还加入了调试语句在源代码中,看是否正确获得文件中的ssid这个参数,结果是正确的。山穷水尽了。。。
又到了一个清晨,我忽然想到为什么要dos2unix这个文件?难道是格式不对?回到实验室仔细看Readme,终于发现编辑这个文件的命令是:vi -b
rt73sta.dat。难道这样保存的文件格式不同?用这种方法重新改ssid,重新
实验,一切搞定!难道真的是这个原因?
现在网络已经可以正常工作,移植过程一波三折,记录在此以便以后查阅,并祝其他人员移植顺利。
TL_WN321G无线网卡的移植中国历届奥运会奖牌
RT73 无线网卡在linux2.4.20 arm的移植
TL_WN321G的芯片是rt系列的芯片,到这款芯片的linux驱动地址:
www.ralinktech.tw/data/RT73_Linux_STA_Drv1.0.4. 现在最新的就应该是这个了吧,还有一个是
rt2x00.serialmonkey/
这个我没有试,好像是在RT73_Linux_STA_Drv1.0.3.6的基础上改,经常更新,应该比较新。
这里有比较全的rt驱动:
rt2x00.serialmonkey/wiki/index.php?title=Downloads
首先环境说明一下,gcc版本3.2.2,arm-linux-gcc版本3.3.2。
PC机内核:2.4.32
arm linux:2.4.20
所有操作都是在字符界面下。
2.4.18的内核对wireless网络接口不完善,所以不好移植,需要在内核代码中添加东西,只是刚开始编译试了一下,内核中缺少相关定义,所以就没有继续。最好在2.4.20以后的版本中进行。
网上2.6下介绍的比较多,所以我来写一些在2.4下需要注意的地方。
先在pc机上试了一下。
因为我使用的这个网卡TL_WN321G的VID和PID为0x148f,0x2573,在rtmp_def.h已经定义了,所以不需要更改任何东西。
# tar zxvf RT73_Linux_STA_Drv1.0.4.
# cd Modules
# mv Makefile.4 Makefile -f
# make config //在这里选择内核源代码目录,它需要相关头文件,把内核源代码所在目录填上
# make all
生成rt73.o模块文件。
建立相关目录,用于放置配置文件。这些目录在rt_config.h中定义了,你可以自己修改。
# mkdir /etc/Wireless
# mkdir /etc/Wireless/RT73STA
# cp rt73.bin /etc/Wireless/RT73STA
# cp rt73sta.dat /etc/Wireless/RT73STA
# dos2unix /etc/Wireless/RT73STA/rt73sta.dat //把配置文件转换为linux格式,有关换行格式等
# insmod rt73.o
rtusb init ====>
.
......
# lsmod | grep rt73
rt73 237344 0 (unused)
usbcore 81920 1 [rt73 usb-storage hid usb-uhci]
然后插上无线网卡,出现:
idVendor = 0x148f, idProduct = 0x2573
在这里无线路由配置为无加密,为了方面测试,如果加密,需要更改配置文件。
# ifconfig rausb0 inet 192.168.1.10 up // 启动无线网络接口
rt73 driver version - 1.0.4.0
护照过期怎么办# ifconfig rausb0 //看到相关rausb0网络配置信息
rausb0 Link encap:Ethernet HWaddr 00:19:E0:80:EE:7A
inet
addr:192.168.1.10 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING
MULTICAST MTU:1500 Metric:1
RX packets:117 errors:0 dropped:0 overruns:0 frame:0
TX packets:39 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:7860 (7.6 Kb) TX bytes:2880 (2.8 Kb)
# iwconfig //可以看到相关无线网卡信息,如果连接上路由器,则ESSID 和路由器的匹配。
rausb0 RT73 WLAN ESSID:"AA"
Mode:Auto Frequency:2.412GHz Bit
Rate=1Mb/s
RTS thr=0 B Fragment thr=0 B
Encryption key:off
Link Quality:0 Signal level:0 Noise level:113
Rx invalid nwid:0 Rx invalid crypt:0 Rx
invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
如果连接上,添加相关网关和DNS就可以上网了。
有关iwconfig的使用,网上吧。
好了,现在把驱动移植到arm上,内核为2.4.20,s3c2440。
首先要修改Makefile。
>>>>>>>>>>>>>#### #
# Module Name: Makefile
# Abstract: Makefile for ARM rt73 linux driver on kernel series 2.4
>>>>>>>>>>>>>#### #
CROSS-COMPILE = arm-linux-
CC=$(CROSS-COMPILE)gcc
LD = $(CROSS-COMPILE)ld
LINUX_SRC := /home/sunpei/embed/linux-2.4.21-51Board_EDR
WFLAGS := -Wall -Wstrict-prototypes -Wno-trigraphs
#定义char为signed char,消除PC和ARM差异
AFLAGS := -fsigned-char
CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -O2 -fomit-frame-
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
Y470说明书
« 上一篇
台式机无线网卡驱动安装方法
下一篇 »
热门文章
-
恋爱之前必看准则
2024-12-21 -
拒绝早恋主题班会_策划书_范文大全
2024-12-21 -
朋友圈深情表白男生的句子
2024-12-21 -
拒绝早恋的主题班会
2024-12-21 -
怎么和白羊座女生表白
2024-12-21 -
大学生表白被开除 理由是违反学生管理规定
2024-12-21 -
怎么拒绝别人的表白
2024-12-21 -
怎么向一个女孩子表白
2024-12-21 -
最感动男孩的女生告白短信情话大全 怎么用短信给男生表白说说
2024-12-21 -
网友整理知乎神回复集锦
2024-12-21 -
如何婉言拒绝别人表白
2024-12-21 -
每日经典回复段子
2024-12-21 -
男生写给女生的情信超感动7篇
2024-12-21 -
委婉点对女生表白的话
2024-12-21 -
520女生写给男生表白情书3篇
2024-12-21 -
女孩给男生写的情书_情书大全
2024-12-21 -
追摩羯座女生最好的表白方式
2024-12-21 -
添加删除的好友话术
2024-12-21 -
如果你喜欢的人不回你信息怎么办
2024-12-21 -
高情商挽回变心男人的话
2024-12-21
最新文章
-
三八妇女节的来历和意义一览
2024-12-21 -
妇女节的文化符号与象征
2024-12-21 -
2024年各种节日纪念日大全一览表
2024-12-21 -
中国三八妇女节的起源介绍
2024-12-21 -
农历三月古文说法
2024-12-21 -
世界各国是如何庆祝儿童节的
2024-12-21
发表评论