摘 要:讨论了在嵌入式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-03 0 引 言 Wi-Fi也称为WLAN(wireless 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环境下Wi-Fi技术的应用,首先介绍了Wi-Fi设备驱动程序的相关内容,然后介绍了一些嵌入式Linux下无线网络配置工具及其特点,最后分析了嵌入式Linux环境下通过Wi-Fi接入网络的方法。 1 Linux下Wi-Fi设备驱动程序 目前,Linux无线网络驱动程序的架构如图1所示: 图 1 Linux无线网络驱动程序架构 由图1可知,Linux无线驱动程序主要包括以下4个部分:用户空间、cfg80211无线网络配置API、mac80211驱动程序和非mac80211驱动程序,这几个部分组成了一种层次结构,共同完成无线网络的接入和配置。 最底层是设备驱动程序层,包括mac80211和非mac80211两种驱动程序。mac80211是一种标准的驱动程序框架,推荐未来的无线设备驱动程序采用此框架来编写。mac80211驱动程序为上层提供了两种不同的接口:Wext接口(Wireless Extensions接口,Linux内核中为无线网络提供支持的接口,是一种比较老的接口)和cfg80211 ops接口。其中Wext接口为基于Wext接口的应用程序提供支持,而cfg80211 ops接口为上层cfg80211提供支持。而非mac80211驱动程序是比较老的驱动程序,仅对Wext接口提供支持。 cfg80211下层使用mac80211驱动程序的接口,为上层的应用程序提供标准的无线设备配置接口。nl80211是采用cfg80211接口的应用程序库,有多种基于该应用程序库的无线网络配置程序,例如iw、crda、hostapd和wpa_supplicant(当使用-Dnl80211选项时) 。 一个WNIC(Wireless Network Interface Controller,无线网络接口控制器)可以工作在以下几种模式下: 基站模式(STA)。任何无线设备驱动程序都可以在该模式下工作,这种模式可以认为是默认模式。在该模式下工作的网卡需要连接到一个在AP模式下工作的网卡。这种模式在Wireless Extensions配置工具下被成为managed。 接入点模式(AP)。在接入点模式下工作的网卡又被称为主设备。它通过管理和维护接入它的STA的列表来管理整个无线网络。一个无线网络以AP的BSSID(Basic Service Set ID)命名。 监听模式(MON)。这是一个被动模式,工作在该模式下的无线网卡只接收数据包,不会发送数据包。使用mac80211,一个无线网卡在正常工作时也可以以监听模式工作,并且可以发送数据包。 点对点模式(Ad-Hoc)。也被成为IBSS(Independent Basic Service Set)模式,用来在没有AP的情况下创建无线网络。在该模式下,网络中的每个节点独立维护网络。 无线分布式系统模式(WDS)。该模式用来实现多个AP之间的连接。 Mesh模式。该模式允许多个设备之间通过建立动态路由来通信。 |