资讯详情

基于arm\\Linux平台USB无线网卡的wifi驱动移植-usa9002-ChinaUnix博客

arm三星2440平台,Linux内核是2.6.24,威盛VNT6656的USB无线网卡;开发平台是Fedora10,

内核是2.6.27.遇到问题如下:

1、驱动程序的版本是错误的

开始在网上找一个VNT6656的Linux驱动程序,直接在本地机器上编译。结果错误太多,一批又一批。主要问题是结构

体”不 是的,你必须开始CFLAGS全部换成EXTRA_CFLAGS。最后,驱动程序版本可能存在问题。

到 下载最新的

驱动:Driver/VT6656_Linux_src_v1.19_12_x86.zip

。之前的驱动是1.13版本。根本问题是驱动说明文档没有仔细阅读,初始版本根本不支持Fedora10。

那么,两种驱动有什么区别呢?原因是,Linux2.6.在24后的核心中,网络部分发生了变化,是网络部分

重要的结构已经改变,第一个驱动必须基于2.6.24前内核。struct

sk_buff,这里可以看到文章中提到的具体差异《Professional Linux Kernel

Architecture》你可以网上下一下,真的很好,内容包含2.6.24以后比较新的内容。

二、编译驱动模块

驱动程序是直接编译成模块的make本地机器上的驱动器编译顺利,生成vntwusb.ko本地机器可成功加载,使用正常

喜。接

下来把Makefie里面的CC、LD交叉编译工具的变量设置为arm-linux-gcc、arm-linux-ld。继续make,又出错了,具体错了

忘记。正确的方法是,make -C $(KERNEL_DIR) M=$(MODULE_DIR)

,-C指名内核所在文件夹,不写就默认。默认为本地机器上的内核,默认为/usr/src/kernels

/2.6.27.5-117.fc10.i686,肯定不行。M编译模块所在的路径。实际命令是

make -C /media/Study/temp/utu-Linux2.6.24_for_utu2440_2009-03-15

M=/media/Study/temp/VT6656_Linux_src_v1.19_12_x86/driver。

继续编译仍然是错误的,因为Makefile还没改好Makefile里的KSRC变量直接赋值KSRC=/media/Study/temp

/utu-Linux2.6.24_for_utu2440_2009-03-15,Makefile里面还有KSP直接删除所有捣乱变量。

make 添加选项时,

KSRC=/media/Study/temp/utu-Linux2.6.24_for_utu2440_2009-03-15

,不加好像不行,郁闷。。。继续编译,会在那里。ioctl.c line:298 出现段错误segmentation fault,注释此行

// pList->sBSSIDList[ii].wBeaconInterval =

pBSS->wBeaconInterval;

这样,我们就可以得到我们需要的vntwusb.ko。不解的是,在按照本地机器的内核编译就没有任何问题。

三、还要编译内核

在板上加载驱动模块时,Unknown symbol in

module错误。原板预装的核心没有wifi也即802.11模块。回想起来,编译结束时还打印了警告信息,说是wireless

send event

未注册等。。重新编译内核时,可以直接找到板默认配置文件,并将其放入其中wireless部分更改,更改文件名称.config作为默认配置.make

menuconfig当然也可以。变更如下:

#

# Wireless

#

CONFIG_CFG80211=y

CONFIG_NL80211=y

CONFIG_WIRELESS_EXT=y

CONFIG_IEEE80211=y

# CONFIG_IEEE80211_DEBUG is not set

CONFIG_IEEE80211_CRYPT_WEP=y

# CONFIG_IEEE80211_CRYPT_CCMP is not set

# CONFIG_IEEE80211_CRYPT_TKIP is not set

# CONFIG_RFKILL is not set

编译内核,下载到板子里。

四、板上如何使用无线网卡?

前提,USB

Host需要安装驱动器。vntw6656.ko模块成功后,驱动程序包中需要使用无线网卡wetctl编译工具,修改

Makefile直接make就行了,编译好了,考板/sbin/里。此外,程序包中还有一个脚本文件,可以根据需要更改。

DESIRED_SSID=“TestAP新建的无线连接名称,BSSTYPE=adhoc,建立点对点adhoc其他网络可以找到网络。

网络进入附件,把

/sbin/wetctl $DEVICE join \

infra\ #BSSTYPE类型

“ChianNet” \ ##想要连接的无线网络名称

11 \ #channel

$PSMODE \

$AUTHTYPE

改掉几个选项就行了。也可以直接使用wetctl几个命令

wetctl eth1 [scan、link 、list、 join等]

ifconfig 两个个命令

ifconfig eth1 192.168.1.110

ifconfig eth1 up

标签: pbss4140t晶体管

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台