我用的无线网卡芯片是zd1211b的,在网上找到很多驱动都不好用,最后在这里上找到好用的驱动
我们用的Linux内核是2.6.14的。驱动的交叉编译非常简单,在其Makefile中修改交叉编译器,然后把相应的KERNEL_SOURCE,MODPATH,KDIR,均改成你目标板的内核目录就行了
例如,我们的Makefile做的相关改动为:
CC=arm-linux-gcc
CPP=arm-linux-g++
LD=arm-linux-ld
MODPATH :=/happyday/mykernel/linux-2.6.14/
KERNEL_SOURCE=/happyday/mykernel/linux-2.6.14/
ZD1211REV_B=1
KDIR :=/happyday/mykernel/linux-2.6.14/
然后make,将生成的zd1211b.ko复制到开发板上insmod后就可以正确识别出我们的无线网卡了。
接下来是无线网络的配置。因为我们的项目要求两个目标板进行无线网络通讯,所以要把两个无线网卡配置成点对点访问模式。
首先在两个开发板上配置两个无线网卡的ip和essid.(ip要在一个网段上,essid配置成相同)【LINUX公社 】
ifconfig wlan0 192.168.0.7
iwconfig wlan0 essid happyday
然后把其中一个无线网卡配置成master模式,它将建立一个无线访问点,用iwconfig查看时,会显示其access point为自己的MAC
iwconfig wlan0 mode master
并把另一个无线网卡配置成manager模式
iwconfig wlan0 mode manager
此时它们将自动建立连接,并且可查看到已连接到无线访问点access point上的无线网卡mac。
还有很多其它的模式,比如ad-hoc,monitor等,本来记得是用ad-hoc来建立点对点连接的,可是后来试了下,不行,不知道为什么啊。
另:
insmod时如果出现 Unknown symbol wireless_send_event错误,是因为内核中缺少对无线网络的支持,请在内核配置时加上 'CONFIG_NET_RADIO=y' and CONFIG_NET_WIRELESS=y'.