当前位置: > 论文中心 > 计算机论文 >

嵌入式Linux下Wi—Fi接入技术研究(2)

时间:2014-10-31 16:30 点击:
以上模式中,最为常用的是前两种模式。我们通常使用的无线路由器其实就工作在AP模式下,我们可以通过使用手机或者笔记本电脑连接到路由器,手机和笔记本电脑的无线路由器就工作在STA模式下。 Wi-Fi网络的加密方式主

  以上模式中,最为常用的是前两种模式。我们通常使用的无线路由器其实就工作在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源码目录下。

  cp wpa_supplicant-0.7.3/patches/openssl-0.9.8e-tls-extensions.patch openssl-0.9.8e/

  建立目录/usr/local/ssl,以保存编译好的openssl库。

  cd openssl-0.9.8e,进入源码目录,修改Makefile文件,修改如下变量:CC= arm-linux-gnu-gcc ;AR= arm-linux-gnu-ar $(ARFLAGS) r;RANLIB= arm-linux-gnu-ranlib;INSTALLTOP=/usr/local/ssl;OPENSSLDIR=/usr/local/ssl。执行make,make install命令,可以在/usr/local/ssl目录下生成openssl库文件,这些库文件是静态库文件。

  编译wpa_supplicant方法如下:将源码目录下的defconfig文件重命名为.config文件。修改.config文件:CC= arm-linux-gnu-gcc -L/usr/local/ssl/lib/(连接静态库);CFLAGS += -I/usr/local/ssl/include/;LIBS += -L/usr/local/ssl/lib/。执行make命令编译,即可在源码目录下生成可以在开发板上运行的wpa_supplicant程序,包括wpa_cli、wpa_passphrase、bin/wpa_supplicant等,将这些程序拷贝到开发板的/bin目录下。

   论文榜(www.zglwb.com),是一个专门从事期刊推广、投稿辅导的网站。
本站提供如何投稿辅导,寻求投稿辅导代理,快速投稿辅导,投稿辅导格式指导等解决方案:省级投稿辅导/国家级投稿辅导/核心期刊投稿辅导//职称投稿辅导。


栏目列表
联系方式
推荐内容
 
QQ在线咨询
投稿辅导热线:
189-6119-6312
微信号咨询:
18961196312