嵌入式Linux下Wi-Fi接入技术研究

上传人:I*** 文档编号:227138371 上传时间:2021-12-19 格式:DOCX 页数:15 大小:31.68KB
返回 下载 相关 举报
嵌入式Linux下Wi-Fi接入技术研究_第1页
第1页 / 共15页
嵌入式Linux下Wi-Fi接入技术研究_第2页
第2页 / 共15页
嵌入式Linux下Wi-Fi接入技术研究_第3页
第3页 / 共15页
嵌入式Linux下Wi-Fi接入技术研究_第4页
第4页 / 共15页
嵌入式Linux下Wi-Fi接入技术研究_第5页
第5页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《嵌入式Linux下Wi-Fi接入技术研究》由会员分享,可在线阅读,更多相关《嵌入式Linux下Wi-Fi接入技术研究(15页珍藏版)》请在金锄头文库上搜索。

1、 嵌入式Linux下WiFi接入技术研究 范延滨李小康摘 要:讨论了在嵌入式Linux下实现Wi-Fi接入的方法。在分析嵌入式Linux下无线网络驱动程序架构和无线网络的配置工具Linux Wireless Tools和wpa_supplicant的基础上,结合Tiny210开发板平台,通过实例介绍了在嵌入式Linux平台上连接基于WPA/WPA2加密技术的Wi-Fi连接点的原理和方法。关键词:嵌入式Linux;Wi-Fi;wap_supplicant;无线网络:TP316.2 文献标志码:A :2095-1302(2014)10-00-030 引 言Wi-Fi也称为WLAN(wireless

2、 local-area network,无线局域网),是有线LAN的补充。Wi-Fi实际上是一个无线网络通信技术的品牌,由Wi-Fi联盟持有,目的是改进基于IEEE 802.11标准的无线网路产品之间的互通性。随着Wi-Fi技术的发展,产生了许多协议标准:IEEE 802.11.a WLAN标准使用5 GHz ISM频段,支持最高54 Mb/s的速率;802.11b和802.11g标准使用2.4 GHz频段,分别支持11 Mb/s和54 Mb/s的速率。作为一种比较成熟的无线通信技术,Wi-Fi在嵌入式设备中得到了广泛的应用,尤其是在嵌入式Linux环境中。本文探讨了在嵌入式Linux环境下W

3、i-Fi技术的应用,首先介绍了Wi-Fi设备驱动程序的相关内容,然后介绍了一些嵌入式Linux下无线网络配置工具及其特点,最后分析了嵌入式Linux环境下通过Wi-Fi接入网络的方法。1 Linux下Wi-Fi设备驱动程序目前,Linux无线网络驱动程序的架构如图1所示:图 1 Linux无线网络驱动程序架构由图1可知,Linux无线驱动程序主要包括以下4个部分:用户空间、cfg80211无线网络配置API、mac80211驱动程序和非mac80211驱动程序,这几个部分组成了一种层次结构,共同完成无线网络的接入和配置。最底层是设备驱动程序层,包括mac80211和非mac80211两种驱动程

4、序。mac80211是一种标准的驱动程序框架,推荐未来的无线设备驱动程序采用此框架来编写。mac80211驱动程序为上层提供了两种不同的接口:Wext接口(Wireless Extensions接口,Linux内核中为无线网络提供支持的接口,是一种比较老的接口)和cfg80211 ops接口。其中Wext接口为基于Wext接口的应用程序提供支持,而cfg80211 ops接口为上层cfg80211提供支持。而非mac80211驱动程序是比较老的驱动程序,仅对Wext接口提供支持。cfg80211下层使用mac80211驱动程序的接口,为上层的应用程序提供标准的无线设备配置接口。nl80211是

5、采用cfg80211接口的应用程序库,有多种基于该应用程序库的无线网络配置程序,例如iw、crda、hostapd和wpa_supplicant(当使用-Dnl80211选项时) 。一个WNIC(Wireless Network Interface Controller,无线网络接口控制器)可以工作在以下几种模式下:基站模式(STA)。任何无线设备驱动程序都可以在该模式下工作,这种模式可以认为是默认模式。在该模式下工作的网卡需要连接到一个在AP模式下工作的网卡。这种模式在Wireless Extensions配置工具下被成为managed。接入点模式(AP)。在接入点模式下工作的网卡又被称为主

6、设备。它通过管理和维护接入它的STA的列表来管理整个无线网络。一个无线网络以AP的BSSID(Basic Service Set ID)命名。监听模式(MON)。这是一个被动模式,工作在该模式下的无线网卡只接收数据包,不会发送数据包。使用mac80211,一个无线网卡在正常工作时也可以以监听模式工作,并且可以发送数据包。点对点模式(Ad-Hoc)。也被成为IBSS(Independent Basic Service Set)模式,用来在没有AP的情况下创建无线网络。在该模式下,网络中的每个节点独立维护网络。无线分布式系统模式(WDS)。该模式用来实现多个AP之间的连接。Mesh模式。该模式允许

7、多个设备之间通过建立动态路由来通信。以上模式中,最为常用的是前两种模式。我们通常使用的无线路由器其实就工作在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-E

8、nterprise版本。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。Lin

9、ux Wireless Tools是一种比较老的无线网络配置工具。wpa_supplicant主要用来支持WPA和WPA2,而Linux Wireless Tools不提供支持。与运行于内核空间的驱动程序不同,这两个工具都是运行在用户空间的软件。2.1 Linux无线工具(Linux Wireless Tools)无线扩展(Wireless Extension)定义了一组驱动程序提供给应用程序的通用的API,使用基于该API的工具集可以实现对任意无线网卡的配置,并且可以在不重启驱动程序的情况下修改配置参数。无线工具集主要包括iwconfig、iwlist、iwspy、iwpriv和ifrena

10、me。iwconfig可以修改最基本的网络参数。iwlist可以扫描并列举频率、位速率和加密方式。iwspy可以获取一个节点的连接质量。iwpriv可以针对特定的无线网卡驱动程序进行操作。ifrename可以基于各种动态标准对接口命名。2.2 wpa_supplicantwpa_supplicant在使用时作为一个后台进程运行,用来控制无线连接,可以认为是一个服务进程。wpa_supplicant的设计目标是对所有的WPA功能使用与硬件、驱动程序和操作系统无关的C代码。其他的程序作为客户端进程与wpa_supplicant通信,向wpa_supplicant发送命令。wpa_supplican

11、t源代码中提供了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

12、,使用的无线网络芯片是具有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以上命令的作用

13、是在系统启动时,加载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目录

14、下,将编译生成的iwevent、ifrename、iwconfig、iwlist、iwpriv、iwspy拷贝到根文件系统的/bin目录下。(3)移植wpa_supplicantwpa_supplicant需使用OpenSSL库。OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。首先下载wpa_supplicant-0.7.3和openssl-0.9.8e,解压源码包,将wpa_supplicant中的openssl补丁拷贝到openssl源码目录下。cp wpa_supplicant-0.7

15、.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命

16、令,可以在/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目录下。 (4)搜索和连接无线网络要搜索无线网络,最简单的是使用Linux Wire

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 调研报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号