嵌入式Linux下Wi—Fi接入技术研究(2)
以上模式中,最为常用的是前两种模式。我们通常使用的无线路由器其实就工作在AP模式下,我们可以通过使用手机或者笔记本电脑连接到路由器,手机和笔记本电脑的无线路由器就工作在STA模式下。
Wi-Fi网络的加密方式主要有WEP(Wired Equivalent Privacy)、WPA(Wi-Fi Protected Access)和WPA2(即WPA的加强版)。WEP加密方式在同一个网络中的所有设备使用相同的64 b或者128 b的密钥,安全性很低。因此现在一般采用WPA加密方式。WPA又分为家用的WPA-PSK(Pre-Shared Key)和企业用的WPA-Enterprise版本。WPA实现了IEEE 02.811i标准的大部分。WPA 超越 WEP 的主要改进就是在使用中可以动态改变密钥的“临时密钥完整性协定”(Temporal Key Integrity Protocol,TKIP),加上更长的初向量,这可以击败知名的针对 WEP 的密钥撷取攻击 。WPA2与WPA的差别在于,它使用更安全的加密技术AES (Advanced Encryption Standard),因此比WPA更难被破解、更安全。
2 Wi-Fi配置工具
Linux下比较常用的无线网络配置工具主要有Linux Wireless Tools和wpa_supplicant。Linux Wireless Tools是一种比较老的无线网络配置工具。wpa_supplicant主要用来支持WPA和WPA2,而Linux Wireless Tools不提供支持。与运行于内核空间的驱动程序不同,这两个工具都是运行在用户空间的软件。
2.1 Linux无线工具(Linux Wireless Tools)
无线扩展(Wireless Extension)定义了一组驱动程序提供给应用程序的通用的API,使用基于该API的工具集可以实现对任意无线网卡的配置,并且可以在不重启驱动程序的情况下修改配置参数。无线工具集主要包括iwconfig、iwlist、iwspy、iwpriv和ifrename。iwconfig可以修改最基本的网络参数。iwlist可以扫描并列举频率、位速率和加密方式。iwspy可以获取一个节点的连接质量。iwpriv可以针对特定的无线网卡驱动程序进行操作。ifrename可以基于各种动态标准对接口命名。
2.2 wpa_supplicant
wpa_supplicant在使用时作为一个后台进程运行,用来控制无线连接,可以认为是一个服务进程。wpa_supplicant的设计目标是对所有的WPA功能使用与硬件、驱动程序和操作系统无关的C代码。其他的程序作为客户端进程与wpa_supplicant通信,向wpa_supplicant发送命令。wpa_supplicant源代码中提供了wpa_cli(一个文本界面的命令程序)和wpa_gui(一个图形界面的程序)作为客户端程序与wpa_supplicant通信。当wpa_supplicant作为后台进程运行时,就可以使用这两个工具来控制无线连接。
3 嵌入式Linux下Wi-Fi连接的实现
嵌入式Linux下实现Wi-Fi连接,主要包括以下几个步骤:
(1)移植相应无线网卡的驱动程序;
(2)移植Linux Wireless Tools和wpa_supplicant工具;
(3)使用Linux Wireless Tools和wpa_supplicant工具配置Wi-Fi连接。
本文使用的开发平台是有善之臂的Tiny210,使用的无线网络芯片是具有SDIO接口的Marvell8686,采用busybox构建了基本的根文件系统。
(1)加载无线网卡设备驱动程序
友善之臂提供了已经编译好的Marvell8686驱动程序模块,在其提供的跟文件系统的/lib/modules/3.0.8-FriendlyARM/目录下有已经编译好的Linux驱动程序模块,将该目录拷贝到自己构建的跟文件系统目录下。在此之前,确保开发板烧写的Linux内核版本为3.0.8,以保证驱动程序模块版本与内核版本一致。在/etc/init.d/rcS启动脚本中添加如下命令:
modprobe libertas_sdio 2>/dev/null
以上命令的作用是在系统启动时,加载libertas_sdio模块。使用该命令在加载内核模块时不需要指明模块的路径,它会自动从/lib/modules目录下寻找合适的驱动加载。
对于其他的无线网卡驱动程序,加载的方法是类似的,也可以先编译出内核模块,用insmod命令加载。
(2)移植Linux Wireless Tools工具
下载Linux Wireless Tools并解压,修改Makefile文件,将gcc、ar、ranlib分别修改为arm-linux-gcc、arm-linux-ar、arm-linux-ranlib。使用make命令编译,编译完成后,将libiw.so.29拷贝到根文件系统 lib目录下,将编译生成的iwevent、ifrename、iwconfig、iwlist、iwpriv、iwspy拷贝到根文件系统的/bin目录下。
(3)移植wpa_supplicant
wpa_supplicant需使用OpenSSL库。OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
首先下载wpa_supplicant-0.7.3和openssl-0.9.8e,解压源码包,将wpa_supplicant中的openssl补丁拷贝到openssl源码目录下。
(www.fabiaoba.com),是一个专门从事期刊推广期刊发表、投稿辅导、发表期刊的网站。
本站提供如何投稿辅导、发表期刊,寻求论文刊登合作,快速投稿辅导,投稿辅导格式指导等解决方案:省级论文刊登/国家级论文刊登/
CSSCI核心/医学投稿辅导/职称投稿辅导。
投稿邮箱:fabiaoba365@126.com
在线咨询:
275774677、
1003180928
在线咨询:
610071587、
1003160816
联系电话:13775259981