转载出自:点击打开链接
(一)
(1)WiFi网卡的选型:WiFi网卡的选择依据是看看内核是不是支持这款WiFi网卡,确定网卡的VID,PID是否在列表里:http://wireless.kernel.org/en/users/Devices/USB
(2)开发环境的搭建:设置VMWARE的网络为桥接, 并选择使用哪一个网卡,把PC windows网卡, vmware linux的网卡、开发板的有线网卡IP设为192.168.7.xxx,因为以后开发板上USB WIFI网卡将使用192.168.1.xxx,这里要满足开发板的有限网卡和WiFi网卡不在同一个网段。
tar xjf linux-3.4.2.tar.bz2
cd linux-3.4.2
patch -p1 < ../linux-3.4.2_camera_jz2440.patch
cp config_ok .config
配置内核:根据网卡的VID/PID确定使用哪一个源码,根据WiFi网卡的VID/PID来搜索网卡,一般在drivers/net/wireless/里面搜索。
grep "0x3327" * -nR
得到
ath/ath9k/hif_usb.c:32: { USB_DEVICE(0x13D3, 0x3327) },
这说明Linux内核已经支持了这款WiFi网卡。
进入
ath/ath9k/目录,看看内核把该网卡编译进去没有?打开该目录下的Makefile,查看
hif_usb子串,得到
ath9k_htc-y +=
htc_hst.o \
在查看
ath9k_htc子串,得到
obj-$(CONFIG_ATH9K_HTC) += ath9k_htc.o,只有当
CONFIG_ATH9K_HTC被配置成‘Y’或者‘M’的时候,才会被内核编译进去。
make menuconfig
搜索一下
CONFIG_ATH9K_HTC,得到
查看红色字体,发现他依赖一些东西,
NETDEVICES [=y] && WLAN [=y] && ATH_COMMON [=n] && USB [=y] && MAC80211 [=m],
NETDEVICES
,
WLAN
,
USB
已经配置好,
ATH_COMMON
,没有配置好。
MAC80211
只配置成了模块形式。这是就需要将
MAC80211
配置成‘Y’(为何people配置成Y原因不知,只是韦老师说的)。
()略
()
()
配置好后编译:make uImage,然后烧写到开发板,启动开发板,输出
usb 1-1: ath9k_htc: Firmware htc_9271.fw requested
usb 1-1: ath9k_htc: Failed to get firmware htc_9271.fw
这表示我们的网卡需要这个固件,
()略
()
()至此,我们的WiFi网卡可以使用了,现在编译一些应用程序来使用WiFi网卡
1. 旧工具iwconfig, iw是它的替代者, 可用于这2种"认证/加密": open, WEP
tar xzf libnl-3.2.23.tar.gz
cd libnl-3.2.23/
./configure --host=arm-linux --prefix=$PWD/tmp
修改 lib/addr.c 添加宏(宏来自内核源码)
make,出现如下错误
addr.c:1027: error: 'AF_RDS' undeclared here (not in a function)
addr.c:1033: error: 'AF_CAN' undeclared here (not in a function)
addr.c:1034: error: 'AF_TIPC' undeclared here (not in a function)
addr.c:1038: error: 'AF_ISDN' undeclared here (not in a function)
这是因为里面的
lib/addr.c缺少一些宏的定义,这些宏是在内核里面定义的,直接把这些宏添加进
lib/addr.c文件就可以了。
make install
把编译出来的头文件应该放入:
/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include
cd tmp/include/libnl3
sudo cp netlink -rf /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include
把编译出来的库文件应该放入:
/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib
把编译出来的库文件应该放入NFS文件系统的lib目录:
/work/nfs_root/fs_mini_mdev_new/lib
()略
()
()打开网卡命令 ifconfig wlan0 up,扫描网卡 iw dev wlan0
scan,连接网卡 iw wlan0 connect shuuyalin
()
()
()make > log.txt
2>&1
,该句表示吧make命令的输出放到log.txt里面去。
()wap_supplicant的用法总结
wpa_supplicant -B -c/etc/
wap_supplicant.conf -iwlan0
-B 表示该程序作为一个服务器运行于后台
wpa_cli -iwlan0 status 查看连接状态
wpa2-eap-ccmp.conf
eap是采用服务器的认证模式
wpa-psk-tkip.conf
psk是直接把密码写进文件,所以我们用psk模式的。
RSN是wpa2的别名
ctrl_interface=/var/run/wpa_supplicant
network={
}
注意:即使用的是wpa2的方式,也不要些把
key_mgmt设置为
WPA2-PSK,正确的是
WPA-PSK。
group暂时不清楚,估计也是也谢加密方法吧。默认的是很多种都可以。
ctrl_interface=/var/run/wpa_supplicant 是一个目录,用于wpa_suppllicant 和wpa_cli的socket通信。
该目录需要自己建立的。
wpa_cli可用于两种模式,命令模式与交互模式
在一个配置文件里,可以设置多个连接热点的信息的。如果连接不上配置文件里面的其中一个热点,他会尝试连接其他的热点,知道脸连上或全部试玩为止。
如果要ping同外网,如ping www。baidu。com,我们需要把www.baidu。com转化为IP地址,这里就涉及到域名服务器。修改/etc/resolv.conf,添加一行nameserver
192.168.31.1(设置为网关就可以),如果还不能ping通的话,就要添加网关,route add default gw 192.168.31.1